¿QUÉ ES DOCKER COMPOSE?
Compose para Docker es una herramienta que nos permite definir y correr aplicaciones con multi contenedores, una vez definida la configuración mediante el comando docker-compose y sus parámetros podemos crear y lanzar las aplicaciones de forma conjunta y con una línea de comandos.
Además Compose nos permite trabajar con diferentes entornos como Production, Staging, Development y Testing, permitiendo crear un entorno de integración continua.
La configuración de Compose se realiza en un fichero con formato YAML, con la extensión yml, es decir, todos nuestros ficheros de configuración se denominarán: docker-compose.yml.
YAML fue creado bajo la creencia de que todos los datos pueden ser representados adecuadamente como combinaciones de listas, hashes y datos escalares, la sintaxis es relativamente sencilla y muy legible, algunas características de este fichero son:
- Los contenidos en YAML se describen utilizando el conjunto de caracteres imprimibles de Unicode, bien en UTF-8 o UTF-16.
- La estructura del documento se denota indentando con espacios en blanco y no se permite el uso de caracteres de tabulación para sangrar.
- Los miembros de las listas se denotan encabezados por un guion ( – ) con un miembro por cada línea, …
- Para ver más detalles puedes consultar algiunas características adiciones en la Wikipedia: Wiki YAML Características
Cómo nos indican en la documentación oficial todo fichero de docker se puede establecer en 3 pasos:
- Creacion del fichero Dockerfile de nuestra aplicación
- Creación de los servicios en el fichero docker-compose.yml con las indicaciones para la construcción y lanzamiento de nuestra aplicación.
- Finalmente ya podremos utilizar el comando docker-compose up para crear y lanzar nuestra aplicación con multi contenedores.
Ejemplo de fichero docker-compose.yml
Ejemplo de como sería la estructrura de un fichero docker-compose.yml, esto simplemente es un esqueleto para que os hagáis una idea de como se estructura:
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
depends_on:
- db
db:
image: mysql:5.7
restart: unless-stopped
ports:
- 3307:3306
environment:
MYSQL_ROOT_PASSWORD:rootpass
MYSQL_PASSWORD:mysqlpass
MYSQL_USER: mysqluser
SERVICE_NAME: mysql
volumes:
logvolume01: {}
Documentación
- Overview of Docke Compose: documentación oficial de compose con Docker, desde aquí tiene acceso a toda la documentación detallada y con ejemplos: