Erstellen Sie zunächst einen docker-compose.yml
Datei:
<code class="yaml"> Version: & quot; 3.9 & quot; Dienste: Web: Build: Kontext: ./Web Dockerfile: Dockerfile -Ports: - & quot; 8080: 80 & quot; Abhängig von Folgendes: - DB DB: Bild: Postgres: 13 Ports: - & quot; 5432: 5432 & quot; Umgebung: - postgres_user = myuser - postgres_password = mypassword </code>
Damit definiert zwei Dienste: web
und db
. Der Web
-Dienst wird aus einer Dockerfile erstellt, die sich im Verzeichnis ./ Web
befindet. Es enthüllt Port 8080 auf dem Host -Computer und kartiert auf Port 80 im Container. Entscheidend ist abhängig_on: - db
stellt sicher, dass die Datenbank vor der Webanwendung startet. Der db
Dienst verwendet ein vorgefertigtes PostgreSQL-Bild und enthält Port 5432. Denken Sie daran, das Verzeichnis ./ Web
und ein dockerfile
innerhalb des IT (z. B. ein einfaches von nginx
für einen grundlegenden Webserver). docker-compose.yml
und ausführen:
<code class="bash"> docker-compose up -d--build </code>
Der -D
Flag wird den Containern im deaktivierten Modus (Hintergrund) ausgeführt. Das FLAG -bauen
erstellt das Bild Web
bei Bedarf. Sie können dann die Container anhalten und entfernen:
<code class="bash"> docker-compose down </code>
Dies bietet ein grundlegendes Framework. Komplexere Anwendungen können mehrere Dienste mit komplizierten Abhängigkeiten und Konfigurationen umfassen, die detailliertere Spezifikationen in der Datei docker-compose.yml
erfordern. Denken Sie daran, Umgebungsvariablen sicher zu verwalten und möglicherweise .env
Dateien oder Geheimnissemanagementlösungen für Produktionsumgebungen zu verwenden. Anwendungen:
docker-compose.yml
Die Datei der gesamten Anwendung definiert die Infrastruktur der Anwendung, wodurch Bereitstellung und Replikation unkompliziert werden. Dadurch müssen mehrere Docker -Befehle einzeln verwaltet werden. Dies beschleunigt Iteration und Debugging. Dies minimiert Diskrepanzen zwischen Umgebungen und reduziert die Bereitstellungsprobleme. Dies erleichtert die Integration in Orchestrierungstools wie Kubernetes später. Die Datei docker-compose.yml
dient als einzelne Quelle der Wahrheit. Setup? Container in diesem Netzwerk können mit ihren Dienstnamen miteinander kommunizieren. In unserem obigen Beispiel kann beispielsweise der code> web Container dB
mit dem Hostname db
zugreifen. Dies erfolgt typischerweise über Umgebungsvariablen oder Konfigurationsdateien im Anwendungscode. Dieser Ansatz eignet sich für einfache Konfigurationen. Ein Volumen kann in der Datei docker-compose.yml
definiert und in mehrere Container montiert werden. Dies ist ideal, um Konfigurationsdateien, Datenbanken oder andere anhaltende Daten zu teilen. Zum Beispiel: <code class="yaml"> Version: & quot; 3.9 & quot; services: web: # ... volumes: - shared_data:/app/data db: # ... volumes: - shared_data:/var/lib/postgresql/data volumes: shared_data:</code>
This creates a named volume shared_data
accessible to both web
and db
Services.
docer-compose.yml
einbeziehen und Ihre Anwendungen so konfigurieren, dass sie über diese kommuniziert werden. Die Auswahl der Methode hängt von den spezifischen Anforderungen Ihrer Anwendung ab. Für einfache Konfigurationen können Umgebungsvariablen oder direkte Netzwerkkommunikation ausreichen. Für komplexere Szenarien, die anhaltende Daten oder asynchrone Kommunikation beinhalten, sind Volumina und Nachrichtenwarteschlangen angemessener. Mit Docker Compose beinhaltet häufig systematisch die Überprüfung verschiedener Aspekte:
docker-compose.yml
Datei: Stellen Sie sicher, dass die Konfiguration korrekt ist, einschließlich Portzuordnungen, Abhängigkeiten, Volumen und Umgebungsvariablen. Ein einzelnes Tippfehler kann zu erheblichen Problemen führen. Protokolle geben häufig die Grundursache für Fehler auf. Identifizieren Sie alle Container, die mit einem Fehlercode nicht ausgeführt oder beendet sind. richtig funktionieren. Die Erschöpfung von Ressourcen kann zu unerwartetem Verhalten führen. Verwenden Sie Docker-Compose restart & lt; service_name & gt;
oder docker-compose up--build -d
. -D . Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Mehrkontineranwendung mit Docker Compose?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!