Vous vous demandez ce qu’est Docker Compose ?

Docker est l’outil de conteneurisation le plus populaire dans le monde DevOps. Mais qu’est-ce que Docker Compose ?

Docker Compose est utilisé pour exécuter des applications qui ont plusieurs conteneurs à l’aide d’un fichier YAML.

Il peut y avoir plusieurs cas où l’application Docker doit exécuter plusieurs conteneurs pour différentes piles technologiques. Construire, exécuter, connecter des dockerfiles séparés pour chaque conteneur peut être une tâche difficile ; c’est là que docker-compose vous aide.

En utilisant un seul fichier docker-compose.yml, vous pouvez construire, connecter et lancer tous les conteneurs en exécutant une seule commande. C’est très utile pour les applications d’entreprise en production, où plusieurs applications tournent dans des conteneurs. Cela permet de gagner beaucoup de temps en exécutant facilement des centaines d’applications dans des conteneurs Docker.

Installation de Docker Compose

Docker doit déjà être installé sur votre système avant d’installer compose.

Exécutez la commande ci-dessous pour installer docker-compose.

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] mot de passe pour geekflare :

% Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Courant

Dload Upload Total Spented 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

Exécutez la commande ci-dessous pour définir les permissions des fichiers.

geekflare@geekflare:/home/geekflare$ sudo chmod x /usr/local/bin/docker-compose

Vérifiez qu’il a été installé correctement, il devrait retourner la version de docker-compose.

geekflare@geekflare:/home/geekflare$ docker-compose --version

docker-compose version 1.23.1, build b02f1306

Vous trouverez ci-dessous la liste des commandes que vous pouvez utiliser avec docker-compose.

geekflare@geekflare:/home/geekflare$ docker-compose

Définissez et exécutez des applications multi-conteneurs avec Docker.

Utilisation :

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

docker-compose -h|--help

Options :

-f, --file FICHIER Spécifier un fichier de composition alternatif

(par défaut : docker-compose.yml)

-p, --project-name NAME Spécifie un nom de projet alternatif

(par défaut : nom du répertoire)

--verbose Affiche plus de résultats

--log-level LEVEL Définir le niveau de journalisation (DEBUG, INFO, WARNING, ERROR, CRITICAL)

--no-ansi Ne pas imprimer les caractères de contrôle ANSI

-v, --version Impression de la version et sortie

-H, --host HOST Socket du démon auquel se connecter


--tls Utiliser TLS ; impliqué par -tlsverify

--tlscacert CA_PATH Faire confiance aux certificats signés uniquement par cette autorité de certification

--tlscert CLIENT_CERT_PATH Chemin d'accès au fichier de certificats TLS

--tlskey TLS_KEY_PATH Chemin d'accès au fichier de clé TLS

--tlsverify Utilise TLS et vérifie l'identité de l'utilisateur distant

--skip-hostname-check Ne vérifie pas le nom d'hôte du démon par rapport à la liste des noms d'hôtes

nom spécifié dans le certificat du client

--project-directory PATH Spécifie un autre répertoire de travail

(par défaut : le chemin du fichier Compose)

--compatibility Si cette option est activée, Compose tentera de convertir les fichiers deploy

dans les fichiers v3 en leur équivalent non-Swarm

Commandes :

build Construire ou reconstruire des services

bundle Générer un bundle Docker à partir du fichier Compose

config Validez et visualisez le fichier Compose

create Créer des services

down Arrêter et supprimer des conteneurs, des réseaux, des images et des volumes

événements Recevoir des événements en temps réel des conteneurs

exec Exécuter une commande dans un conteneur en cours d'exécution

help Obtenir de l'aide sur une commande

images Liste des images

kill Tuer les conteneurs

logs Afficher les données de sortie des conteneurs

pause Mettre les services en pause

port Imprimer le port public pour une liaison de port

ps Liste des conteneurs

pull Tirer les images de service

push Pousser les images du service

restart Redémarrer les services

rm Supprimer les conteneurs arrêtés

run Exécuter une commande ponctuelle

scale Définir le nombre de conteneurs pour un service

start Démarrer des services

stop Arrêter les services

top Afficher les processus en cours

unpause Interrompre les services

up Créer et démarrer des conteneurs

version Affiche les informations sur la version de Docker-Compose

Fichier Docker Compose

Voici un exemple de fichier docker-compose qui fait toute la magie.

version : '3'

services :

web :

build : .

ports :

- "5000:5000"

redis :

image : "redis:alpine"

La première ligne de ce fichier indique la version utilisée. Ce numéro dépend du moteur Docker installé sur votre système. J’ai installé Docker 18.09.6 qui appartient à la version 3 de docker-compose. Vous trouverez plus de détails sur les versions ici – https://docs.docker.com/compose/compose-file/compose-versioning/

Ce fichier Docker exécute deux services/applications, web et Redis. Le service web est construit à travers un dockerfile et s’exécute sur le port par défaut de flask webserver – 5000. Le service Redis s’exécute en tirant l’image Redis du registre docker hub.

Pour exécuter le fichier docker-compose.yml, vous devez lancer une commande très simple : docker-compose up

Flux de travail de Docker Compose

Vous trouverez ci-dessous les trois étapes pour utiliser docker-compose.

  1. Créez un dockerfile pour chaque service
  2. Créez un fichier docker-compose.yml pour connecter tous les fichiers docker
  3. Exécutez la commande docker-compose up pour démarrer le système

Prenons l’exemple du fichier docker-compose que nous avons vu plus tôt et montrons comment la structure du projet sera créée.

mon-app

|-----web

|---------Dockerfile

-----redis

|docker-compose.yml

my-app est le répertoire principal de mon projet. Ce répertoire contient les répertoires des services Web et Redis ainsi que le fichier YAML de docker-compose. Le fichier Docker du service Web est présent dans le répertoire web. Comme le service Redis est tiré directement du hub docker, aucun dockerfile n’est nécessaire dans le répertoire Redis. Voici à quoi ressemble le flux de travail de docker-compose.

Conteneurisation d’une application MEAN Stack à l’aide de Docker Compose

Maintenant que vous avez compris les concepts fondamentaux. Laissez-moi vous montrer une démo sur la façon de conteneuriser une application de la pile MEAN à l’aide de Docker-compose.

MEAN signifie MongoDB, Express, Angular et Node.js. Les applications qui utilisent ces services ensemble sont également appelées applications MEAN/Full-stack.

Pour cette démo, nous allons exécuter trois conteneurs docker :

  • Conteneur 1 – Angular
  • Conteneur 2 – NodeJS et ExpressJS
  • Conteneur 3 – MongoDB

Téléchargez l’application complète ici : http://bit.ly/2St7r3A (non testé pour la production)

Voici à quoi ressemblera mon fichier docker-compose.yml pour exécuter ces trois conteneurs :

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

liens :

- base de données

base de données :

image : mongo

ports :

- "27017:27017"
  • La première ligne spécifie la version de docker-compose utilisée
  • Nous exécutons trois services – angular, express et database
  • Le service Angular sera construit en utilisant un dockerfile. Il fonctionnera sur le port 4200, et le volume de l’application est /var/www/app
  • Le service Express sera construit à l’aide d’un fichier docker. Le serveur express fonctionnera sur le port 3000, et le volume est /var/www/app
  • Le service de base de données tirera l’image MongoDB de dockerhub et la démarrera au poste 27017

Extrayez le projet dans le répertoire personnel et allez dans le répertoire angular-client.

geekflare@geekflare:~$ cd mean

geekflare@geekflare:~/mean$ cd angular-client 

Exécutez la commande ci-dessous si le gestionnaire de paquets node (npm) n’est pas installé sur votre système (ignorez s’il l’est).

geekflare@geekflare:~/mean/angular-client$ sudo apt install npm

[sudo] mot de passe pour geekflare :

Lecture des listes de paquets... Terminé

Construction de l'arbre des dépendances

Lecture des informations d'état... Terminé

Les paquets supplémentaires suivants seront installés :

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

Paquets suggérés :

apache2 | lighttpd | httpd node-aws-sign node-oauth-sign node-http-signature debhelper

Les NOUVEAUX paquets suivants seront installés :

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 mis à jour, 212 nouvellement installés, 0 à supprimer et 233 non mis à jour.

Besoin de récupérer 10,5 Mo d'archives.

Après cette opération, 53,6 Mo d'espace disque supplémentaire seront utilisés.

Voulez-vous continuer ? [O/n] O

Get:1 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 gyp all 0.1 20180428git4d467626-1 [237 kB]

Obtenir: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 all 3.2.1-1 [152 kB]

Get:7 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libjs-node-uuid all 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]

Récupéré 10.5 MB en 1min 34s (112 kB/s)

Extraction des modèles à partir des paquets : 100%

Sélection d'un paquet non sélectionné précédemment : gyp.

(Lecture de la base de données ... 180130 fichiers et répertoires actuellement installés)

Préparation du déballage de .../000-gyp_0.1 20180428git4d467626-1_all.deb ...

Décompression de gyp (0.1 20180428git4d467626-1) ...

Sélection du paquet javascript-common précédemment non sélectionné.

Préparation du déballage de .../001-javascript-common_11_all.deb ...

Décompression de javascript-common (11) ...

Sélection du paquet non sélectionné précédemment libhttp-parser2.8:amd64.

Préparation du déballage de .../002-libhttp-parser2.8_2.8.1-1_amd64.deb ...

Mise en place de node-fstream-ignore (0.0.6-2) ...

Installation de node-gyp (3.6.2-2) ...

Installation de node-yargs (10.0.3-2) ...

Installation de npm (5.8.0 ds-2) ...

Traitement des déclencheurs pour libc-bin (2.28-0ubuntu1) ...

Dans le répertoire angular-client, lancez npm install.

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

Téléchargement du binaire depuis https://github.com/sass/node-sass/releases/download/v4.7.2/linux-x64-57_binding.node

Téléchargement terminé ] - :

Binaire sauvegardé dans /home/geekflare/mean/angular-client/node_modules/node-sass/vendor/linux-x64-57/binding.node

Mise en cache du binaire dans /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

Binaire trouvé dans /home/geekflare/mean/angular-client/node_modules/node-sass/vendor/linux-x64-57/binding.node

Test du binaire

Le binaire est correct

a ajouté 1457 paquets de 1250 contributeurs en 80.009s

Allez maintenant dans le répertoire express et lancez npm install.

geekflare@geekflare:~/mean/angular-client$ cd ...

geekflare@geekflare:~/mean$ cd express-server/

geekflare@geekflare:~/mean/express-server$ npm install

Maintenant que tout est prêt, il est temps de lancer le fichier docker-compose.yml qui va lancer tous les conteneurs docker et exécuter l’application de la pile MEAN.

geekflare@geekflare:~/mean/express-server$ cd ...

geekflare@geekflare:~/mean$ docker-compose up

Création du réseau "mean_default" avec le pilote par défaut

Construction d'angular

Étape 1/8 : DU nœud:8

8 : Tiré de library/node

a4d8138d0f6b : Extraction terminée

dbdc36973392 : Extraction terminée

f59d6d019dd5 : retrait complet

aaef3e026258 : Pull terminé

6e454d3b6c28 : Pull terminé

c717a7c205aa : Pull complet

37add8e5ac11 : Suppression complète

0314ab675d31 : Pull terminé

012886364728 : Extraction terminée

Digest: sha256:310db2abcff097ef44af205d81833282a6d5471002a1b59d7b7459a74152c856

Statut : Téléchargement d'une nouvelle image pour node:8

--->
 8e45c884a32e

Etape 2/8 : RUN mkdir -p /var/www/app

--->
 Exécuté dans c70a0cab7994

Suppression du conteneur intermédiaire c70a0cab7994

--->
 001c5e840b24

Étape 3/8 : WORKDIR /var/www/app

--->
 Exécuté dans 622ebdc41b2f

Suppression du conteneur intermédiaire 622ebdc41b2f

--->
 baa2e2347259

Étape 4/8 : COPY package.json /var/www/app

--->
 5b97543befab

Étape 5/8 : Exécutez npm install

--->
 Exécuté dans 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

Téléchargement du binaire depuis https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-57_binding.node

Téléchargement complet

