Appearance
Docker Compose
Docker Compose busca simplificar la gestión de contenedores de Docker cuando se requiren combinar servicios o aplicaciones con varios componentes, es decir, para múltiples contenedores que se comunican o enlazan, sugiriendo el uso de contenedor por servicio. Esta herramienta generaría "scripts" de docker simplemente indicando especificaciones en un archivo de tipo YAML.
En lugar de hacer "scripts" de comandos complejos y largos con Dockerfile, se define otro archivo de nombre docker-compose.yml con ciertos criterios a nivel declarativo y el archivo Dockerfile sólo se usaría para definir aspectos básicos del contenedor (semejante a los ejemplos que suelen ser sencillos).
Por tanto, se usa para crear multiples entornos aislados en un solo anfitrión y proporcionar una manera conveniente para que los desarrolaldores cuenten fácilmente con un entorno de desarrollo.
Este documento tiene un alcance sencillo y ágil a modo de abre bocas. Superado este alcance, para conocer más de este tema deberá investigarse.
Ejemplo de archivo para Docker Compose
Veamos un ejemplo de la estructura del contenido con un archivo docker-compose.yml:
yaml
version: "3.8"
services:
proxy:
image: traefik:chevrotin
command: --providers.docker
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
nginx:
image: nginx
labels:
- "traefik.http.routers.nginx.rule=Host(`nginx.domain.com`)"
apache:
image: httpd
labels:
- "traefik.http.routers.apache.rule=Host(`apache.domain.com`)"Intalación de Docker Compose
Para instalar Docker Compose en Linux Debian, por ejemplo, se ejecuta:
bash
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composeLa configuración establecida en el archivo docker-compose.yml se lanza con el comando:
shell
docker-compose up -d// instalacion en macOS En macOS, si se ha instalado Docker con Colima, ya se dispone de Docker Compose. En caso contrario, se puede instalar con brew:
bash
brew install docker-composeEjemplos con bases de datos y Docker Compose
Veamos algunos ejemplos con bases de datos. En estos casos se recomienda usar volúmenes para persistir la información, es decir, que no se pierda al detener el contenedor.
Ejemplo con MongoDB
yaml
version: "3.8"
services:
db:
image : mongo
environment:
- PUID=1000
- PGID=1000
volumes:
- mongodb:/datadb
ports:
- 27017:27017
container_name: mongodb
restart: unless-stopped
volumes:
mongodb:
driver: localPara lanzar el contenedor e interactuar con la base de datos ejecutamos lo siguiente:
bash
docker-compose up -d
sudo docker exec -it mongodb bashUna vez se ingresa al contenedor se puede crear la base de datos con: use ....
Ejemplo con MariaDB
yaml
version: "3.8"
services:
db:
image : mariadb
environment:
- MYSQL_ROOT_PASSWORD=password
volumes:
- type: bind
source: ./my.cnf
target: /etc/mysql/my.cnf
ports:
- 3306:3306
restart: unless-stoppedEjemplo con PostgreSQL
yaml
version: "3.8"
services:
db:
image : postgres
environment:
- POSTGRES_DB=mytest
- POSTGRES_USER=myuser
- POSTGRES_PASSWORD=password
volumes:
- postgres:/var/lib/postgresql/data
ports:
- '5432:5432'
restart: unless-stopped
volumes:
postgres:
driver: localComandos esenciales con docker-compose
Podemos citar los siguientes comandos esenciales para el archivo docker-compose:
| Comando | Descripción |
|---|---|
docker-compose build | Construye los contenedores asociados a la composición |
docker-compose rm | Elimina los contenedores asociados a la composición |
docker-compose up | Sube todos los contenedores asociados. -d para correr en segundo plano |
docker-compose down | Detiene todos los contenedores asociados |
docker-compose run | Ejecuta comandos para la composición de contenedores |
docker-compose logs | Muestra "logs" para la composición de contenedores |
© 2020 by César Arcila