¿Se pregunta qué es Docker Compose?

Docker es la herramienta de contenedorización más popular en el mundo DevOps. Pero, ¿Qué es Docker Compose?

Docker Compose se utiliza para ejecutar aplicaciones que tienen múltiples contenedores utilizando un archivo YAML.

Puede haber varios casos en los que la aplicación Docker debe ejecutar múltiples contenedores para diferentes pilas de tecnología. Ahora construir, ejecutar y conectar dockerfiles separados para cada contenedor puede ser una tarea difícil; aquí es donde docker-compose le ayuda.

Utilizando un único y sencillo archivo docker-compose.yml, puede construir, conectar y lanzar todos los contenedores ejecutando un único comando. Esto es muy útil para aplicaciones empresariales en producción, donde varias aplicaciones se ejecutan dentro de contenedores. Ahorra mucho tiempo al ejecutar 100s de aplicaciones dentro de contenedores docker con facilidad.

Instalación de Docker Compose

Docker ya debe estar instalado en su sistema antes de instalar compose.

Ejecute el siguiente comando para instalar 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] contraseña para geekflare:

% Total % Recibido % Xferd Velocidad media Tiempo Tiempo Actual

Dload Upload Total Gastado Velocidad Izquierda

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

Ejecute el siguiente comando para establecer los permisos de los archivos.

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

Compruebe si se ha instalado correctamente, debería devolver la versión de docker-compose.

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

docker-compose versión 1.23.1, build b02f1306

A continuación se muestra la lista de comandos que puede utilizar con docker-compose.

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

Defina y ejecute aplicaciones multicontenedor con Docker.

Uso:

docker-compose [-f <arg>...] [opciones] [COMANDO] [ARGS...]

docker-compose -h|--help

Opciones:

-f, --file FILE Especificar un archivo de composición alternativo

(por defecto: docker-compose.yml)

-p, --project-name NAME Especificar un nombre de proyecto alternativo

(por defecto: nombre del directorio)

--verbose Mostrar más salida

--log-level NIVEL Establece el nivel de registro (DEBUG, INFO, ADVERTENCIA, ERROR, CRÍTICO)

--no-ansi No imprimir caracteres de control ANSI

-v, --version Imprimir la versión y salir

-H, --host Socket del demonio HOST al que conectarse


--tls Utilizar TLS; implícito por -tlsverify

--tlscacert CA_PATH Confiar en certificados firmados sólo por esta CA

--tlscert CLIENT_CERT_PATH Ruta al archivo de certificado TLS

--tlskey TLS_KEY_PATH Ruta al archivo de claves TLS

--tlsverify Utilizar TLS y verificar el remoto

--skip-hostname-check No cotejar el nombre de host del demonio con el archivo

nombre especificado en el certificado del cliente

--project-directory PATH Especificar un directorio de trabajo alternativo

(por defecto: la ruta del archivo Compose)

--compatibilidad Si se establece, Compose intentará convertir el despliegue

en archivos v3 a su equivalente no-Swarm

Comandos:

build Construir o reconstruir servicios

bundle Generar un bundle Docker a partir del archivo Compose

config Validar y visualizar el archivo Compose

create Crear servicios

down Detener y eliminar contenedores, redes, imágenes y volúmenes

eventos Recibir eventos en tiempo real de los contenedores

exec Ejecutar un comando en un contenedor en ejecución

help Obtener ayuda sobre un comando

images Listar imágenes

kill Matar contenedores

logs Ver la salida de los contenedores

pause Pausar servicios

port Imprimir el puerto público de un enlace de puerto

ps Listar contenedores

pull Extraer imágenes de servicio

push Empujar imágenes de servicio

restart Reiniciar servicios

rm Eliminar contenedores parados

run Ejecutar un comando puntual

scale Fijar el número de contenedores de un servicio

start Iniciar servicios

stop Detener servicios

top Mostrar los procesos en ejecución

unpause Desactivar servicios

arriba Crear e iniciar contenedores

version Mostrar la información de la versión de Docker-Compose

Archivo Docker-Compose

Aquí tiene un archivo docker-compose de ejemplo que hace toda la magia.

versión: '3

servicios:

web:

construir: .

puertos:

- "5000:5000"

redis:

imagen: "redis:alpine"

La primera línea de este archivo especifica la versión que se está utilizando. Este número depende del motor Docker instalado en su sistema. Yo tengo instalado Docker 18.09.6 que pertenece a la versión 3 de docker-compose. Consulte más detalles sobre las versiones aquí – https://docs.docker.com/compose/compose-file/compose-versioning/

Este archivo docker está ejecutando dos servicios/aplicaciones, web y Redis. El servicio web se construye a través de un dockerfile y se ejecuta en el puerto por defecto del webserver de flask – 5000. El servicio Redis se ejecuta tirando de la imagen Redis del registro docker hub.

Para ejecutar el archivo docker-compose.yml, necesita ejecutar un comando muy simple: docker-compose up

Flujo de trabajo de Docker Compose

A continuación se detallan los tres pasos para utilizar docker-compose.

  1. Cree un archivo dockerfile de cada servicio
  2. Cree un archivo docker-compose.yml para conectar todos los dockerfiles
  3. Ejecute el comando docker-compose up para iniciar el sistema

Permítame tomar un ejemplo del archivo docker-compose de muestra que vimos anteriormente y mostrarle cómo se creará la estructura del proyecto.

mi-app

|-----web

|---------Dockerfile

|-----redis

|docker-compose.yml

my-app es el directorio principal de mi proyecto. Este directorio tiene los directorios del servicio web y Redis y el archivo YAML de docker-compose. Dockerfile del servicio Web está presente en un directorio web. Dado que el servicio Redis se está extrayendo del docker hub directamente, no se requiere ningún dockerfile en el directorio Redis. Así es como se ve el flujo de trabajo docker-compose.

Conteniendo una aplicación MEAN Stack usando Docker Compose

Ahora que ha entendido los conceptos fundamentales. Permítanme mostrar una demostración de cómo contenerizar una aplicación de pila MEAN utilizando docker-compose.

MEAN son las siglas de MongoDB, Express, Angular y Node.js. Las aplicaciones que utilizan estos servicios juntos también se llama una aplicación MEAN/Full-stack.

Para esta demo, ejecutaremos tres contenedores docker:

  • Contenedor 1 – Angular
  • Contenedor 2 – NodeJS y ExpressJS
  • Contenedor 3 – MongoDB

Descargue la aplicación completa aquí: http://bit.ly/2St7r3A (no probada para producción)

Este es el aspecto que tendrá mi archivo docker-compose.yml para ejecutar estos tres contenedores:

versión: '3

servicios:

angular:

build: angular-client

ports:

- "4200:4200"

volúmenes:

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

express:

build: express-server

puertos:

- "3000:3000"

volúmenes:

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

enlaces:

- base de datos

base de datos:

imagen: mongo

puertos:

- "27017:27017"
  • La primera línea especifica la versión de docker-compose que se está utilizando
  • Estamos ejecutando tres servicios – angular, express y base de datos
  • El servicio angular se construirá utilizando un dockerfile. Se ejecutará en el puerto 4200, y el volumen de la aplicación es /var/www/app
  • El servicio express se construirá utilizando un dockerfile. El servidor express se ejecutará en el puerto 3000, y el volumen es /var/www/app
  • El servicio de base de datos extraerá la imagen MongoDB de dockerhub y la iniciará en el puesto 27017

Extraiga el proyecto en el directorio home y vaya al directorio angular-client.

geekflare@geekflare:~$ cd media

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

Ejecute el siguiente comando si no tiene instalado el gestor de paquetes node (npm) en su sistema (ignórelo si está instalado).

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

[sudo] contraseña para geekflare:

Leyendo lista de paquetes... Hecho

Construyendo árbol de dependencias

Leyendo información de estado... Hecho

Se instalarán los siguientes paquetes adicionales:

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

Paquetes sugeridos:

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

Se instalarán los siguientes paquetes NUEVOS:

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 actualizados, 212 recién instalados, 0 para eliminar y 233 no actualizados.

Se necesitan 10,5 MB de archivos.

Tras esta operación, se utilizarán 53,6 MB de espacio adicional en disco.

¿Desea continuar? [S/N] S

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

Obtenido 10,5 MB en 1min 34s (112 kB/s)

Extrayendo plantillas de los paquetes: 100%

Seleccionando paquete gyp previamente no seleccionado.

(Leyendo base de datos ... 180130 archivos y directorios instalados actualmente)

Preparando para desempaquetar .../000-gyp_0.1 20180428git4d467626-1_all.deb ...

Desempaquetando gyp (0.1 20180428git4d467626-1) ...

Seleccionando paquete javascript-common previamente no seleccionado.

Preparando para desempaquetar .../001-javascript-common_11_all.deb ...

Desempaquetando javascript-common (11) ...

Seleccionando paquete no seleccionado previamente libhttp-parser2.8:amd64.

Preparándose para desempaquetar .../002-libhttp-parser2.8_2.8.1-1_amd64.deb ...

Configurando node-fstream-ignore (0.0.6-2) ...

Instalando node-gyp (3.6.2-2) ...

Instalando node-yargs (10.0.3-2) ...

Instalando npm (5.8.0 ds-2) ...

Procesando triggers para libc-bin (2.28-0ubuntu1) ...

En el directorio angular-client y ejecute 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

Descarga del binario desde https://github.com/sass/node-sass/releases/download/v4.7.2/linux-x64-57_binding.node

Descarga completa ] - :

Binario guardado en /home/geekflare/mean/angular-client/node_modules/node-sass/vendor/linux-x64-57/binding.node

Binario guardado en /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

Binario encontrado en /home/geekflare/mean/angular-client/node_modules/node-sass/vendor/linux-x64-57/binding.node

Binario de prueba

El binario está bien

añadido 1457 paquetes de 1250 contribuidores en 80.009s

Ahora vaya al directorio express y ejecute npm install.

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

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

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

Ahora que todo está listo, es hora de ejecutar el archivo docker-compose.yml que va a lanzar todos los contenedores docker y ejecutar la aplicación de pila MEAN.

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

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

Creación de la red "mean_default" con el controlador por defecto

Construyendo angular

Paso 1/8 : DESDE nodo:8

8: Extracción desde biblioteca/nodo

a4d8138d0f6b: Pull completo

dbdc36973392: Pull completo

f59d6d019dd5: Pull completo

aaef3e026258: Pull completo

6e454d3b6c28: Pull completo

c717a7c205aa: Pull completo

37add8e5ac11: Pull completo

0314ab675d31: Pull completo

012886364728: Pull completo

Digest: sha256:310db2abcff097ef44af205d81833282a6d5471002a1b59d7b7459a74152c856

Estado: Descargada imagen más reciente para nodo:8

--->
 8e45c884a32e

Paso 2/8 : EJECUTE mkdir -p /var/www/app

--->
 Ejecutar en c70a0cab7994

Eliminando el contenedor intermedio c70a0cab7994

--->
 001c5e840b24

Paso 3/8 : WORKDIR /var/www/app

--->
 Ejecutando en 622ebdc41b2f

Eliminando el contenedor intermedio 622ebdc41b2f

--->
 baa2e2347259

Paso 4/8 : COPIAR package.json /var/www/app

--->
 5b97543befab

Paso 5/8 : EJECUTE npm install

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

Descarga del binario desde https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-57_binding.node

Descarga completa

Binario guardado en /var/www/app/node_modules/node-sass/vendor/linux-x64-57/binding.node

Binario guardado en /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"

¡El proyecto necesita su ayuda! Por favor, considere el apoyo de core-js en Open Collective o 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

Binario encontrado en /var/www/app/node_modules/node-sass/vendor/linux-x64-57/binding.node

Binario de prueba

El binario está bien

añadido 1606 paquetes de 1329 contribuidores y auditado 15092 paquetes en 112.427s

Eliminado el contenedor intermedio 73e3d8b7a701

--->
 55790d2fae93

Paso 6/8 : COPIAR . /var/www/app

--->
 61537aa487f4

Paso 7/8 : EXPONGA 4200

--->
 Ejecutando en 632eedc35a45

Eliminación del contenedor intermedio 632eedc35a45

--->
 51e75b0e2ebe

Paso 8/8 : CMD ["npm", "start"]

--->
 Ejecutando en 36bbb12a0d38

Eliminando el contenedor intermedio 36bbb12a0d38

--->
 9f8d61db600c

Construido con éxito 9f8d61db600c

Etiquetado con éxito mean_angular:latest

Extrayendo base de datos (mongo:)...

latest: Extrayendo de library/mongo

35b42117c431: Pull completo

ad9c569a8d98: Pull completo

293b44f45162: Pull completo

0c175077525d: Pull completo

4e73525b52ba: Pull completo

a22695a3f5e9: Pull completo

c5175bcf2977: Pull completo

3e320da07793: Pull completo

01c6db6b2b5a: Pull completo

3bd6e9d03e78: Pull completo

e03dcf51513f: Pull completo

c1956a9e136a: Pull completo

4c35cf22b1d5: Pull completo

Construcción exprés

Paso 1/9 : DESDE nodo:8

--->
 8e45c884a32e

Paso 2/9 : EJECUTE mkdir -p /var/www/app

--->
 Usar caché

--->
 001c5e840b24

Paso 3/9 : WORKDIR /var/www/app

--->
 Usar caché

--->
 baa2e2347259

Paso 4/9 : COPIAR package.json /var/www/app

--->
 0232ad53c679

Paso 5/9 : EJECUTE npm install

--->
 Ejecutando en c309bf6f218e

añadido 128 paquetes de 151 contribuidores y auditado 233 paquetes en 9.055s

Eliminando el contenedor intermedio c309bf6f218e

--->
 49e652884562

Paso 6/9 : EJECUTE npm install -g nodemon

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

¿Le gusta nodemon? Ahora puede apoyar el proyecto a través del colectivo abierto:

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

  nodemon@1.19.1

añadido 221 paquetes de 128 contribuidores en 18.856s

Eliminando el contenedor intermedio 0ed5d7f3642b

--->
 32c55606f35e

Paso 7/9 : COPIAR . /var/www/app

--->
 a618b38a2812

Paso 8/9 : EXPONGA 3000

--->
 Ejecutando en bea389ab3ef1

Eliminando el contenedor intermedio bea389ab3ef1

--->
 684bbfb31371

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

--->
 Ejecutando en 9aa1b72e4a4e

Eliminando el contenedor intermedio 9aa1b72e4a4e

--->
 35dcb3df9806

Construido con éxito 35dcb3df9806

Etiquetado con éxito mean_express:latest

Creando mean_angular_1_de44b3f5b988 ... hecho

Creando mean_database_1_708f8f9c3c33 ... hecho

Creación de mean_express_1_b57a483a72ee ... hecho

Adjuntando a 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 | &gt

database_1_ccc5c677e00b | 2019-07-20T22:33:25.933 0000 I CONTROL [main] Deshabilitación automática de TLS 1.0, para forzar la habilitación de TLS 1.0 especifique --sslDisabledProtocols 'none'

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] MongoDB iniciando : 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] versión git: c389e7f69f637f7a1ac3cc9fae843b635f20b766

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] Versión de OpenSSL: OpenSSL 1.0.2g 1 Mar 2016

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

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] módulos: ninguno

database_1_ccc5c677e00b | 2019-07-20T22:33:25.937 0000 I CONTROL [initandlisten] entorno de compilación:

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] 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 ./bin/www

express_1_574f07b045fc | [nodemon] 1.19.1

express_1_574f07b045fc | [nodemon] para reiniciar en cualquier momento, introduzca `rs`

express_1_574f07b045fc | [nodemon] viendo: *.*

express_1_574f07b045fc | [nodemon] iniciando `node ./bin/www`

database_1_ccc5c677e00b | 2019-07-20T22:33:33.543 0000 I RED [listener] conexión aceptada desde 172.19.0.4:38958 #1 (1 conexión abierta ahora)

database_1_ccc5c677e00b | 2019-07-20T22:33:33.560 0000 I RED [conn1] recibidos metadatos de cliente desde 172.19.0.4:38958 conn1: { controlador: { nombre: "nodejs", versión: "3.0.1" }, os: { tipo: "Linux", nombre: "linux", arquitectura: "x64", versión: "4.18.0-25-generic" }, plataforma: "Node.js v8.16.0, LE, mongodb-core: 3.0.1" }

express_1_574f07b045fc | mongodb: conectado

angular_1_f257e2233ef1 | ** NG Live Development Server está escuchando en 0.0.0.0:4200, abra su navegador en http://localhost:4200/ **

angular_1_f257e2233ef1 | Fecha: 2019-07-21T11:21:03.868Z - Hash: 639d9a968476ed482b5c - Tiempo: 336ms

angular_1_f257e2233ef1 | 4 chunks sin cambios

angular_1_f257e2233ef1 | chunk {main} main.bundle.js (main) 19.8 kB [inicial] [renderizado]

angular_1_f257e2233ef1 |

angular_1_f257e2233ef1 | webpack: Compilado con éxito.

angular_1_f257e2233ef1 | webpack: Compilando...

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

angular_1_f257e2233ef1 | 4 chunks sin cambios

angular_1_f257e2233ef1 | chunk {main} main.bundle.js (main) 19.8 kB [inicial] [renderizado]

angular_1_f257e2233ef1 |

angular_1_f257e2233ef1 | webpack: Compilado con éxito.

Vaya a su navegador y compruebe https://localhost:4200, su aplicación estará en funcionamiento.

angular - docker compose

Vaya a https://localhost:3000 para comprobar si se está ejecutando un servidor express.

express - docker compose

También, puede ejecutar el comando docker images para ver que todas las imágenes están presentes en docker.

geekflare@geekflare:~/mean$ docker images

REPOSITORIO ETIQUETA IMAGEN ID CREADO TAMAÑO

mean_express latest 35dcb3df9806 hace 14 horas 923MB

mean_angular latest 9f8d61db600c hace 14 horas 1.29GB

node 8 8e45c884a32e hace 9 días 895MB

mongo latest 785c65f61380 hace 2 semanas 412MB

Ejecute el siguiente comando para ver los contenedores que se ejecutan dentro de docker.

geekflare@geekflare:~/mean$ docker ps

CONTENEDOR ID IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRES

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..." hace 14 horas Arriba 14 horas 0.0.0.0:27017->27017/tcp mean_database_1_ccc5c677e00b

260ef1e52dab mean_angular "docker-entrypoint.s..." Hace 14 horas Arriba 14 horas 0.0.0.0:4200->4200/tcp mean_angular_1_f257e2233ef1

Así que ahora, los tres contenedores docker están en marcha y funcionando.

Docker-compose se encargó de ejecutar todos los contenedores con facilidad. Este fue un ejemplo simple para ejecutar tres contenedores; se puede imaginar lo útil que será si las aplicaciones tienen que ser lanzadas en 100s de contenedores. Siga adelante y pruebe para ver cómo funciona.

More on Docker