Binaire sauvegardé dans /var/www/app/node_modules/node-sass/vendor/linux-x64-57/binding.node

Mise en cache du binaire dans /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"

Le projet a besoin de votre aide ! Veuillez envisager de soutenir core-js sur Open Collective ou 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

Binaire trouvé dans /var/www/app/node_modules/node-sass/vendor/linux-x64-57/binding.node

Test du binaire

Le binaire est correct

a ajouté 1606 paquets provenant de 1329 contributeurs et a audité 15092 paquets en 112.427s

Suppression du conteneur intermédiaire 73e3d8b7a701

--->
 55790d2fae93

Étape 6/8 : COPY . /var/www/app

--->
 61537aa487f4

Étape 7/8 : EXPOSER 4200

--->
 En cours d'exécution dans 632eedc35a45

Suppression du conteneur intermédiaire 632eedc35a45

--->
 51e75b0e2ebe

Étape 8/8 : CMD ["npm", "start"]

--->
 Exécuté dans 36bbb12a0d38

Suppression du conteneur intermédiaire 36bbb12a0d38

--->
 9f8d61db600c

Construit avec succès 9f8d61db600c

Marqué avec succès mean_angular:latest

Extraction de la base de données (mongo :)...

la plus récente : Extrait de library/mongo

35b42117c431 : Extraction terminée

ad9c569a8d98 : Pull terminé

293b44f45162 : Pull terminé

0c175077525d : Pull complet

4e73525b52ba : Pull terminé

a22695a3f5e9 : Pull terminé

c5175bcf2977 : Pull complet

3e320da07793 : Pull terminé

01c6db6b2b5a : Pull terminé

3bd6e9d03e78 : Pull complet

e03dcf51513f : Pull complet

c1956a9e136a : Pull complet

4c35cf22b1d5 : Pull terminé

Bâtiment express

Étape 1/9 : DU nœud:8

--->
 8e45c884a32e

Étape 2/9 : RUN mkdir -p /var/www/app

--->
 Utilisation du cache

--->
 001c5e840b24

Étape 3/9 : WORKDIR /var/www/app

--->
 Utilisation du cache

--->
 baa2e2347259

Étape 4/9 : COPY package.json /var/www/app

--->
 0232ad53c679

Étape 5/9 : Exécutez npm install

--->
 Exécuté dans c309bf6f218e

ajout de 128 paquets provenant de 151 contributeurs et audit de 233 paquets en 9.055s

Suppression du conteneur intermédiaire c309bf6f218e

--->
 49e652884562

Étape 6/9 : Exécutez npm install -g nodemon

--->
 Exécuté dans 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

Vous aimez nodemon ? Vous pouvez maintenant soutenir le projet via le collectif ouvert :

> https://opencollective.com/nodemon/donate

  nodemon@1.19.1

a ajouté 221 paquets provenant de 128 contributeurs en 18.856s

Suppression du conteneur intermédiaire 0ed5d7f3642b

--->
 32c55606f35e

Étape 7/9 : COPY . /var/www/app

--->
 a618b38a2812

Étape 8/9 : EXPOSER 3000

--->
 Exécuté dans bea389ab3ef1

Suppression du conteneur intermédiaire bea389ab3ef1

--->
 684bbfb31371

Étape 9/9 : CMD ["npm", "start"]

--->
 Exécution dans 9aa1b72e4a4e

Suppression du conteneur intermédiaire 9aa1b72e4a4e

--->
 35dcb3df9806

Construit avec succès 35dcb3df9806

Marqué avec succès mean_express:latest

Création de mean_angular_1_de44b3f5b988 ... done

Création de mean_database_1_708f8f9c3c33 ... done

Création de mean_express_1_b57a483a72ee ... done

Attachement à mean_angular_1_f257e2233ef1, mean_database_1_ccc5c677e00b, mean_express_1_574f07b045fc

