Gesucht: Docker Profi/Experte - Entwickler (zusätzlich optional HashiCorp Vault) -- 3
Budget €30-250 EUR
Job Description:
Gesucht wird ein Docker Profi/Experte welcher Dockerfiles und Docker-Compose Files schreiben und weiteres, wie HashiCorp Vault, einrichten kann.
Kenntnisse: Docker, Vault, Linux, Nginx Proxy Manager (im folgenden nur noch Nginx)
Benötigt wird eine "Zusammenstellung" für den Betrieb von Shopware 6 mittels Docker Compose (.yml).
Mir ist bekannt, dass es fertige Lösungen gibt, diese entsprechen aber aus folgenden Gründen nicht meinen Vorstellungen:
- Webserver (Nginx), PHP7 etc. ist alles in einem Image
- apt-get update und weitere Paket-Installationen auch im Image enthalten
- Beim Ausführen mittels "docker-compose up" würde man jeweils 2x den Webserver, PHP etc. starten (wenn sich die .yml-Dateien jeweils in versch. Unterordnern befinden).
Was schwebt mir vor?
Für jeden Dienst (Nginx, PHP7, MariaDB, Shopware6) ein eigenes Image, somit je einen eigenständigen Container.
Fertige Images für Nginx, PHP7 und MariaDB sind dafür in Ordnung und müssen nicht neu erstellt werden.
Falls Abhängigkeiten für SW6 in einem der Images benötigt werden, z.B. für PHP7, dannn auch hierfür - siehe weiter unten - ein Multistage-Build File.
Was habe ich vor?
Aktuell (für 2022) benötige ich zwei Shopware 6 Installationen (getrennt voneinander, Produktivsysteme).
Das Docker-Compose File muss so ausgebaut sein, dass es sich mit einem - auf demselben Server (mittels Docker) laufenden - Nginx, PHP7 und MariaDB verbinden lässt, so dass es möglich ist 2 Shopware6-Installationen mit nur 1x Nginx, 1x PHP7 und 1x MariaDB laufen zu lassen.
Weiteres:
1. Für jede SW6-Installation würde ich in MariaDB gerne einen eigenen Benutzer haben, welcher auch nur auf die für die entsprechende SW6-Installation entsprechende DB zugreifen darf.
Hintergrund dafür:
Sollte eine SW6-Installation kompromittiert werden, so ist nur eine der DB's in Gefahr.
2. HashiCorp Vault soll als Container eingerichtet werden um für MariaDB die SW6-Zugangsdaten zu verwalten.
Nun, was soll gemacht werden?
Zum einen benötige ich ein Multistage-Build, basierend auf z.B. Alpine, mit welchem es mir möglich ist auch künftige Shopware6-Versionen selbst zu einem Image zusammenzuführen.
Dazu soll immer das aktuell auf Github hinterlegte Paket ([login to view URL]) dienen.
Den Build-Prozess muss ich also, bei einer neueren SW6-Version, immer manuell anstoßen können.
Für jede Installation passe ich dann die Variablen (Zugangsdaten für MariaDB) für SW6 und die DB an.
Jede SW-Installation kann in einem Unterordner liegen od. man benennt die .yaml-/.yml-Datei entsprechend um.
Der Nginx soll die Auslieferung der beiden SW6-Installationen übernehmen, so dass es für die Container z.B. kein 8080:80, und 8081:80 geben soll.
-In jedem Container soll ein User den Prozess ausführen, also muss dieser autom. mit der UID des Docker-Benutzers (auf dem Host) übereinstimmen.
Hier erwarte ich, dass es auf jedem Server lauffähig ist ohne die UID des Host-Benutzers zu kennen (weil ich weiß, dass dies möglich ist ;-) ) und diese also nicht eingetragen werden muss!
-Jeder Container muss zudem persistente Daten haben.
-Die Konfiguration für Nginx muss auch für mich leicht erweiterbar sein (durch persistente Daten und entsprechneden *.conf-Dateien sollte das kein Problem sein).
-Die Container (Nginx, PHP7, MariaDB) müssen durch neuere Images leicht ersetzbar sein (was ja durch das YAML Compose-File möglich ist).
Das Compose-File muss enthalten:
-Pfad zu persistenden Daten (je Container-Dienst)
-Non-root-User für jeden Container-Dienst wo möglich (SW6, MariaDB?)
Wichtig:
Vor Bezahlung muss ich sehen, dass wirklich jeder Dienst in einem eigenen Container läuft und das weitere SW-Installationen, auf demselben Server, möglich sind.
Diesen Beweis können Sie gerne per Webkonfernez (z.B. mittels der kostenlosen 40-minütigen Zoom-Konferenz) antreten.
Sie werden ja einen eigenen Test-Server betreiben. ;-)
Weitere Zusammenarbeit wünschenswert!
Only german people because of better communication from my side.