Posted by q3it on viernes, diciembre 31, 2021 in Micro-servicios
Es una herramienta que nos permite describir de forma declarativa la arquitectura de nuestra aplicación, utiliza composefile (docker-compose.yml).
permite definir y ejecutar entornos Docker de varios contenedores. Puede configurar los servicios de su aplicación en un archivo Compose y luego iniciar y detener todos los servicios desde este archivo de configuración.
YAML (YAML Ain't Markup Language), estándar de serialización de datos amigable para los humanos, para su formato de archivo de configuración.[1]
Crear el archivo docker-compose.yml
Dockerfile -> describer de manera imperativa (paso a paso) la arquitectura de nuestra aplicación
docker-compose.yml -> describir de forma declarativa la arquitectura de nuestra aplicación
version: "3"
services:
app:
image: nodeapp
environment:
MONGO_URL: "mongodb://db:27017/test"
depends_on:
- db
ports:
- "3000:3000"
db:
image: mongo
docker-compose up para crear el build de la imagen.
- Docker compose es una herramienta que nos permite describir de forma declarativa la arquitectura de nuestra aplicación.
- utiliza composefile (docker-compose.yml).
- Un servicio puede tener más de un contenedor.
- depends on: -db -> indica que el servicio depende de otro servicio llamado db, así que debe inicializar primero el servicio del cual depende.
- docker-compose up -> corre todo con un solo comando (red virtual, contenedores, etc).
Trabajando con docker-compose
Detener contenedores en docker-compose
docker-compose down
Para los contenedores y los borra incluyendo el network
Entrar a un contenedor montado con docker-compose
docker-compose exec <nombre del contenedor> bash
Ej: docker-compose exec app bash
Ver logs de los contenedores montados con docker-compose
docker-compose logs
Para filtrar:
docker-compose logs <keyword>
Ej: docker-compose logs app
Ver el status de docker-compose
docker-compose ps
Ejecutar contenedores en segundo plano docker-compose
docker-compose up -d
No muestra el output
-d = —detach Corre en segundo plano
Escalar contenedores
para escalar contenedores y hallan más estos para atender las solicitudes, se puede usar el comando: docker-compose scale [nombre_contenedor]=[cantidad_contenedores]
docker-compose scale app=4
al momento de ejecutar esto, si no está preparado el archivo de docker-compose.yaml nos dará error porque ya se están usando los puertos de la maquina local, al intenta asignar el mismo que ya está en uso:
docker-compose scale app=4
al momento de ejecutar esto, si no está preparado el archivo de docker-compose.yaml nos dará error porque ya se están usando los puertos de la maquina local, al intenta asignar el mismo que ya está en uso:
version: "3"
services:
app:
build:
environment:
MONGO_URL: "mongodb://db:27017/test"
depends_on:
- db
ports:
- "3000-3010:3000"
volumes:
- .:/usr/src
- /usr/src/node_modules
db:
image: mongo
agregando un rango de puertos a usar de la maquina local en: ports:
- "3000-3010:3000"
services:
app:
build:
environment:
MONGO_URL: "mongodb://db:27017/test"
depends_on:
- db
ports:
- "3000-3010:3000"
volumes:
- .:/usr/src
- /usr/src/node_modules
db:
image: mongo
agregando un rango de puertos a usar de la maquina local en: ports:
- "3000-3010:3000"
Esto se resuelve usando un contenedor para el balanceo, por ejemplo haproxy.
version: "3"
services:
app:
build:
environment:
MONGO_URL: "mongodb://db:27017/test"
depends_on:
- db
db:
image: mongo
lb:
image: dockercloud/haproxy
links:
- app
ports:
- '80:80'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Ref: [1] https://runnable.com/docker/introduction-to-docker-compose
version: "3"
services:
app:
build:
environment:
MONGO_URL: "mongodb://db:27017/test"
depends_on:
- db
db:
image: mongo
lb:
image: dockercloud/haproxy
links:
- app
ports:
- '80:80'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Ref: [1] https://runnable.com/docker/introduction-to-docker-compose