Ejemplo 1: Despliegue de la aplicación guestbook¶
En este ejemplo vamos a desplegar con Docker Compose la aplicación guestbook, que estudiamos en el módulo de redes: Ejemplo 1: Despliegue de la aplicación Guestbook.
Puedes encontrar el fichero docker-compose.yaml en en este directorio del repositorio.
En el fichero docker-compose.yaml vamos a definir el escenario. El comando docker compose se debe ejecutar en el directorio donde este ese fichero.
version: '3.1'
services:
app:
container_name: guestbook
image: iesgn/guestbook
restart: always
environment:
REDIS_SERVER: redis
ports:
- 8080:5000
db:
container_name: redis
image: redis
restart: always
command: redis-server --appendonly yes
volumes:
- redis:/data
volumes:
redis:
Veamos algunas observaciones:
- Aunque ya sabemos que la variable de entorno
REDIS_SERVERtiene el valorredispor defecto, la hemos indicado indicando el nombre del contenedor redis. - Podríamos haber usado también el nombre del servicio, es decir,
REDIS_SERVER: db, ya que, como hemos comentado, la resolución se puede hacer usando el nombre del contenedor o el nombre del servicio. - Como vimos en el ejemplo del módulo 3, al crear el contenedor tenemos que ejecutar el comando
redis-server --appendonly yespara que redis guarde la información de la base de datos en el directorio/datos. Para indicar el comando que hay que ejecutar al crear el contenedor usamos el parámetrocommand. - Por último indicar que hemos uso un volumen docker llamado
redispara guardar la información de la base de datos (en el módulo3 usamos un bind mount).
Para crear el escenario:
$ docker compose up -d
[+] Running 4/4
✔ Network guestbook_default Created 0.3s
✔ Volume "guestbook_redis" Created 0.0s
✔ Container redis Started 0.5s
✔ Container guestbook Started 0.5s
Para listar los contenedores:
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
guestbook iesgn/guestbook "python3 app.py" app 18 seconds ago Up 16 seconds 0.0.0.0:8080->5000/tcp, :::8080->5000/tcp
redis redis "docker-entrypoint.sh redis-server --appendonly yes" db 18 seconds ago Up 16 seconds 6379/tcp
Para parar los contenedores:
$ docker compose stop
[+] Stopping 2/2
✔ Container guestbook Stopped 0.8s
✔ Container redis Stopped 0.8s
Para eliminar el escenario:
$ docker compose down
[+] Running 3/3
✔ Container redis Removed 0.0s
✔ Container guestbook Removed 0.0s
✔ Network guestbook_default Removed 0.3s
Recuerda que para eliminar también el volumen usaremos docker compose down -v.