Docker Compose-Nutzungsszenarien Bei unserer Entwicklung ist eine Anwendung häufig von mehreren Diensten abhängig. Bei der herkömmlichen Docker-Run-Methode müssen Sie mehrere Dienste nacheinander starten und sogar das entsprechende Netzwerk konfigurieren. Der Vorgang ist umständlich und unbequem. Docker Compose zielt darauf ab, die Konstruktion und Abhängigkeiten mehrerer Dienste in Eine einfache DemoDie Demofunktion ist ein einfaches Python-Programm, das einen Webdienst bereitstellt. Mit diesem Dienst wird gezählt, wie oft auf den aktuellen Dienst zugegriffen wird. Die Erfassung und Speicherung der Zeiten erfolgt vollständig auf Basis von Redis. Das heißt, zusätzlich zu seinen eigenen Diensten ist das Programm selbst auch auf einen Redis-Dienst angewiesen. Hier sind die detaillierten Schritte Suchen Sie ein Verzeichnis und erstellen Sie darin eine Python-Datei app.py Importzeit Redis importieren aus Flasche importieren Flasche App = Flask(__name__) Cache = Redis.Redis (Host = "Redis", Port = 6379) auf Grund von get_hit_count(): Wiederholungsversuche = 5 während True: versuchen: returniere cache.incr('Treffer') außer redis.exceptions.ConnectionError als exc: wenn Wiederholungen == 0: erhöhen exc Wiederholungen -= 1 Zeit.Schlaf(0,5) @app.route('/') def hallo(): Anzahl = Trefferanzahl abrufen() return 'Hallo Welt! Ich wurde {} Mal gesehen.\n'.format(Anzahl) Erstellen Sie im selben Ordner die Datei requirements.txt Die Datei requirements.txt wird zum Deklarieren der abhängigen Bibliotheken verwendet, die das Python-Programm verwenden muss. Sie ähnelt ein wenig der Maven-POM-Datei in Java. Die im obigen Code verwendeten Komponenten sind Flask und Redis. Der Inhalt der Datei requirements.txt lautet also Flasche Redis Erstellen Sie im selben Ordner eine Dockerfile Dockerfile wird verwendet, um unser Programm in ein Docker-Image zu erstellen. Im Allgemeinen definiert Dockerfile die grundlegende Umgebung für die Ausführung unseres Codes, Programmstartbefehle, Ausführungsports usw. Das Dockerfile für dieses Beispiel sieht wie folgt aus VON python:3.7-alpine ARBEITSVERZEICHNIS /code ENV FLASK_APP=app.py ENV FLASK_RUN_HOST=0.0.0.0 KOPIEREN requirements.txt requirements.txt Führen Sie den Befehl „pip install -r requirements.txt“ aus. EXPOSE 5000 KOPIEREN . . CMD ["Flasche", "ausführen"] Erstellen Sie in derselben Datei eine Datei docker-compose.yml Nach Abschluss der obigen Schritte können wir unseren Dienst im Docker-Format ausführen. Dieser Dienst ist jedoch vom Redis-Dienst abhängig. Daher organisieren wir die Abhängigkeiten der Dienste über docker-compose.yml. Der Inhalt ist wie folgt: Version: "3.8" Leistungen: Webseite: bauen: . Häfen: - "5000:5000" Redis: Bild: „redis:alpine“ Die Datei definiert zwei Dienste, web und redis Der Redis-Dienst verwendet direkt das vorgefertigte Image Grundlegende Bedienung und WartungAlle mit Docker-Compose verbundenen Befehle müssen in dem Pfad ausgeführt werden, in dem sich docker-compose.yml befindet. Starten Sie den Dienst basierend auf docker-compose.yml Verwenden Sie im Verzeichnis, in dem sich docker-compose.yml befindet, den Befehl docker-compose up kann einen Dienst und seine Abhängigkeiten auch separat in der Compolse-Datei starten Zeigen Sie die Containerdienstliste an, die dem Compose-Dienst entspricht Docker-Compose PS Ausgabebeispiel
Das Servicepräfix Natürlich starten eine Reihe von Diensten in Compose letztendlich eine Reihe von Containern. Sie können also auch Beenden des Servicecontainers Sie müssen den Befehl Stoppen Sie den Servicecontainer und löschen Sie den entsprechenden Container Sie müssen den Befehl im Pfad verwenden, in dem sich docker-compose.yml befindet. Docker-Compose nach unten Stoppen Sie den Servicecontainer und löschen Sie die entsprechenden Container- und Volumedaten. Sie müssen den Befehl im Pfad verwenden, in dem sich docker-compose.yml befindet. docker-compose down --volumes Dieser Befehl löscht nicht die gemounteten Dateien des Host-Betriebssystems. So melden Sie sich beim entsprechenden Dienst an Um sich bei Compose anzumelden und einen bestimmten Dienst auszuführen, verwenden Sie den folgenden Befehl: docker-compose exec ***Dienstname*** bash So zeigen Sie die angegebene Compose-Datei an docker-compose -f docker-compose.yml -f docker-compose.admin.yml führe Backup_db aus Unterschied zwischen Docker-Compose Up und Docker-Compose Run docker-compose up startet alle Dienste basierend auf der Compose-Datei und stellt die Ports der Außenwelt zur Verfügung. Einige erweiterte WissenspunkteUmgebungsvariablen Der Inhalt von docker-compose.yml selbst kann variable Platzhalter verwenden und seine spezifischen Variablenwerte werden in spezifischen Umgebungsvariablen definiert, sodass dieselbe Datei docker-compose.yml in verschiedenen Umgebungen unterschiedliche Ausführungsverhalten aufweisen kann. Normalerweise möchten wir, dass die Tag-Version des Images des abhängigen Dienstes von Umgebung zu Umgebung variiert. Anschließend konfigurieren wir dessen Tag mit einem Platzhalter in der entsprechenden Servicekonfiguration von docker-compose.yml. Im Folgenden wird Webseite: Bild: "webapp:${TAG}" Zusätzlich zu den oben angegebenen Variablen gibt es mehrere in Docker integrierte Variablen, die festgelegt werden können. Sie werden verwendet, um das Ausführungsverhalten von Docker oder Docker Compose zu konfigurieren. Diese eingebauten Variablen sind
Spezifische Bedeutungen finden Sie unter: https://docs.docker.com/compose/reference/envvars/ Am Beispiel des Platzhalters In docker-compose.yml ausführen Geben Sie es in der Compolse-Datei über Webseite: Bild: "webapp:${TAG}" Umfeld: - TAG=Entwickler Legen Sie Shell-Umgebungsvariablen fest, bevor Sie den Befehl „Docker-Compose“ ausführen $ export TAG=v2.0 $ Docker-Compose nach oben Einstellung über env_file Standardmäßig sucht docker-compose up im Befehlsausführungspfad nach der .env-Datei, um den Wert des Variablenersatzes zu finden. Die .env-Datei wird in der Form Schlüssel=Wert konfiguriert. Zum Beispiel TAG=Entwickler Wenn der Name der Umgebungsvariable nicht .env ist oder sich nicht im Pfad der aktuellen Befehlsausführung befindet, können Sie docker-compose --env-file ./config/.env.dev up Geben Sie direkt in der Compose-Datei die zu ladende Umgebungsdatei an. Version: '3' Leistungen: API: Bild: ‚Knoten:6-Alpine‘ Umgebungsdatei: - ./Docker/api/api.env Umfeld: - NODE_ENV=Produktion Die oben genannten Variablenwerteinstellungen haben Priorität von hoch nach niedrig Anzeigen der endgültigen effektiven Umgebungsvariablen Wenn Sie nicht sicher sind, welche Umgebungsvariablen letztendlich wirksam sind, können Sie den folgenden Befehl verwenden, um Docker-Compose, Web-Umgebung ausführen Projektnameneinstellung Eine Gruppe von Diensten, die einer Komposition entspricht, hat einen gemeinsamen Projektnamen, der sich im Containernamenpräfix und im Netzwerkpräfix des Kompositionsdienstes widerspiegelt. Netzwerk Standardnetzwerk Standardmäßig treten mehrere Dienste in Compose einem Netzwerk namens „Standard“ bei. Diese Dienste sind im Standardnetzwerk miteinander verbunden. Dem vollständigen Namen des Standardnetzwerks wird der Name des Ordners vorangestellt, in dem sich die Compose-Datei befindet. Der Ordner ist beispielsweise „Hello_World's Compose“. Der einem Satz von Diensten entsprechende Netzwerkname lautet: hello_world_default. Diese Gruppe von Diensten kommuniziert in diesem Netzwerk über die zweite Portgruppe in der Compose-Datei. Version: "3" Leistungen: Webseite: bauen: . Häfen: - "8000:8000" db: Bild: postgres Häfen: - „8001:5432“ Beispielsweise verwendet in der obigen Konfiguration im Netzwerk „hello_world_default“ der Webdienst Port 8000, um mit dem Datenbankdienst auf Port 5432 zu kommunizieren. Die erste Gruppe der Ports 8000 und 8001 sind die Ports, die vom Host für den Zugriff auf Web- und Datenbankdienste verwendet werden. Selbständige Konfiguration des Standardnetzwerks Wenn Sie die Standardnetzwerkkonfiguration ändern möchten, können Sie diese separat über das Netzwerkelement in der Erstellungsdatei ändern, z. B. indem Sie den Standardnetzwerktreiber wie folgt ändern Netzwerke: Standard: # Verwenden Sie einen benutzerdefinierten Treiber Treiber: benutzerdefinierter Treiber-1 Konfigurieren und Verwenden nicht standardmäßiger Netzwerke Definieren Sie mehrere Netzwerke und verwenden Sie Version: "3" Leistungen: Proxy: Erstellen: ./Proxy Netzwerke: -Frontend App: Erstellen: ./app Netzwerke: -Frontend - Backend db: Bild: postgres Netzwerke: - Backend Netzwerke: Frontend: # Verwenden Sie einen benutzerdefinierten Treiber Treiber: benutzerdefinierter Treiber-1 Backend: # Verwenden Sie einen benutzerdefinierten Treiber, der spezielle Optionen akzeptiert Treiber: benutzerdefinierter Treiber-2 Treiberoptionen: foo: "1" Balken: "2" Die obige Konfiguration definiert zwei Netzwerke, Frontend und Backend. Die App kann auf beide Netzwerke zugreifen, der Proxy-Dienst kann nur auf das Frontend-Netzwerk zugreifen und die Datenbank kann nur auf das Backend-Netzwerk zugreifen. Ausführungsreihenfolge mehrerer Dienste Mehrere Dienste in einer Komposition können Abhängigkeiten aufweisen. Beispielsweise ist der Webdienst vom Datenbankdienst abhängig. Wir möchten zuerst den Datenbankdienst und dann den Webdienst starten. Diese Startreihenfolge kann auch in der Compose-Datei mit depends_on angegeben werden. Version: "2" Leistungen: Webseite: bauen: . Häfen: - "80:8000" hängt ab von: - "db" Befehl: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"] db: Bild: postgres Installation von Docker ComposeSowohl die Mac- als auch die Windows-Version von Docker werden standardmäßig mit Docker Compose geliefert. Nur die Linux-Version muss separat installiert werden Ähnlichkeiten und Unterschiede zwischen Docker Compose und Docker Stack
Verweise https://docs.docker.com/compose/gettingstarted/ Dies ist das Ende dieses Artikels über die Verwendung von Docker Compose. Weitere relevante Inhalte zur Verwendung 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:
|
<<: Vue ruft die Computerkamera auf, um die Fotofunktion zu realisieren
>>: So konfigurieren Sie MGR Single Master und mehrere Slaves in MySQL 8.0.15
Installieren Sie TomCat unter Windows Dieser Arti...
Vorwort Dieser Artikel stellt hauptsächlich die V...
Inhaltsverzeichnis Überblick 1. Hook-Aufrufreihen...
Vorwort Das Miniprogramm verfügt über eine sehr p...
Um eine CSS-Bildschirmgrößenanpassung zu erreiche...
Vorwort Wenn wir einen MySQL-Cluster erstellen, m...
Inhaltsverzeichnis Hintergrund Technische Lösung ...
Vorwort Dieses Experiment bereitet zwei virtuelle...
Ich weiß nicht warum, aber UI gestaltet gerne Wab...
<br />Einmal unterhielten sich Foyin und Her...
In diesem Artikel wird der spezifische Code zur V...
Problembeschreibung html <iframe id="h5In...
In diesem Artikel wird der spezifische Code von v...
zabbix_agent-Bereitstellung: Empfehlung: zabbix_a...
1. Funktion: xargs kann die durch Leerzeichen ode...