Sie fragen sich, was Docker Compose ist?
Docker ist das beliebteste Containerisierungswerkzeug in der DevOps-Welt. Aber was ist Docker Compose?
Docker Compose wird verwendet, um Anwendungen mit mehreren Containern über eine YAML-Datei auszuführen.
Es kann mehrere Fälle geben, in denen die Docker-Anwendung mehrere Container für verschiedene Technologie-Stacks ausführen muss. Das Erstellen, Ausführen und Verbinden separater Dockerdateien für jeden Container kann eine schwierige Aufgabe sein; hier hilft Ihnen docker-compose.
Mit einer einzigen und unkomplizierten Datei docker-compose.yml können Sie alle Container mit einem einzigen Befehl erstellen, verbinden und starten. Dies ist sehr nützlich für Unternehmensanwendungen in der Produktion, bei denen mehrere Anwendungen in Containern laufen. Es spart viel Zeit, da Sie 100 Anwendungen in Docker-Containern ausführen können.
Installation von Docker Compose
Docker sollte bereits auf Ihrem System installiert sein, bevor Sie compose installieren.
Führen Sie den folgenden Befehl aus, um docker-compose zu installieren.
geekflare@geekflare:/home/geekflare$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[sudo] Passwort für geekflare:
% Total % Received % Xferd Durchschnittliche Geschwindigkeit Zeit Zeit Zeit Aktuell
Dload Upload Total Verbraucht Linke Geschwindigkeit
100 617 0 617 0 0 1209 0 --:--:-- --:--:-- --:--:-- 1209
100 11.1M 100 11.1M 0 0 348k 0 0:00:32 0:00:32 --:--:-- 476k
Führen Sie den folgenden Befehl aus, um die Dateiberechtigungen zu setzen.
geekflare@geekflare:/home/geekflare$ sudo chmod x /usr/local/bin/docker-compose
Überprüfen Sie, ob es korrekt installiert wurde. Es sollte die Version von docker-compose zurückgeben.
geekflare@geekflare:/home/geekflare$ docker-compose --version
docker-compose Version 1.23.1, Build b02f1306
Im Folgenden finden Sie eine Liste der Befehle, die Sie mit docker-compose verwenden können.
geekflare@geekflare:/home/geekflare$ docker-compose
Definieren und betreiben Sie Multi-Container-Anwendungen mit Docker.
Verwendung:
docker-compose [-f <arg>...] [Optionen] [COMMAND] [ARGS...]
docker-compose -h|--help
Optionen:
-f, --file FILE Angabe einer alternativen Kompositionsdatei
(Standard: docker-compose.yml)
-p, --project-name NAME Legen Sie einen alternativen Projektnamen fest
(Voreinstellung: Verzeichnisname)
--verbose Mehr Ausgabe anzeigen
--log-level LEVEL Legt die Protokollstufe fest (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--no-ansi Keine ANSI-Steuerzeichen ausgeben
-v, --version Version ausgeben und beenden
-H, --host HOST Daemon-Socket, zu dem eine Verbindung aufgebaut werden soll
--tls TLS verwenden; impliziert durch -tlsverify
--tlscacert CA_PATH Nur von dieser CA signierten Zertifikaten vertrauen
--tlscert CLIENT_CERT_PATH Pfad zur TLS-Zertifikatsdatei
--tlskey TLS_KEY_PATH Pfad zur TLS-Schlüsseldatei
--tlsverify TLS verwenden und die Gegenstelle verifizieren
--skip-hostname-check Überprüft den Hostnamen des Daemons nicht mit der
im Client-Zertifikat angegebenen Namen
--project-directory PATH Geben Sie ein alternatives Arbeitsverzeichnis an
(Standard: der Pfad der Compose-Datei)
--compatibility Wenn diese Option gesetzt ist, wird Compose versuchen, das Deployment zu konvertieren
schlüssel in v3-Dateien in ihr Nicht-Swarm-Äquivalent umzuwandeln
Befehle:
build Dienste aufbauen oder neu aufbauen
bundle Erzeugen Sie ein Docker-Bundle aus der Compose-Datei
config Validieren und Anzeigen der Compose-Datei
create Dienste erstellen
down Container, Netzwerke, Images und Volumes stoppen und entfernen
ereignisse Empfangen von Echtzeit-Ereignissen von Containern
exec Ausführen eines Befehls in einem laufenden Container
help Hilfe zu einem Befehl abrufen
bilder Bilder auflisten
kill Container löschen
logs Ausgabe von Containern anzeigen
pause Dienste anhalten
port Den öffentlichen Port für eine Portbindung ausgeben
ps Container auflisten
pull Dienst-Images abrufen
push Bilder von Diensten pushen
restart Dienste neu starten
rm Gestoppte Container entfernen
run Einen einmaligen Befehl ausführen
scale Anzahl der Container für einen Dienst festlegen
start Dienste starten
stop Dienste stoppen
top Anzeige der laufenden Prozesse
unpause Dienste aufheben
up Container erstellen und starten
version Zeigt die Docker-Compose Versionsinformationen an
Docker-Compose-Datei
Hier ist ein Beispiel für eine Docker-Compose-Datei, die den ganzen Zauber ausführt.
version: '3'
dienste:
web:
bauen: .
ports:
- "5000:5000"
redis:
bild: "redis:alpine"
Die erste Zeile in dieser Datei gibt die verwendete Version an. Diese Zahl hängt von der auf Ihrem System installierten Docker-Engine ab. Ich habe Docker 18.09.6 installiert, was zu Version 3 von docker-compose gehört. Weitere Details zu den Versionen finden Sie hier – https://docs.docker.com/compose/compose-file/compose-versioning/
In dieser Docker-Datei laufen zwei Dienste/Anwendungen, Web und Redis. Der Webdienst wird über eine Dockerdatei erstellt und läuft auf dem Standard-Port des Flask-Webservers – 5000. Der Redis-Dienst wird ausgeführt, indem das Redis-Image aus der Docker-Hub-Registry gezogen wird.
Um die Datei docker-compose.yml auszuführen, müssen Sie einen sehr einfachen Befehl ausführen: docker-compose up
Docker Compose Arbeitsablauf
Nachfolgend finden Sie die drei Schritte zur Verwendung von docker-compose.
- Erstellen Sie für jeden Dienst ein Dockerfile
- Erstellen Sie eine Datei docker-compose.yml, um alle Dockerdateien zu verbinden
- Führen Sie den Befehl docker-compose up aus, um das System zu starten
Lassen Sie mich am Beispiel der Beispielsdatei docker-compose, die wir vorhin gesehen haben, zeigen, wie die Projektstruktur erstellt wird.
meine-app
|-----web
|---------Dockerfile
|-----redis
|docker-compose.yml
my-app ist mein Hauptprojektverzeichnis. In diesem Verzeichnis befinden sich die Verzeichnisse der Web- und Redis-Dienste und die YAML-Datei von docker-compose. Die Dockerdatei des Webdienstes befindet sich in einem Web-Verzeichnis. Da der Redis-Dienst direkt vom Docker-Hub bezogen wird, ist im Redis-Verzeichnis keine Dockerdatei erforderlich. So sieht der Arbeitsablauf von docker-compose aus.
Containerisierung einer MEAN Stack-Anwendung mit Docker Compose
Nun, da Sie die grundlegenden Konzepte verstanden haben. Lassen Sie mich Ihnen anhand einer Demo zeigen, wie Sie eine MEAN-Stack-Anwendung mit docker-compose containerisieren.
MEAN steht für MongoDB, Express, Angular und Node.js. Anwendungen, die diese Dienste zusammen verwenden, werden auch als MEAN/Full-Stack-Anwendung bezeichnet.
Für diese Demo werden wir drei Docker-Container ausführen:
- Container 1 – Angular
- Container 2 – NodeJS und ExpressJS
- Container 3 – MongoDB
Laden Sie die vollständige Anwendung hier herunter: http://bit.ly/2St7r3A (nicht für die Produktion getestet)
So wird meine Datei docker-compose.yml aussehen, um diese drei Container auszuführen:
version: '3'
dienste:
angular:
bauen: angular-client
ports:
- "4200:4200"
volumen:
- ./angular-client/:/var/www/app
express:
bauen: express-server
ports:
- "3000:3000"
volumen:
- ./express-server/:/var/www/app
links:
- datenbank
datenbank:
bild: Mongo
ports:
- "27017:27017"
- Die erste Zeile gibt die verwendete Version von docker-compose an
- Wir führen drei Dienste aus – Angular, Express und Datenbank
- Der Angular-Dienst wird mit einer Dockerdatei erstellt. Er wird auf Port 4200 ausgeführt, und das Anwendungsvolumen ist /var/www/app
- Der Express-Dienst wird mit Hilfe einer Dockerdatei erstellt. Der Express-Server läuft auf Port 3000, und das Volume ist /var/www/app
- Der Datenbankdienst zieht das MongoDB-Image von dockerhub und startet es an Post 27017
Entpacken Sie das Projekt im Home-Verzeichnis und wechseln Sie in das Angular-Client-Verzeichnis.
geekflare@geekflare:~$ cd mean
geekflare@geekflare:~/mean$ cd angular-client
Führen Sie den folgenden Befehl aus, wenn Sie den Node Package Manager (npm) nicht auf Ihrem System installiert haben (wenn er installiert ist, ignorieren Sie ihn).
geekflare@geekflare:~/mean/angular-client$ sudo apt install npm
[sudo] Passwort für geekflare:
Paketlisten lesen... Erledigt
Abhängigkeitsliste erstellen
Lesen von Statusinformationen... Erledigt
Die folgenden zusätzlichen Pakete werden installiert:
gyp javascript-common libc-ares2 libhttp-parser2.8 libjs-async libjs-inherits libjs-is-typedarray
libjs-jquery libjs-node-uuid libjs-underscore libssl1.0-dev libuv1 libuv1-dev node-abbrev node-ajv
node-ansi node-ansi-farbentabelle node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy
node-sind-wir-doch-da node-async node-aws-sign2 node-balanced-match node-block-stream node-bluebird
node-boom node-brace-expansion node-builtin-modules node-camelcase node-caseless node-chalk node-cliui
node-clone node-co node-color-convert node-color-name node-combined-stream node-concat-map
node-config-chain node-console-control-strings node-cookie-jar node-copy-concurrently node-core-util-is
node-yallist node-yargs node-yargs-parser nodejs nodejs-dev nodejs-doc
Empfohlene Pakete:
apache2 | lighttpd | httpd node-aws-sign node-oauth-sign node-http-signature debhelper
Die folgenden NEUEN Pakete werden installiert:
gyp javascript-common libc-ares2 libhttp-parser2.8 libjs-async libjs-inherits libjs-is-typedarray
libjs-jquery libjs-node-uuid libjs-underscore libssl1.0-dev libuv1 libuv1-dev node-abbrev node-ajv
node-ansi node-ansi-farbentabelle node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy
node-sind-wir-doch-da node-async node-aws-sign2 node-balanced-match node-block-stream node-bluebird
0 upgegradet, 212 neu installiert, 0 zu entfernen und 233 nicht upgegradet.
Sie benötigen 10,5 MB an Archiven.
Nach diesem Vorgang werden 53,6 MB zusätzlicher Speicherplatz benötigt.
Möchten Sie fortfahren? [Y/n] Y
Get:1 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 gyp all 0.1 20180428git4d467626-1 [237 kB]
Hole:2 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 javascript-common alle 11 [6.066 B]
Get:3 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 libhttp-parser2.8 amd64 2.8.1-1 [20.8 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libjs-async alle 0.8.0-3 [25.4 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libjs-is-typedarray all 1.0.0-2 [2,934 B]
Hole:6 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 libjs-jquery alle 3.2.1-1 [152 kB]
Hole:7 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libjs-node-uuid alle 1.4.7-5 [11.5 kB]
Hole:8 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 libjs-underscore alle 1.8.3~dfsg-1 [59.9 kB]
Get:9 http://us.archive.ubuntu.com/ubuntu cosmic-updates/main amd64 libssl1.0-dev amd64 1.0.2n-1ubuntu6.2 [1.366 kB]
Abgerufen 10.5 MB in 1min 34s (112 kB/s)
Extrahieren von Vorlagen aus Paketen: 100%
Auswählen des zuvor nicht ausgewählten Pakets gyp.
(Lesen der Datenbank ... 180130 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereiten des Entpackens von .../000-gyp_0.1 20180428git4d467626-1_all.deb ...
Entpacken von gyp (0.1 20180428git4d467626-1) ...
Auswählen des zuvor nicht ausgewählten Pakets javascript-common.
Vorbereiten zum Entpacken von .../001-javascript-common_11_all.deb ...
Entpacken von javascript-common (11) ...
Auswählen des zuvor nicht ausgewählten Pakets libhttp-parser2.8:amd64.
Vorbereiten des Entpackens von .../002-libhttp-parser2.8_2.8.1-1_amd64.deb ...
Einrichten von node-fstream-ignore (0.0.6-2) ...
Einrichten von node-gyp (3.6.2-2) ...
Einrichten von node-yargs (10.0.3-2) ...
Einrichten von npm (5.8.0 ds-2) ...
Verarbeiten von Triggern für libc-bin (2.28-0ubuntu1) ...
Wechseln Sie in das Verzeichnis angular-client und führen Sie npm install aus.
geekflare@geekflare:~/mean/angular-client$ npm install
> uws@0.14.5 install /home/geekflare/mean/angular-client/node_modules/uws
> node-gyp rebuild > build_log.txt 2>&1 || exit 0
> node-sass@4.7.2 install /home/geekflare/mean/angular-client/node_modules/node-sass
> node-scripts/install.js
Herunterladen der Binärdatei von https://github.com/sass/node-sass/releases/download/v4.7.2/linux-x64-57_binding.node
Herunterladen abgeschlossen ] - :
Binärdatei gespeichert in /home/geekflare/mean/angular-client/node_modules/node-sass/vendor/linux-x64-57/binding.node
Binärdatei nach /home/geekflare/.npm/node-sass/4.7.2/linux-x64-57_binding.node speichern
> uglifyjs-webpack-plugin@0.4.6 postinstall /home/geekflare/mean/angular-client/node_modules/webpack/node_modules/uglifyjs-webpack-plugin
> node lib/post_install.js
> node-sass@4.7.2 postinstall /home/geekflare/mean/angular-client/node_modules/node-sass
> node skripte/build.js
Binärdatei gefunden unter /home/geekflare/mean/angular-client/node_modules/node-sass/vendor/linux-x64-57/binding.node
Binärdatei testen
Binärdatei ist in Ordnung
hat 1457 Pakete von 1250 Mitwirkenden in 80.009s hinzugefügt
Wechseln Sie nun in das Verzeichnis express und führen Sie npm install aus.
geekflare@geekflare:~/mean/angular-client$ cd ...
geekflare@geekflare:~/mean$ cd express-server/
geekflare@geekflare:~/mean/express-server$ npm install
Nun, da alles eingestellt ist, ist es an der Zeit, die Datei docker-compose.yml auszuführen, die alle Docker-Container starten und die MEAN-Stack-Anwendung ausführen wird.
geekflare@geekflare:~/mean/express-server$ cd ...
geekflare@geekflare:~/mean$ docker-compose up
Erstellen des Netzwerks "mean_default" mit dem Standardtreiber
Angular bauen
Schritt 1/8 : FROM node:8
8: Aus der Bibliothek/node ziehen
a4d8138d0f6b: Abruf abgeschlossen
dbdc36973392: Abruf abgeschlossen
f59d6d019dd5: Abruf beendet
aaef3e026258: Abruf abgeschlossen
6e454d3b6c28: Abruf beendet
c717a7c205aa: Pull komplett
37add8e5ac11: Abruf abgeschlossen
0314ab675d31: Abruf abgeschlossen
012886364728: Abruf abgeschlossen
Digest: sha256:310db2abcff097ef44af205d81833282a6d5471002a1b59d7b7459a74152c856
Status: Neueres Image für node:8 heruntergeladen
--->
8e45c884a32e
Schritt 2/8 : RUN mkdir -p /var/www/app
--->
Läuft in c70a0cab7994
Entfernen des Zwischencontainers c70a0cab7994
--->
001c5e840b24
Schritt 3/8 : WORKDIR /var/www/app
--->
Läuft in 622ebdc41b2f
Entfernen des Zwischencontainers 622ebdc41b2f
--->
baa2e2347259
Schritt 4/8 : COPY package.json /var/www/app
--->
5b97543befab
Schritt 5/8 : RUN npm install
--->
Läuft in 73e3d8b7a701
> uws@9.14.0 install /var/www/app/node_modules/uws
> node-gyp rebuild > build_log.txt 2>&1 || exit 0
> node-sass@4.12.0 install /var/www/app/node_modules/node-sass
> node-scripts/install.js
Herunterladen der Binärdatei von https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-57_binding.node
Vollständig herunterladen
Binärdatei gespeichert in /var/www/app/node_modules/node-sass/vendor/linux-x64-57/binding.node
Binärdatei nach /root/.npm/node-sass/4.12.0/linux-x64-57_binding.node zwischengespeichert
> core-js@2.6.9 postinstall /var/www/app/node_modules/core-js
> node skripte/postinstall || echo "ignorieren"
Das Projekt braucht Ihre Hilfe! Bitte unterstützen Sie core-js auf Open Collective oder Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock
> uglifyjs-webpack-plugin@0.4.6 postinstall /var/www/app/node_modules/webpack/node_modules/uglifyjs-webpack-plugin
> node lib/post_install.js
> node-sass@4.12.0 postinstall /var/www/app/node_modules/node-sass
> node skripte/build.js
Binärdatei gefunden unter /var/www/app/node_modules/node-sass/vendor/linux-x64-57/binding.node
Binärdatei testen
Binärdatei ist in Ordnung
1606 Pakete von 1329 Mitwirkenden hinzugefügt und 15092 Pakete in 112.427s überprüft
Entfernen des Zwischencontainers 73e3d8b7a701
--->
55790d2fae93
Schritt 6/8 : COPY . /var/www/app
--->
61537aa487f4
Schritt 7/8 : EXPOSE 4200
--->
Läuft in 632eedc35a45
Entfernen des Zwischencontainers 632eedc35a45
--->
51e75b0e2ebe
Schritt 8/8 : CMD ["npm", "start"]
--->
Läuft in 36bbb12a0d38
Entfernen des Zwischencontainers 36bbb12a0d38
--->
9f8d61db600c
Erfolgreich gebaut 9f8d61db600c
Erfolgreich getaggt mean_angular:latest
Datenbank abrufen (mongo:)...
aktuellste: Abruf aus library/mongo
35b42117c431: Abruf abgeschlossen
ad9c569a8d98: Pull abgeschlossen
293b44f45162: Pull komplett
0c175077525d: Pull komplett
4e73525b52ba: Pull abgeschlossen
a22695a3f5e9: Abruf abgeschlossen
c5175bcf2977: Pull komplett
3e320da07793: Pull abgeschlossen
01c6db6b2b5a: Abruf abgeschlossen
3bd6e9d03e78: Abruf abgeschlossen
e03dcf51513f: Pull komplett
c1956a9e136a: Pull komplett
4c35cf22b1d5: Abruf abgeschlossen
Gebäude-Express
Schritt 1/9 : FROM Knoten:8
--->
8e45c884a32e
Schritt 2/9 : RUN mkdir -p /var/www/app
--->
Cache verwenden
--->
001c5e840b24
Schritt 3/9 : WORKDIR /var/www/app
--->
Cache verwenden
--->
baa2e2347259
Schritt 4/9 : COPY package.json /var/www/app
--->
0232ad53c679
Schritt 5/9 : Starten Sie npm install
--->
Läuft in c309bf6f218e
fügte 128 Pakete von 151 Mitwirkenden hinzu und überprüfte 233 Pakete in 9.055s
Entfernen des Zwischencontainers c309bf6f218e
--->
49e652884562
Schritt 6/9 : RUN npm install -g nodemon
--->
Läuft in 0ed5d7f3642b
/usr/local/bin/nodemon -> /usr/local/lib/node_modules/nodemon/bin/nodemon.js
> nodemon@1.19.1 postinstall /usr/local/lib/node_modules/nodemon
> node bin/postinstall || exit 0
Sie lieben nodemon? Sie können das Projekt jetzt über das Open Collective unterstützen:
> https://opencollective.com/nodemon/donate
nodemon@1.19.1
221 Pakete von 128 Mitwirkenden in 18.856s hinzugefügt
Entfernen des Zwischencontainers 0ed5d7f3642b
--->
32c55606f35e
Schritt 7/9 : COPY . /var/www/app
--->
a618b38a2812
Schritt 8/9 : EXPOSE 3000
--->
Läuft in bea389ab3ef1
Entfernen des Zwischencontainers bea389ab3ef1
--->
684bbfb31371
Schritt 9/9 : CMD ["npm", "start"]
--->
Wird ausgeführt in 9aa1b72e4a4e
Entfernen des Zwischencontainers 9aa1b72e4a4e
--->
35dcb3df9806
Erfolgreich gebaut 35dcb3df9806
Erfolgreich getaggt mean_express:latest
Erstellen von mean_angular_1_de44b3f5b988 ... erledigt
Erstellen von mean_database_1_708f8f9c3c33 ... erledigt
Mean_express_1_b57a483a72ee erstellen ... erledigt
Anhängen an mean_angular_1_f257e2233ef1, mean_database_1_ccc5c677e00b, mean_express_1_574f07b045fc
angular_1_f257e2233ef1 |
angular_1_f257e2233ef1 | > my-app@0.0.0 start /var/www/app
angular_1_f257e2233ef1 | > ng serve -H 0.0.0.0
angular_1_f257e2233ef1 |
database_1_ccc5c677e00b | 2019-07-20T22:33:25.933 0000 I CONTROL [main] Automatisches Deaktivieren von TLS 1.0, um TLS 1.0 zu erzwingen, geben Sie --sslDisabledProtocols 'none' an
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] MongoDB startet : pid=1 port=27017 dbpath=/data/db 64-bit host=f74b56905249
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] db version v4.0.10
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] OpenSSL Version: OpenSSL 1.0.2g 1 Mar 2016
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] Zuweiser: tcmalloc
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] Module: keine
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] build environment:
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] distmod: ubuntu1604
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] distarch: x86_64
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] target_arch: x86_64
database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] Optionen: { net: { bindIpAll: true } }
express_1_574f07b045fc |
express_1_574f07b045fc | > express-server@0.0.0 start /var/www/app
express_1_574f07b045fc | > nodemon ./bin/www
express_1_574f07b045fc |
express_1_574f07b045fc | [nodemon] 1.19.1
express_1_574f07b045fc | [nodemon] um jederzeit neu zu starten, geben Sie `rs` ein
express_1_574f07b045fc | [nodemon] beobachten: *.*
express_1_574f07b045fc | [nodemon] startet `node ./bin/www`
database_1_ccc5c677e00b | 2019-07-20T22:33:33.543 0000 I NETWORK [listener] Verbindung akzeptiert von 172.19.0.4:38958 #1 (1 Verbindung jetzt offen)
database_1_ccc5c677e00b | 2019-07-20T22:33:33.560 0000 I NETWORK [conn1] erhielt Client-Metadaten von 172.19.0.4:38958 conn1: { driver: { name: "nodejs", version: "3.0.1" }, os: { type: "Linux", Name: "linux", Architektur: "x64", Version: "4.18.0-25-generic" }, Plattform: "Node.js v8.16.0, LE, mongodb-core: 3.0.1" }
express_1_574f07b045fc | mongodb: verbunden
angular_1_f257e2233ef1 | ** NG Live Development Server hört auf 0.0.0.0:4200, öffnen Sie Ihren Browser auf http://localhost:4200/ **
angular_1_f257e2233ef1 | Datum: 2019-07-21T11:21:03.868Z - Hash: 639d9a968476ed482b5c - Zeit: 336ms
angular_1_f257e2233ef1 | 4 unveränderte Chunks
angular_1_f257e2233ef1 | chunk {main} main.bundle.js (main) 19.8 kB [initial] [gerendert]
angular_1_f257e2233ef1 |
angular_1_f257e2233ef1 | webpack: Erfolgreich kompiliert.
angular_1_f257e2233ef1 | webpack: Kompiliert...
angular_1_f257e2233ef1 | Datum: 2019-07-21T11:25:15.661Z - Hash: e5a2b1c1afe0deb396c3 - Zeit: 251ms
angular_1_f257e2233ef1 | 4 unveränderte Chunks
angular_1_f257e2233ef1 | chunk {main} main.bundle.js (main) 19.8 kB [initial] [gerendert]
angular_1_f257e2233ef1 |
angular_1_f257e2233ef1 | webpack: Erfolgreich kompiliert.
Gehen Sie zu Ihrem Browser und überprüfen Sie https://localhost:4200.
Ihre Anwendung wird nun ausgeführt.
Rufen Sie https://localhost:3000
auf, um zu überprüfen, ob ein Express-Server läuft.
Sie können auch den Befehl docker images ausführen, um zu sehen, welche Images in docker vorhanden sind.
geekflare@geekflare:~/mean$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mean_express latest 35dcb3df9806 vor 14 Stunden 923MB
mean_angular aktuell 9f8d61db600c vor 14 Stunden 1.29GB
node 8 8e45c884a32e vor 9 Tagen 895MB
mongo latest 785c65f61380 vor 2 Wochen 412MB
Führen Sie den folgenden Befehl aus, um die in Docker ausgeführten Container zu sehen.
geekflare@geekflare:~/mean$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
681c9c34bee2 mean_express "docker-entrypoint.s..." vor 14 Stunden Up 14 Stunden 0.0.0.0:3000->3000/tcp mean_express_1_574f07b045fc
f74b56905249 mongo "docker-entrypoint.s..." vor 14 Stunden Up 14 Stunden 0.0.0.0:27017->27017/tcp mean_database_1_ccc5c677e00b
260ef1e52dab mean_angular "docker-entrypoint.s..." vor 14 Stunden Up 14 Stunden 0.0.0.0:4200->4200/tcp mean_angular_1_f257e2233ef1
Jetzt sind also alle drei Docker-Container in Betrieb.
Docker-compose hat die Ausführung aller Container problemlos übernommen. Dies war ein einfaches Beispiel für den Betrieb von drei Containern; Sie können sich vorstellen, wie nützlich es sein wird, wenn die Anwendungen auf 100 Containern gestartet werden müssen. Probieren Sie es einfach aus, um zu sehen, wie es funktioniert.