Wie führe ich während der Bereitstellung einen Einzelausführungsbefehl in Docker Compose aus?

Linda Hamilton
Freigeben: 2024-11-08 18:57:02
Original
470 Leute haben es durchsucht

How to Execute a Single-Execution Command in Docker Compose During Deployment?

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
Nach dem Login kopieren

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 bzw.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage