


Wie erstelle ich eine Mehrkontineranwendung mit Docker Compose?
Mar 11, 2025 pm 04:32 PMSo erstellen Sie eine Multi-Container-Anwendung mit Docker Compose? Diese Datei gibt die für jeden Dienst, die zu enthüllten Bilder, die zum Mount angelegten Ports an, und die Networking -Konfiguration. Lassen Sie uns ein einfaches Beispiel einer Webanwendung mit einer separaten Datenbank veranschaulichen:
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:
- vereinfachte Bereitstellung: Ein einzelner
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 Dateidocker-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 ContainerdB
mit dem Hostnamedb
zugreifen. Dies erfolgt typischerweise über Umgebungsvariablen oder Konfigurationsdateien im Anwendungscode. Dieser Ansatz eignet sich für einfache Konfigurationen. Ein Volumen kann in der Dateidocker-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.
- Nachrichtenwarteschlangen (z. B. Rabbitmq, Kafka): Für asynchrone Kommunikation sind Nachrichtenwarteschlangen eine robuste L?sung. Sie würden einen Nachrichtenwarteschlangendienst in Ihren
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:
- überprüfen Sie die
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 SieDocker-Compose restart & lt; service_name & gt;
oderdocker-compose up--build -d
. -D . - Isolieren Sie Probleme: Versuchen Sie, Container einzeln auszuführen, um die Quelle des Problems zu isolieren. Dies hilft zu bestimmen, ob das Problem für einen Container oder ein Ergebnis von Interaktionen zwischen den Container spezifisch ist. Docker komponieren. Denken Sie daran, den offiziellen Docker Compose -Dokumentation zu konsultieren, um fortgeschrittene Fehlerbehebungstechniken zu erhalten.
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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

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

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

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 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Der Hauptunterschied zwischen Docker und traditioneller Virtualisierung liegt in der Verarbeitung und Ressourcenverwendung der Betriebssystemschicht. 1. Docker -Container teilen den Host OS -Kernel, der leichter, ein schnelleres Start und mehr Ressourceneffizienz ist. 2. Jede Instanz eines herk?mmlichen VM führt ein volles Betriebssystem aus und belegt mehr Platz und Ressourcen. 3. Der Beh?lter beginnt normalerweise in wenigen Sekunden, und die VM kann einige Minuten dauern. 4. Der Container h?ngt vom Namespace und CGroups ab, um Isolation zu erzielen, w?hrend die VM durch Hypervisor -Simulationshardware eine st?rkere Isolierung erh?lt. 5. Docker hat eine bessere Portabilit?t und sorgt dafür, dass Anwendungen in verschiedenen Umgebungen konstant ausgeführt werden, die für die Bereitstellung von Microservices und Cloud -Umgebungen geeignet sind.

Um das Docker -Volumes zu sichern und wiederherzustellen, müssen Sie tempor?re Container in Verbindung mit TAR -Werkzeugen verwenden. 1. Führen Sie w?hrend der Sicherung einen tempor?ren Container aus, der das Zielvolumen montiert, mit dem TAR -Befehl, um die Daten zu verpacken und auf den Host zu speichern. 2. Kopieren Sie w?hrend der Wiederherstellung die Sicherungsdatei in den Container, der das Volumen montiert, und dekomprimieren Sie sie, achten Sie auf die Pfadanpassung und das m?gliche überschreiben von Daten. 3.. Mehrere Volumina k?nnen so geschrieben werden, dass sie automatisch durch jedes Volumen fahren. 4. Es wird empfohlen, zu operieren, wenn der Container gestoppt wird, um die Datenkonsistenz zu gew?hrleisten, und den Wiederherstellungsprozess regelm??ig zu testen, um die Sicherungsgültigkeit zu überprüfen.

Um Docker -Containerports aufzudecken, muss der Host über Port -Mapping auf den Containerdienst zugreifen. 1. Verwenden Sie den Befehl dockkerrun-p [Host_port]: [Container_port], um den Container wie Dockerrun-P8080: 3000-My-Web-App auszuführen; 2. Verwenden Sie die Expose -Anweisung, um den Zweck in der Dockerfile wie Expose3000 zu markieren, der Port wird jedoch nicht automatisch ver?ffentlicht. 3. Konfigurieren Sie das Portssegment der YML-Datei in DockerComponpose, wie z. B. Ports:-"8080: 3000"; 4. Verwenden Sie Dockerps, um zu überprüfen, ob die Portkarte nach dem Ausführen generiert wird.

Um die Metadaten des Docker -Bildes anzuzeigen, wird der Befehl dockerInspect haupts?chlich verwendet. 1. Führen Sie DockerInspekte aus, um vollst?ndige Metadateninformationen zu erhalten, einschlie?lich ID, Architektur, Ebenenzusammenfassung und Konfigurationsdetails; 2. Verwenden Sie GO-Vorlagen, um die Ausgabe wie DockerInspect-Format = '{{. Os}}/{{{. Architecture}}' zu formatieren, um nur das Betriebssystem und die Architektur anzuzeigen; 3.. Verwenden Sie DockerHistory, um jede Informationsschicht w?hrend des Bildkonstruktionsprozesses anzuzeigen, um die Bildstruktur zu optimieren. 4. Verwenden Sie Skopeo Tool SkopeoinspectDocker: ///: Um das komplette Bild zu ziehen.

Docker hat drei Hauptvolumentypen: Namenvolumes, Bindmounts und TMPFSmounts. Namensvolumes werden von Docker verwaltet und eignen sich für Szenarien, in denen anhaltende Daten erforderlich sind, z. B. Datenbanken. Bindmounts karten hostspezifischen Pfade zu Containern, die für die Freigabe von Code oder Konfiguration w?hrend der Entwicklung geeignet sind. TMPFSMounts speichert Daten im Speicher, die für tempor?re oder sensible Informationen geeignet sind. W?hlen Sie bei der Verwendung den entsprechenden Typ gem?? Ihren Anforderungen aus, um die Containerdatenverwaltung zu optimieren.

Verwenden Sie die Portzuordnung, um vom Host vom Host über Dienste in Docker -Container zuzugreifen. Die spezifischen Schritte sind: 1. Verwenden Sie -P, um Host_port: Container_port anzugeben, wenn Sie den Container starten, z. B. Dockerrun-D-P8080: 80Nginx; 2. Mehrere Ports k?nnen über mehrere -P -Parameter oder DockerCompon -Dateien konfiguriert werden. 3. Die IP -Adressbindung kann begrenzt sein, wie -p192.168.1.100: 8080: 80; V.

Whenchoosingbetiennamenvolumesandbindmountsindocker, Usenamedvolumesforcross-HostConsistenz, zuverl?ssige und docker-verwaltete Storage, insbesondere inproduktionsbedingte Umwelt

Die Verwendung von leichten Basisbildern, das Zusammenführen und Optimieren von Auslaufanweisungen und das Kopieren von nur erforderlichen Dateien sind der Schlüssel zur Reduzierung der Docker -Bildergr??e. 1. W?hlen Sie leichte Basisbilder wie Alpine, Distanz oder Kratzer aus, um unn?tige Systemkomponenten zu reduzieren. 2. Zusammenführen Sie mehrere Auslaufbefehle und reinigen Sie die Caches in der Zeit, z. B. das Kombinieren von APT-Getupdate mit Installationsbefehlen und l?schen/var/lib/apt/lists/*; 3.. Nicht wesentliche Dateien über .Dockerignore ausschlie?en, verwenden Sie mehrstufige Konstruktionen, um Kompilierungs- und Laufzeitabh?ngigkeiten zu trennen und nur die erforderliche Konfiguration und ausführbare Dateien in das endgültige Bild zu kopieren. Diese Methoden k?nnen die Spiegelgr??e effektiv reduzieren, die Konstruktion und den Einsatzeffizienz verbessern und die Sicherheit verringern
