Creación de un escenario con varios contenedores con docker compose

Í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
comments powered by Disqus

Relacionados

Creación y configuración de un sistema de ficheros en Debian 12

En este post se plantea un caso práctico en el que se emplean varios comandos para la configuración de sistemas de ficheros en Debian. En concreto, se trata de un ejemplo en el que se instala Debina 12 en una máquina con recursos limitados en VirtManager y, posteriormente, se amplía el espacio de almacenamiento añadiendo un nuevo disco duro y clonando el sistema en él.

Leer

Cómo instalar qemu/kvm en Debian 12 para virtualizar equipos

Qemu es un potente virtualizador que permite el uso de máquinas virtuales en equipos que usen sistemas operativos basados en Debian y otras distribuciones GNU/Linux. Este software se complementa a la perfección con VirtManager, que ofrece una interfaz gráfica amigable para realizar todas las tareas relacionadas con la virtualización.

Leer

Despliegue de aplicaciones usando variables de entorno en Kubernetes

Para usar variables de entorno en el despliegue de aplicaciones en Kubernetes se usan recursos como los ConfigMap o los Secrets.

Leer