Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter DevOps Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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 vergeht 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 die Komposition 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

<x>[sudo]</x> password for geekflare:

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

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 führen Sie Multi-Container-Anwendungen mit Docker aus.

Verwendung:

docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]

docker-compose -h|--help

Optionen:

-f, --file FILE Geben Sie eine alternative Compose-Datei an

(Standard: docker-compose.yml)

-p, --project-name NAME Geben Sie einen alternativen Projektnamen an

(Standard: verzeichnisname)

--verbose Zeigt mehr Ausgaben

--log-level LEVEL Legt den Log-Level fest (DEBUG, INFO, WARNING, ERROR, CRITICAL)

--no-ansi Keine ANSI-Steuerzeichen ausgeben

-v, --version Version ausgeben und beenden

-H, --host HOST Daemon-Socket, mit dem eine Verbindung hergestellt werden soll


--tls TLS verwenden; impliziert durch -tlsverify

--tlscacert CA_PATH Vertraue auf Zertifikate, die nur von dieser CA signiert sind

--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 Den Hostnamen des Daemons nicht mit dem

im Client-Zertifikat angegebenen Namen vergleichen

--project-directory PATH Ein alternatives Arbeitsverzeichnis angeben

(Standard: pfad der Compose-Datei)

--compatibility Wenn diese Option gesetzt ist, versucht Compose, die bereitgestellten

Schlüssel in v3-Dateien in ihr Nicht-Swarm-Äquivalent zu konvertieren

Befehle:

build Dienste erstellen oder neu aufbauen

bundle Ein Docker-Bundle aus der Compose-Datei erzeugen

config Die Compose-Datei validieren und anzeigen

create Dienste erstellen

down Container, Netzwerke, Images... anhalten und entfernen und Volumes

events Echtzeit-Ereignisse von Containern empfangen

exec Einen Befehl in einem laufenden Container ausführen

help Hilfe zu einem Befehl erhalten

images Images auflisten

kill Container töten

logs Ausgaben von Containern ansehen

pause Dienste anhalten

port Den öffentlichen Port für eine Portbindung ausgeben

ps Container auflisten

pull Dienst-Images ziehen

push Dienst-Images pushen

restart Dienste neu starten

rm Gestoppte Container entfernen

run Einen one-aus

scale Anzahl der Container für einen Dienst festlegen

start Dienste starten

stop Dienste stoppen

top Laufende Prozesse anzeigen

unpause Dienste nicht anhalten

up Container erstellen und starten

version Informationen zur Docker-Compose Version anzeigen

Docker Compose Datei

Hier ein Beispiel für eine Docker-Compose-Datei, die den ganzen Zauber ausführt

version: '3'

services:

web:

build: .

ports:

- "5000:5000"

redis:

image: "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 aufwärts

Docker Compose Arbeitsablauf

Nachfolgend finden Sie die drei Schritte zur Verwendung von docker-compose

  1. Erstellen Sie für jeden Dienst eine Dockerdatei
  2. Erstellen Sie eine Datei docker-compose.yml, um alle Dockerdateien zu verbinden
  3. 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

my-app

|--web



|---------Dockerfile


|-----redis


|docker-compose
.yml

my-app ist mein Hauptprojektverzeichnis. Dieses Verzeichnis enthält 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 sieht meine Datei docker-compose.yml aus, um diese drei Container auszuführen

version: '3'

services:

angular:

build: angular-client

ports:

- "4200:4200"

volumes:

- ./angular-client/:/var/www/app

express:

build: express-server

ports:

- "3000:3000"

volumes:

- ./express-server/:/var/www/app

links:

database

database:

image: 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

<x>[sudo]</x> Passwort für geekflare:

Paketlisten lesen... Erledigt

Erstellen des Abhängigkeitsbaums

Lesen der 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-color-table node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy

node-are-we-there-yet 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-color-table node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy

node-are-we-there-yet node-async node-aws-sign2 node-balanced-match node-block-stream node-bluebird

0 aktualisiert, 212 neu installiert, 0 zu entfernen und 233 nicht aktualisiert.

Sie benötigen 10,5 MB an Archiven.

Nach diesem Vorgang werden 53,6 MB an zusätzlichem 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]

Get:2 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 javascript-common all 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 all 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]

Get:6 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 libjs-jquery alle 3.2.1-1 [152 kB]

Get:7 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libjs-node-uuid alle 1.4.7-5 [11.5 kB]

