Einen Befehl einmal in Docker Compose ausführen
Beim Arbeiten mit einer Docker-Compose-Datei kann es erforderlich sein, einen bestimmten Befehl nur einmal auszuführen, häufig während der Ersteinrichtung einer Bewerbung. Diese Anforderung entsteht, wenn die Anwendung von einer Datenbank abhängt, die initialisiert werden muss, und die Initialisierung nur beim ersten Start erfolgen soll.
In diesem Fall beabsichtigt der Benutzer, den Befehl ./my-project - auszuführen. Setup, um die erforderlichen Informationen zur Datenbank hinzuzufügen. Um dies zu erreichen, wird empfohlen, ein Einstiegspunktskript in den Container zu integrieren.
Einstiegspunktskript
Ein Einstiegspunktskript bietet einen Mechanismus zum Ausführen benutzerdefinierter Befehle vor dem Start der Hauptanwendung. Innerhalb des Entrypoint-Skripts ist es möglich zu überprüfen, ob die Datenbank bereits initialisiert wurde. Wenn eine Initialisierung erforderlich ist, kann das Skript die Einrichtungsschritte ausführen.
Dieser Ansatz stellt sicher, dass der Initialisierungsbefehl nur einmal ausgeführt wird, selbst wenn der Container neu gestartet oder der Dienst hochskaliert wird.
Datei „docker-compose.yml“
Um diese Lösung zu implementieren, ändern Sie die Datei „docker-compose.yml“, um das folgende Skript in den Dienst „my_project“ aufzunehmen Definition:
services: my_project: build: . volumes: - data:/app ports: - "6060:8080" depends_on: - mongo entrypoint: ["/app/entrypoint.sh"]
In diesem Fall sind Daten das Volume, das den Anwendungscode enthält, und enterpoint.sh ist das Entrypoint-Skript.
entrypoint.sh-Skript
Erstellen ein Skript „entrypoint.sh“ mit folgendem Inhalt:
#!/bin/bash # Check if database is initialized. mongo mongo://admin:admin@mongo:27017/my_project --eval "db.user.findOne()" > /dev/null 2>&1 # If the database is not initialized, perform setup. if [ $? -ne 0 ]; then /app/my_project -setup fi # Start the application. /app/my_project
In diesem Skript ist „mongo“ der Hostname des Mongo-Containers und my_project ist der Datenbankname.
Dieses Skript prüft, ob ein bestimmtes Dokument in der Benutzersammlung der Datenbank vorhanden ist. Wenn das Dokument nicht vorhanden ist, bedeutet dies, dass die Datenbank nicht initialisiert wurde und der Setup-Befehl ausgeführt wird. Andernfalls startet die Anwendung normal.
Entfernen des „Nur-Daten-Containers“
Beachten Sie, dass der Benutzer ursprünglich einen „Nur-Daten-Container“ verwendet hat, um das Datenbank-Volume bereitzustellen. Mit Docker 1.9 und höher, das benannte Volumes unterstützt, ist dieser Ansatz jedoch nicht mehr erforderlich. Daher kann der Mongodata-Container aus der Datei docker-compose.yml entfernt und der Mongo-Dienst so geändert werden, dass er das benannte Volume direkt verwendet.
Das obige ist der detaillierte Inhalt vonWie führe ich einen Befehl in Docker Compose nur einmal aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

WHENTETINGGOCODEWITHITHIFTFUNKTIONEN, UseExplicitsetupFunctionSesparatetestFilestoavoidDependencyonInitfunctionsideffecte.1) UsexplicitsetupFunctionStocontrolGlobalvariableInitialization.2) CreateSeparatetestBilestobypaNitInitInitialization und

Go'serrorhandlingreturnserrorsasvalues,unlikeJavaandPythonwhichuseexceptions.1)Go'smethodensuresexpliciterrorhandling,promotingrobustcodebutincreasingverbosity.2)JavaandPython'sexceptionsallowforcleanercodebutcanleadtooverlookederrorsifnotmanagedcare

AneffectiveInterfaceingoisminimal, klar und PromotesLoosecoUPLing.1) MinimizetHeinTeInflexibilityAndaseaseFIMPlementation.2) Verwenden SieInterfacesForAbRactractionTosWapImplementationswithoutchangingCallingCode.3) DesignOntierablieger-verwendiginter-Per-ChodestomockDomockDepep

Zentraler Fehlerbehebung kann die Lesbarkeit und Wartbarkeit von Code in GO -Sprache verbessern. Zu den Implementierungsmethoden und -vorteilen gehören: 1. Separate Fehlerbehandlungslogik aus der Geschäftslogik und vereinfachen Code. 2. Gewährleisten Sie die Konsistenz der Fehlerbehandlung durch zentraler Handhabung. 3. Verwenden Sie die Aufhebung und erholen Sie sich, um Panik zu erfassen und zu verarbeiten, um die Robustheit der Programme zu verbessern.

INGO, AlternativestoinitFunktionenincludecustonializationFunctions undsingletons.1) CustomInitializationFunctionsGlowexplicitControloverwhenInitializationOcccurs, NützfordelayedorConditionalSetups.2) SingletonsensOneOnitializationConconcurent

GoHandlesInterfacesAndTypeassertionSeffective, EnhancingCodeFlexibilityandrobustness.1) TypenSerionsallowruntimetypeCking, AsseenWithThapeInterfaceandCircletype.2) TypeSwitcheshandlemultipletypesiepy, nützlich, nützlich, nützlich

GO -Sprachfehlerhandhabung wird flexibler und durch Fehler lesbarer. IS und Fehler.as Funktionen. 1.Erors.IS wird verwendet, um zu prüfen, ob der Fehler dem angegebenen Fehler entspricht und für die Verarbeitung der Fehlerkette geeignet ist. 2.Errors.as können nicht nur den Fehlertyp überprüfen, sondern auch den Fehler in einen bestimmten Typ konvertieren, der zum Extrahieren von Fehlerinformationen geeignet ist. Die Verwendung dieser Funktionen kann die Fehlerbehandlungslogik der Fehlerbehandlung vereinfachen, aber auf die korrekte Abgabe von Fehlerketten achten und eine übermäßige Abhängigkeit vermeiden, um die Komplexität der Code zu verhindern.

TomakegoapplicationsRunfasterandmorefficenty, UseProfilingTools, LeveragEconcurrency und Managemoryeffectiv.1) UsePPRofforCpuandMemoryProfilingToidentifyBottlenecks.2) NutzungsgoroutinesandchannelstoparallelizeTakesAmproveProveperance.3) Implementierung


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),
