Heim > Artikel > Backend-Entwicklung > Wie führe ich während der Bereitstellung einen Einzelausführungsbefehl in Docker Compose aus?
Einzelausführungsbefehle in Docker Compose ausführen
Um einen Go-Webserver mithilfe von Docker Compose effizient bereitzustellen, stoßen Sie möglicherweise auf eine Hürde wenn versucht wird, einen Befehl während der Bereitstellung nur einmal auszuführen. Dieser spezielle Befehl, ./my-project -setup, muss erst ausgeführt werden, nachdem Ihr Projekt kompiliert wurde, um wichtige Informationen zu Ihrer Datenbank hinzuzufügen.
Docker Compose bietet keine direkte Lösung für diesen Bedarf, Sie können dies jedoch umgehen, indem Sie ein Einstiegspunktskript in Ihren Container einführen. In diesem Skript können Sie eine Prüfung implementieren, um zu überprüfen, ob die Datenbank initialisiert wurde. Wenn nicht, fahren Sie mit den erforderlichen Schritten fort.
Es ist wichtig zu beachten, dass die Reihenfolge, in der Container in Docker Compose gestartet werden, folgende ist nicht konsistent. Dies bedeutet, dass der Anwendungscontainer möglicherweise vor dem Datenbankcontainer gestartet wird, was möglicherweise zu Datenbankungenauigkeiten führt. Das Einstiegspunktskript sollte diese Möglichkeit berücksichtigen und entsprechend anpassen.
Sie können sich beispielsweise vom Ansatz des offiziellen WordPress-Images inspirieren lassen. Das Image verwendet ein Einstiegspunktskript, das versucht, eine Verbindung zur Datenbank herzustellen und die erforderlichen Initialisierungsprozeduren basierend auf dem Verbindungsstatus durchführt: https://github.com/docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint.sh#L146-L171.
Darüber hinaus können Sie Ihre Docker Compose-Konfiguration vereinfachen, indem Sie auf die Verwendung von verzichten ein „Nur-Daten-Container“ zur Volumenmontage. Seit Docker 1.9 unterstützt Docker die Volume-Verwaltung, einschließlich der Benennung von Volumes. Dadurch können Sie den Nur-Daten-Container ausschließen und die Mongo-Dienstkonfiguration entsprechend ändern:
mongo: image: mongo:latest volumes: - mongodata:/data/db ports: - "28001:27017" command: --smallfiles --rest --auth
Diese Änderung erstellt oder verwendet ein Volume mit dem Namen „mongodata“ wieder. Um Volumes aufzulisten oder zu entfernen, verwenden Sie die Befehle docker volume ls und docker volume rm
Das obige ist der detaillierte Inhalt vonWie führe ich während der Bereitstellung einen Einzelausführungsbefehl in Docker Compose aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!