Get:8 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 libjs-underscore all 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]

Holte 10.5 MB in 1min 34s (112 kB/s)

Extrahiert Vorlagen aus Paketen: 100%

Auswahl des zuvor nicht ausgewählten Pakets gyp.

(Lesen der Datenbank ... 180130 Dateien und Verzeichnisse, die derzeit installiert sind.)

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 des Entpackens von .../001-javascript-common_11_all.deb ...

Entpacken von javascript-common (11) ...

Auswählen des bisher 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

Download der Binärdatei von https://github.com/sass/node-sass/releases/download/v4.7.2/linux-x64-57_binding.node

Download abgeschlossen ] - :

Binärdatei gespeichert in /home/geekflare/mean/angular-client/node_modules/node-sass/vendor/linux-x64-57/binding.node

Caching der Binärdatei in /home/geekflare/.npm/node-sass/4.7.2/linux-x64-57_binding.node

> 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 scripts/build.js

Binär

gefunden unter /home/geekflare/mean/angular-client/node_modules/node-sass/vendor/linux-x64-57/binding.node

Testing binary

Binär

is fine

added 1457 packages from 1250 contributors in 80.009s

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 eingerichtet ist, ist es an der Zeit, die Datei docker-compose.yml auszuführen, die alle Docker-Container startet 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

Erstellen von angular

Schritt 1/8 : FROM node:8

8: Pulling from library/node

a4d8138d0f6b: Pull complete

dbdc36973392: Pull complete

f59d6d019dd5: Pull complete

aaef3e026258: Pull complete

6e454d3b6c28: Pull complete

c717a7c205aa: Pull complete

37add8e5ac11: Pull complete

0314ab675d31: Pull complete

012886364728: Pull complete

Digest: sha256:310db2abcff097ef44af205d81833282a6d5471002a1b59d7b7459a74152c856

Status: Heruntergeladenes neueres Image für node:8

--->
 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

--->
 Ausführen 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

Download der Binärdatei von https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-57_binding.node

Download abgeschlossen

Binärdatei gespeichert in /var/www/app/node_modules/node-sass/vendor/linux-x64-57/binding.node

Caching der Binärdatei in /root/.npm/node-sass/4.12.0/linux-x64-57_binding.node

> core-js@2.6.9 postinstall /var/www/app/node_modules/core-js

> node scripts/postinstall || echo "ignore"

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 scripts/build.js

Binary gefunden unter /var/www/app/node_modules/node-sass/vendor/linux-x64-57/binding.node

Testing binary

Binary is fine

added 1606 packages from 1329 contributors and audited 15092 packages in 112.427s

Removing intermediate container 73e3d8b7a701

--->
 55790d2fae93

Step 6/8 : COPY . /var/www/app

--->
 61537aa487f4

Schritt 7/8 : EXPOSE 4200

--->
 Ausführen 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

Pulling Datenbank (mongo:)...

latest: Abruf aus library/mongo

35b42117c431: Abruf abgeschlossen

ad9c569a8d98: Pull complete

293b44f45162: Pull complete

0c175077525d: Pull complete

4e73525b52ba: Pull complete

a22695a3f5e9: Pull complete

c5175bcf2977: Pull complete

3e320da07793: Pull complete

01c6db6b2b5a: Pull complete

3bd6e9d03e78: Pull complete

e03dcf51513f: Pull complete

c1956a9e136a: Pull complete

4c35cf22b1d5: Pull complete

Aufbau express

Schritt 1/9 : FROM node: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 : RUN npm install

--->
 Läuft in c309bf6f218e

hat 128 Pakete von 151 Mitwirkenden hinzugefügt und 233 Pakete in 9.055s auditiert

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

added 221 packages from 128 contributors in 18.856s

Removing intermediate container 0ed5d7f3642b

--->
 32c55606f35e

Step 7/9 : COPY . /var/www/app

--->
 a618b38a2812

Schritt 8/9 : EXPOSE 3000

--->
 Ausführen in bea389ab3ef1

Entfernen des Zwischencontainers bea389ab3ef1

--->
 684bbfb31371

Schritt 9/9 : CMD ["npm", "start"]

--->
 Läuft in 9aa1b72e4a4e

Entfernen des Zwischencontainers 9aa1b72e4a4e

--->
 35dcb3df9806

Erfolgreich gebaut 35dcb3df9806

Erfolgreich getaggt mean_express:latest

