Creación de un escenario con varios contenedores con docker compose
- Francisco Javier Huete
- Implantacion
- February 24, 2025
Índice
Para implantar una aplicación nextcloud en un contenedor docker conectada a otro contenedor con una base de datos MariaDB se puede usar un fichero docker compose para configurar el escenario.
El contenido de este fichero se escribe en formato yaml. En este caso, se definen los dos contenedores, uno para nextcloud y otro para MariaDB, así como el volumen para almacenar la información de la base de datos.
services:
app:
container_name: nextcloud
image: nextcloud:latest
restart: always
environment:
MYSQL_DATABASE: bd_nextcloud
MYSQL_USER: user_nextcloud
MYSQL_PASSWORD: asdasd
MYSQL_HOST: mariadb
ports:
- 8080:80
depends_on:
- db
db:
container_name: mariadb
image: mariadb:latest
restart: always
environment:
MYSQL_DATABASE: bd_nextcloud
MYSQL_USER: user_nextcloud
MYSQL_PASSWORD: asdasd
MYSQL_ROOT_PASSWORD: asdasd
volumes:
- mariadb:/var/lib/mysql
volumes:
mariadb:
Para levantar el escenario con ambos contenedores y hacerlo, además, de forma desatendida se usa el comando docker compose up
.
debian@docker:~/nextcloud$ docker compose up -d
[+] Running 4/4
✔ Network nextcloud_default Created 0.1s
✔ Volume "nextcloud_mariadb" Created 0.0s
✔ Container mariadb Started 0.4s
✔ Container nextcloud Started 0.8s
La herramienta docker compose también permite realizar determinadas acciones sobre los contenedores que conforman un escenario. En este caso, por ejemplo, se pueden listar ambos contenedores.
docker compose ps
En concreto, en este fichero docker compose se configura, además, la creación de un volumen.
debian@docker:~$ docker volume ls
DRIVER VOLUME NAME
...
local nextcloud_mariadb
Y, como cualquier otro fichero docker compose, su ejecución genera también una red virutal de tipo bridge.
debian@docker:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
...
f6167b095613 nextcloud_default bridge local
Cuando se terminan de utilizar los contenedores del escenario levantado a partir del fichero docker compose se pueden eliminar con el comando docker compose down
. Al usar la opción -v
se eliminan también los volúmenes creados al levantar el escenario con el fichero docker compose.
debian@docker:~/nextcloud$ docker compose down -v
[+] Running 4/4
✔ Container nextcloud Removed 3.3s
✔ Container mariadb Removed 10.2s
✔ Volume nextcloud_mariadb Removed 0.0s
✔ Network nextcloud_default Removed 0.2s