Docker Mastery notes para Windows parte 3
Docker compose
-
Ayudan a configurar relaciones entre containers
-
Guardan configuraciones en un archivo
Comprendido por cosas separadas pero relacionadas:
-
el archivo YAML que contiene informacion de los containers, networks y volumes.
-
el CLI docker-compose
archivo YAML docker-compose.yml
Este archivo maneja sus propias versiones: 1, 2, 2.1, 3, 3.1
Asi se ve un docker-compose de una app con frontend y backend con react, express y mongo.
version: "3.7"
services:
frontend:
build: frontend
ports:
- 3000:3000
stdin_open: true
volumes:
- ./frontend:/usr/src/app
- /usr/src/app/node_modules
container_name: frontend
restart: always
networks:
- react-express
depends_on:
- backend
backend:
container_name: backend
restart: always
build: backend
volumes:
- ./backend:/usr/src/app
- /usr/src/app/node_modules
depends_on:
- mongo
networks:
- express-mongo
- react-express
expose:
- 3000
mongo:
container_name: mongo
restart: always
image: mongo:4.2.0
volumes:
- ./data:/data/db
networks:
- express-mongo
expose:
- 27017
networks:
react-express:
express-mongo:
Se pueden ver mas ejemplos de archivos docker-compose en este repo de docker
Se puede ver mas info de los comandos con docker-compose --help
Docker-compose CLI
Ya viene al instalar docker en windows
No se recomienda para produccion pero si para etapas de desarrollo
Los comandos mas comunes son
docker-compose up
docker-compose down
Ejemplo 1
Crear un archivo compose con
- la imagen
drupal
a treves de la imagen de postgres - el puerto 8080 para usar el localhost:8080
- setear la contraseña con POSTGRES_PASSWORD
pasos:
-
crear archivo
docker-compose.yml
con VSCode -
Escribir en el archivo
version: '2'
services:
drupal:
image: 'drupal'
ports:
-"8080:80"
volumes:
- drupal-modules:/var/www/html/modules
- drupal-profiles:/var/www/html/profiles
- drupal-sites:/var/www/html/sites
- drupal-themes:/var/www/html/themes
postgres:
image: postgres
enviroment:
- POSTGRES_PASSWORD=mypasswd
volumes:
drupal-modules:
drupal-profiles:
drupal-sites:
drupal-themes:
- correr en la consola
docker-compose up
para este caso con drupal hay que hacer cambios en la configuracion de drupal, ya que toma como database a localhost cuando deberia tomar a postgres.
-
detener el container
docker-compose down
el volume seguira corriendo tambien, para detenerlo hay agregar el -v
al final