Erstellen von mean_angular_1_de44b3f5b988 ... done

Erstellen von mean_database_1_708f8f9c3c33 ... done

Erstellen von mean_express_1_b57a483a72ee ... done

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, zum Erzwingen der Aktivierung von TLS 1.0 geben Sie --sslDisabledProtocols 'none' an

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL <x><x><x><x><x><x><x><x><x><x>[initandlisten]</x></x></x></x></x></x></x></x></x></x> 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 [ <x><x><x><x><x><x><x><x><x><x>initandlisten]</x></x></x></x></x></x></x></x></x></x> db version v4.0.10

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [ <x><x><x><x><x><x><x><x><x><x>initandlisten]</x></x></x></x></x></x></x></x></x></x> git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [ <x><x><x><x><x><x><x><x><x><x>initandlisten]</x></x></x></x></x></x></x></x></x></x> OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [ <x><x><x><x><x><x><x><x><x><x>initandlisten]</x></x></x></x></x></x></x></x></x></x> allocator: tcmalloc

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL <x><x><x><x><x><x><x><x><x><x>[initandlisten]</x></x></x></x></x></x></x></x></x></x> modules: none

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL <x><x><x><x><x><x><x><x><x><x>[initandlisten]</x></x></x></x></x></x></x></x></x></x> build environment:

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL <x><x><x><x><x><x><x><x><x><x>[initandlisten]</x></x></x></x></x></x></x></x></x></x> distmod: ubuntu1604

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL <x><x><x><x><x><x><x><x><x><x>[initandlisten]</x></x></x></x></x></x></x></x></x></x> distarch: x86_64

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL <x><x><x><x><x><x><x><x><x><x>[initandlisten]</x></x></x></x></x></x></x></x></x></x> target_arch: x86_64

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL <x><x><x><x><x><x><x><x><x><x>[initandlisten]</x></x></x></x></x></x></x></x></x></x> options: { 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 | <x><x><x>[nodemon]</x></x></x> 1.19.1

express_1_574f07b045fc | <x><x><x>[nodemon]</x></x></x> um jederzeit neu zu starten, geben Sie `rs`

express_1_574f07b045fc | <x><x><x>[nodemon]</x></x></x> watching: *.*

express_1_574f07b045fc | <x><x><x>[nodemon]</x></x></x> starting `node ./bin/www`

database_1_ccc5c677e00b | 2019-07-20T22:33:33.543 0000 I NETWORK [listener] connection accepted from 172.19.0.4:38958 #1 (1 Verbindung jetzt offen)

database_1_ccc5c677e00b | 2019-07-20T22:33:33.560 0000 I NETZWERK [ conn1] hat Client-Metadaten von 172.19.0.4:38958 erhalten 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 <x>[initial]</x> <x>[gerendert]</x>

angular_1_f257e2233ef1 |

angular_1_f257e2233ef1 | webpack: Erfolgreich kompiliert.

angular_1_f257e2233ef1 | webpack: Kompilieren...

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 <x>[initial]</x> <x>[gerendert]</x>

angular_1_f257e2233ef1 |

angular_1_f257e2233ef1 | webpack: Erfolgreich kompiliert

Rufen Sie Ihren Browser auf und überprüfen Sie https://localhost:4200. Ihre Anwendung ist nun einsatzbereit

angular - docker compose

Rufen Sie https://localhost:3000 auf, um zu überprüfen, ob ein Express-Server läuft

express - docker compose

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 latest 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 laufenden Container zu sehen

geekflare@geekflare:~/mean$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

681c9c34bee2 mean_express "docker-entrypoint.s..." 14 hours ago Up 14 hours 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..." 14 Stunden her Up 14 Stunden

0

.0.0.0:4200->4200/tcp mean_angular_1_f257e2233ef1

Jetzt sind auch 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 ist, wenn die Anwendungen auf 100 Containern gestartet werden müssen. Probieren Sie es einfach aus, um zu sehen, wie es funktioniert.

  • Avi
    Autor
    Avi ist ein Technik-Enthusiast mit Fachkenntnissen in Trendtechnologien wie DevOps, Cloud Computing, Big Data und vielen mehr. Seine Leidenschaft ist es, Spitzentechnologien zu lernen und sein Wissen mit anderen zu teilen, indem er... mehr lesen
Dank an unsere Sponsoren
Weitere großartige Lektüre über DevOps
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder