Esta guía asume que sabes lanzar un contenedor con docker run. Cubrimos instalación, estructura básica, secretos y operación del día a día.
Instalar Docker Engine y el plugin Compose
Usa el script oficial de Docker, no el paquete docker.io de Ubuntu: este último no trae el subcomando docker compose.
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER # cierra sesión y vuelve a entrar
docker compose version
Estructura de un compose limpio
Servicios arriba, redes y volúmenes con nombre al final. Sin la línea version:, que está obsoleta desde Compose v2.
services:
web:
image: nginx:1.27-alpine
restart: unless-stopped
ports: ["127.0.0.1:8081:80"]
volumes:
- ./html:/usr/share/nginx/html:ro
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost"]
interval: 30s
networks: [internal]
networks:
internal:
Docker se salta UFW
Un puerto publicado sin IP ("80:80") queda abierto a Internet aunque UFW lo bloquee. Si el servicio va detrás de un proxy, publícalo en 127.0.0.1.
Variables y secretos en un .env
Compose lee automáticamente un archivo .env en la misma carpeta. Mantén las credenciales fuera de Git.
DB_PASSWORD=una-clave-larga-y-aleatoria
DOMAIN=tudominio.com
TZ=Europe/Madrid
Comandos del día a día
Estos cuatro cubren casi todo lo que vas a necesitar.
docker compose up -d # arrancar en segundo plano
docker compose ps # estado de los contenedores
docker compose logs -f web # seguir los logs de un servicio
docker compose pull && docker compose up -d # actualizar imágenes
Copias de seguridad
Antes de cualquier docker compose down de un servicio con datos, asegúrate de tener una copia reciente de sus carpetas. Un tar czf sobre la carpeta suele bastar.
¿Prefieres que lo haga por ti?
Docker va incluido en los servicios que lo necesitan. Si quieres migrar tu propia aplicación a contenedores, pídeme presupuesto.