Capítulo 6 · 6.2
Su carpeta de trabajo con compose.yaml, .env y Caddy
Con docker compose describe todos sus contenedores en un solo archivo. En este manual, todas las aplicaciones están en la carpeta /srv/diensten, con Caddy como puerta de entrada que gestiona el https de cada aplicación. Las recetas del capítulo 7 van añadiendo cada vez una parte a este archivo. Cómo colaboran compose y el cortafuegos se explica en Docker compose y el cortafuegos del curso VPS y administración de servidores Linux.
La carpeta y los archivos
anna@web1:~$ sudo mkdir -p /srv/diensten
anna@web1:~$ cd /srv/diensten
anna@web1:/srv/diensten$ sudo nano compose.yaml
Empiece solo con Caddy:
services:
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
volumes:
caddy-data:
caddy-config:
Y el Caddyfile en la misma carpeta:
{
email beheer@example.com
}
Ya no es necesaria una línea version: al principio; todavía la verá en ejemplos antiguos.
Iniciar y consultar
anna@web1:/srv/diensten$ sudo docker compose up -d
anna@web1:/srv/diensten$ sudo docker compose ps
anna@web1:/srv/diensten$ sudo docker compose logs -f caddy
up -d inicia todo en segundo plano. Con Ctrl+C deja de seguir los registros; los contenedores siguen funcionando. Si modifica el Caddyfile, vuelva a cargarlo con:
anna@web1:/srv/diensten$ sudo docker compose exec -w /etc/caddy caddy caddy reload
Secretos en .env
Las contraseñas y los tokens no se ponen en compose.yaml, sino en un archivo .env en la misma carpeta. En compose.yaml hace referencia a ellos con ${NAAM}.
anna@web1:/srv/diensten$ sudo nano .env
anna@web1:/srv/diensten$ sudo chmod 600 .env
No ponga nunca .env en Git y no lo comparta.
¿Caddy ya está instalado como servicio en su servidor?
Si ha instalado Caddy o nginx como en el capítulo 5, los puertos 80 y 443 ya están ocupados. Elija una de estas dos opciones:
- Desactive el servicio en el servidor (
sudo systemctl disable --now caddyonginx) y traslade sus sitios al Caddyfile en/srv/diensten. Es lo que presuponen las recetas. - O mantenga el servicio en el servidor, omita Caddy en compose y publique cada aplicación solo en
127.0.0.1(consulte Docker y el cortafuegos: publicar puertos de forma segura). En ese caso, cree un proxy inverso para cada aplicación como en Una aplicación detrás de un proxy inverso.
