Dieser Artikel stellt nichts im Zusammenhang mit der Clusterbereitstellung vor Versionsbeschränkungen
Struktur Einführung version # docker compose versionnetworks # Netzwerk, wird für interne Kommunikation im Docker-Container verwendetx-{name} # Vorlagenbenennungsregel beginnt mit x- für Wiederverwendungvolumes # Volume mountservices # Servicemodul, definiert intern Containerinformationen, seine internen Parameter entsprechen den Parametern von docker run Moduleinführung Offizielle Docker Compose-Dokumentation Version Wenn die Version von
Netzwerkmodus Verwenden Sie die gleichen Werte wie für Netzwerkmodus: "Brücke" Netzwerkmodus: "Host" Netzwerkmodus: "keine" Netzwerkmodus: "Dienst:[Dienstname]" Netzwerkmodus: "Container:[Containername/ID]" Netzwerke Legen Sie das Netzwerk für den Container fest, der von der aktuellen Datei Es existiert nicht notwendigerweise auf der gleichen Ebene wie die Version, sondern kann auch in anderen Modulen, wie etwa Diensten, existieren. Internes Netzwerk Leistungen: einige Dienste: Netzwerke: -irgendein-Netzwerk - anderes Netzwerk Öffentliches Netzwerk Version: "3" Netzwerke: Standardnetzwerk: Aliase (werden hinzugefügt) Netzwerkalias Version: "3.8" Leistungen: Webseite: Bild: „nginx:alpine“ Netzwerke: - neu Arbeitnehmer: Bild: „Mein-Arbeiter-Bild: Neuestes“ Netzwerke: - Vermächtnis db: Bild: MySQL Netzwerke: neu: Aliase: - Datenbank Vermächtnis: Aliase: -mysql Netzwerke: neu: Vermächtnis: IPv4_Adresse, IPv6_Adresse (wird hinzugefügt) Version: "3.8" Leistungen: App: Bild: nginx:alpine Netzwerke: app_net: IPv4-Adresse: 172.16.238.10 IPv6-Adresse: 2001:3984:3989::10 Netzwerke: app_net: ipam: Treiber: Standard Konfiguration: - Subnetz: "172.16.238.0/24" - Subnetz: "2001:3984:3989::/64" Dienstleistungen Der wichtigste Teil dient zur Konfiguration der einzelnen Dienste bauen Wird zum Erstellen von Images verwendet. Wenn sowohl die Felder „Build“ als auch „Image“ vorhanden sind, werden der von „Image“ angegebene Imagename und das Tag als Name und Tag des erstellten Images verwendet. Version: „3.8“ # Docker Compose-Versionsdienste: webapp: # Der durch docker-compose definierte Dienstname (Containername) dient hauptsächlich für die Parameter des Befehls docker-compose und stimmt möglicherweise nicht mit dem von docker ps build angezeigten Containernamen überein: # Verwenden Sie Dockerfile, um das Image zu erstellen context: ./dir Kontextpfad, der relative Pfad ist relativ zum Compose-Dateipfad dockerfile: Dockerfile-alternate # Geben Sie den Dockerfile-Dateinamen an args: # Geben Sie die Parameter der Umgebungsvariablen Dockerfile an buildno: 1 # Sowohl das Schreiben in Verzeichnisse als auch in Listen ist zulässig Kontext Sie können einen relativen Pfad oder die URL eines Git-Repositorys verwenden. bauen: Kontext: ./dir Docker-Datei Geben Sie den Dockerfile-Dateinamen an und der Kontext muss angegeben werden bauen: Kontext: . Dockerfile: Dockerfile-Alternative Argumente Das ARG Build-Nr. ARG gitcommithash RUN echo "Build-Nummer: $buildno" # Bash-ähnlicher Stil RUN echo "Basierend auf Commit: $gitcommithash" Sie können eine Liste oder eine Karte verwenden, um Argumente festzulegen bauen: Kontext: . Argumente: # Karte Build-Nr.: 1 gitcommithash:cdc3b19 bauen: Kontext: . args: # Liste -buildno=1 -gitcommithash=cdc3b19 Tipps cache_von Cache für den Build-Prozess angeben bauen: Kontext: . cache_von: - alpin:neueste -corp/web_app:3.14 Etiketten Entspricht der bauen: Kontext: . Beschriftungen: # Karte com.example.description: „Buchhaltungs-Webanwendung“ com.example.department: „Finanzen“ com.example.label-mit-leerem-Wert: "" bauen: Kontext: . Beschriftungen: # Liste - „com.example.description=Buchhaltungs-Webanwendung“ - „com.example.department=Finanzen“ - „com.example.label-mit-leerem-Wert“ Netzwerk Wie beim Befehl bauen: Kontext: . Netzwerk: Host # Host-Modus, die Netzwerklatenz ist am niedrigsten und die Leistung entspricht der des Host-Computers bauen: Kontext: . Netzwerk: custom_network_1 # Benutzerdefiniertes Netzwerk bauen: Kontext: . Netzwerk: keines # Kein Netzwerk shm_size Legen Sie die Größe des Verzeichnisses Das Verzeichnis bauen: Kontext: . shm_size: '2gb' # Verwenden Sie eine Zeichenfolge, um die Größe festzulegen bauen: Kontext: . shm_size: 10000000 # Bytegröße festlegen Befehl Entspricht dem Befehl: bundle exec thin -p 3000 # Shell-ähnlich Befehl: ["bundle", "exec", "thin", "-p", "3000"] # json-ähnlich Containername Entspricht Containername: mein Webcontainer hängt ab von Wird verwendet, um Abhängigkeiten zwischen Diensten auszudrücken Beim Version: "3.8" Leistungen: Webseite: bauen: . depends_on: # Starten Sie zuerst DB und Redis -db - Redis Redis: Bild: Redis db: Bild: postgres Tipps:
Geräte Eingebundene externe Geräte, dasselbe wie Geräte: – „/dev/ttyUSB0:/dev/ttyUSB0“ DNS Benutzerdefinierte DNS-Adresse dns: 8.8.8.8 # einzelner String-Wert DNS: # Liste - 8.8.8.8 - 9.9.9.9 DNS-Suche Anpassen des DNS-Suchdomänennamens dns_search: example.com # einzelner String-Wert DNS-Suche: - dc1.example.com - dc2.example.com Einstiegspunkt Überschreiben des Standardeinstiegspunkts Einstiegspunkt: /code/entrypoint.sh Dasselbe wie im Dockerfile Einstiegspunkt: ["php", "-d", "memory_limit=-1", "vendor/bin/phpunit"] Tipps: Umgebungsdatei Fügen Sie eine Umgebungsvariablendatei zu env_file: .env # einzelner Wert env_file: # Liste - ./common.env - ./apps/web.env – /opt/runtime_opts.env Tipps: # Rails/Rack-Umgebung festlegen # '#' ist ein Kommentar, # Leere Zeilen werden ignoriert RACK_ENV=Entwicklung # Das Format ist VAR=VAL Die Umgebungsvariablen in der .env-Datei können während des Build-Prozesses nicht explizit gelesen werden. Sie werden nur von der Datei docker-compose.yaml gelesen. Wenn Sie die Umgebungsvariablen während des Builds verwenden müssen, fügen Sie nach dem Build den Unterparameter args hinzu. Um mehrere .env-Dateien anzugeben, gibt es auf der offiziellen Website diesen Satz, der sehr kompliziert ist Beachten Sie, dass die Reihenfolge der Dateien in der Liste für die Bestimmung des Werts einer Variablen, die mehr als einmal vorkommt, von Bedeutung ist. Die wörtliche Übersetzung lautet Bedenken Sie, dass die Reihenfolge der Dateien in der Liste wichtig ist, um die Werte zu bestimmen, die mehrfach vorkommenden Variablen zugewiesen werden. Da die Umgebungsparameterdateien von oben nach unten verarbeitet werden, bedeutet dies, dass, wenn mehrere Parameterdateien dieselbe Umgebungsvariable enthalten, die letzte Vorrang hat. Umfeld Umgebungsvariablen hinzufügen Umgebung: # Karte RACK_ENV: Entwicklung ANZEIGEN: 'wahr' SESSION_SECRET: Umgebung: # Liste - RACK_ENV=Entwicklung - SHOW=true -SESSION_SECRET Tipps: Funktion getEnvInfo() Zeichenfolge { rackEnv := os.Getenv("RACK_ENV") fmt.Println(rackEnv) } Ausgabe: Entwicklung exponieren Ports freigeben, aber nur für die Kommunikation zwischen Diensten. Freigegeben wird der interne Port, ähnlich exponieren: - "3000" - "8000"
externe_links: - redis_1 - project_db_1:mysql - project_db_1:postgresql Tipps: extra_hosts Fügen Sie einen benutzerdefinierten Domänennamen hinzu, identisch mit zusätzliche_hosts: - "somehost:162.242.195.82" – „anderer Host:50.31.209.229“ Sie können auch in die Datei 162.242.195.82 irgendein Host 50.31.209.229 anderer Host Gesundheitscheck Entspricht Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://localhost"] Intervall: 1m30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 40 s Verwenden Sie Gesundheitscheck: deaktivieren: true Bild Geben Sie das Image an, das abgerufen oder verwendet werden soll. Sie können auch Bild: Redis #Standardbezeichnung aktuell Bild: Ubuntu:18.04 Bild: tutum/influxdb Bild: example-registry.com:4000/postgresql Bild: a4bc65fd init Führen Sie innerhalb des Containers ein Init-Programm aus, um Signale zum Starten des Prozesses weiterzuleiten. Version: "3.8" Leistungen: Webseite: Bild: alpin:latest init: wahr Tipps: Isolierung Gibt die Container-Isolationstechnologie an. Linux unterstützt nur Etiketten Entspricht der bauen: Kontext: . Beschriftungen: # Karte com.example.description: „Buchhaltungs-Webanwendung“ com.example.department: „Finanzen“ com.example.label-mit-leerem-Wert: "" bauen: Kontext: . Beschriftungen: # Liste - „com.example.description=Buchhaltungs-Webanwendung“ - „com.example.department=Finanzen“ - „com.example.label-mit-leerem-Wert“ Links Funktion der alten Version, nicht empfohlen Protokollierung Stellen Sie die täglichen Parameter für den aktuellen Dienst ein Protokollierung: Treiber: Syslog Optionen: Syslog-Adresse: "tcp://192.168.0.42:123" Treiber: "JSON-Datei" Treiber: "syslog" Treiber: „keine“ Tipps: Geben Sie die Protokolleinstellungen an, wie bei Treiber: "syslog" Optionen: Syslog-Adresse: "tcp://192.168.0.42:123" Der Standard-Protokolltreiber ist Optionen: max-size: "200k" # Maximaler Speicherplatz für eine einzelne Datei max-file: "10" # Maximale Anzahl an Dateien Tipps: Liste unterstützter Treiber
Tipps: Häfen Extern freiliegende Anschlüsse kurze Syntax: Häfen: - "3000" - "3000-3005" - "8000:8000" - „9090-9091:8080-8081“ - „49100:22“ – „127.0.0.1:8001:8001“ – „127.0.0.1:5000-5010:5000-5010“ - „6060:6060/udp“ - "12400-12500:1240" Tipps: lange Syntax Die lange Syntax erlaubt Felder, die die kurze Syntax nicht erlaubt
Häfen: - Ziel: 80 veröffentlicht: 8080 Protokoll: TCP Modus: Host Neustart Richtlinie zum Neustarten von Containern restart: "no" # Bei Fehler nicht neu starten restart: always # Nach Fehler immer neu starten restart: on-failure # Nur bei Fehlercode „on-failure“ neu starten restart: unless-stopped # Nach manuellem Stoppen nicht neu starten Geheimnisse (werden hinzugefügt) Bände Wird zum Mounten von Datenträgern verwendet kurze Syntax
Wenn Sie einen relativen Pfad zum Host verwenden, erweitern Sie Bände: #Geben Sie den Pfad im Container an, Docker erstellt automatisch den Pfad - /var/lib/mysql #Absoluten Pfad einbinden - /opt/data:/var/lib/mysql # Relativen Pfad einbinden - ./cache:/tmp/cache # Relativer Pfad zum Benutzerverzeichnis – ~/configs:/etc/configs/:ro # Benannte Einbindung - Datenvolumen:/var/lib/mysql lange Syntax Die lange Syntax ermöglicht die Verwendung von Feldern, die nicht in der kurzen Syntax ausgedrückt werden können.
Version: "3.8" Leistungen: Webseite: Bild: nginx:alpine Häfen: - "80:80" Bände: - Typ: Volumen Quelle: meineDaten Ziel: /data Volumen: nocopy: wahr - Typ: binden Quelle: ./static Ziel: /opt/app/static Netzwerke: webnet: Bände: meine Daten: Dies ist das Ende dieses Artikels über die Schreibregeln von Docker Compose. Weitere relevante Inhalte zu den Schreibregeln von Docker Compose finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: JavaScript zum Erzielen von Feuerwerkseffekten (objektorientiert)
>>: Springboot + Vue-Cropper realisiert den Effekt des Avatar-Ausschneidens und -Hochladens
Fehlermeldung: FEHLER 2002 (HY000): Verbindung zu...
Ich habe mehr als eine Stunde gebraucht, um SSH i...
Dieser Artikel zeichnet die Installations- und Ko...
Hintergrund Wenn wir uns über den MySQL-Client in...
Dieser Artikel enthält ein ausführliches Tutorial...
/**************************** * Systemaufruf*****...
1. Was ist Docker Secret 1. Szenariodarstellung W...
Inhaltsverzeichnis Vorne geschrieben Was genau is...
Version 1.4.2 Offizielle Dokumentation Dockerhub ...
echarts Wortwolke ist eine Erweiterung von echart...
Inhaltsverzeichnis 1. Verwenden Sie Standardparam...
Dieser Artikel wurde auf GitHub https://github.co...
Einführung Einfach ausgedrückt ist tcpdump ein Pa...
Die heruntergeladene Version ist die Zip-Dekompri...
Das Spring Boot-Projekt verwendet Docker-Containe...