angulaire_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] Désactivation automatique de TLS 1.0, pour forcer l'activation de TLS 1.0, spécifiez --sslDisabledProtocols 'none'

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] MongoDB démarre : pid=1 port=27017 dbpath=/data/db 64-bit host=f74b56905249

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROLE [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 CONTROLE [initandlisten] Version OpenSSL : OpenSSL 1.0.2g 1 Mar 2016

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

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

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROLE [initandlisten] build environment :

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROLE [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 CONTROLE [initandlisten] target_arch : x86_64

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

express_1_574f07b045fc | [nodemon] 1.19.1

express_1_574f07b045fc | [nodemon] pour redémarrer à tout moment, entrez `rs`

express_1_574f07b045fc | [nodemon] watching : *.*

express_1_574f07b045fc | [nodemon] démarre `node ./bin/www`

database_1_ccc5c677e00b | 2019-07-20T22:33:33.543 0000 I RESEAU [listener] connexion acceptée depuis 172.19.0.4:38958 #1 (1 connexion ouverte)

database_1_ccc5c677e00b | 2019-07-20T22:33:33.560 0000 I RESEAU [conn1] received client metadata from 172.19.0.4:38958 conn1 : { driver : { name : "nodejs", version : "3.0.1" }, os : { type : "Linux", name : "linux", architecture : "x64", version : "4.18.0-25-generic" }, platform : "Node.js v8.16.0, LE, mongodb-core : 3.0.1" }

express_1_574f07b045fc | mongodb : connecté

angular_1_f257e2233ef1 | ** NG Live Development Server écoute sur 0.0.0.0:4200, ouvrez votre navigateur sur http://localhost:4200/ **

angular_1_f257e2233ef1 | Date : 2019-07-21T11:21:03.868Z - Hash : 639d9a968476ed482b5c - Time : 336ms

angular_1_f257e2233ef1 | 4 chunks inchangés

angular_1_f257e2233ef1 | chunk {main} main.bundle.js (main) 19.8 kB [initial] [rendered]

angular_1_f257e2233ef1 |

angular_1_f257e2233ef1 | webpack : Compilé avec succès.

angular_1_f257e2233ef1 | webpack : Compilation...

angular_1_f257e2233ef1 | Date : 2019-07-21T11:25:15.661Z - Hash : e5a2b1c1afe0deb396c3 - Time : 251ms

angular_1_f257e2233ef1 | 4 chunks inchangés

angular_1_f257e2233ef1 | chunk {main} main.bundle.js (main) 19.8 kB [initial] [rendered]

angular_1_f257e2233ef1 |

angular_1_f257e2233ef1 | webpack : Compilé avec succès.

Allez dans votre navigateur et vérifiez https://localhost:4200, votre application sera opérationnelle.

angular - docker compose

Allez sur https://localhost:3000 pour vérifier si un serveur express est en cours d’exécution.

express - docker compose

Vous pouvez également lancer la commande docker images pour voir quelles images sont présentes dans docker.

geekflare@geekflare:~/mean$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

mean_express latest 35dcb3df9806 il y a 14 heures 923MB

mean_angular dernier 9f8d61db600c il y a 14 heures 1.29GB

node 8 8e45c884a32e il y a 9 jours 895MB

mongo latest 785c65f61380 il y a 2 semaines 412MB

Exécutez la commande ci-dessous pour voir les conteneurs en cours d’exécution dans Docker.

geekflare@geekflare:~/mean$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

681c9c34bee2 mean_express "docker-entrypoint.s..." il y a 14 heures Up 14 heures 0.0.0.0:3000->3000/tcp mean_express_1_574f07b045fc

f74b56905249 mongo "docker-entrypoint.s..." Il y a 14 heures En cours 14 heures 0.0.0.0:27017->27017/tcp mean_database_1_ccc5c677e00b

260ef1e52dab mean_angular "docker-entrypoint.s..." Il y a 14 heures En haut 14 heures 0.0.0.0:4200->4200/tcp mean_angular_1_f257e2233ef1

Les trois conteneurs Docker sont maintenant opérationnels.

Docker-compose s’est occupé de faire fonctionner tous les conteneurs facilement. Il s’agissait d’un exemple simple pour faire fonctionner trois conteneurs ; vous pouvez imaginer à quel point cela sera utile si les applications doivent être lancées sur des centaines de conteneurs. Allez-y et essayez pour voir comment cela fonctionne.

More on Docker