Docker Compose describe un stack multicontenedor en un solo archivo y lo corre con un comando. Esta es la guía de despliegue; primero instala Docker si no lo has hecho. Para un stack específico de agentes de IA (agente + base vectorial + Redis), consulta docker-compose para agentes de IA.
1. Un stack: app + base de datos + reverse proxy
# /opt/stack/docker-compose.yml
services:
app:
image: your/app:latest
restart: unless-stopped
env_file: [.env]
depends_on: [db]
# no ports: — reached only through the proxy below
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes: ["pg:/var/lib/postgresql/data"] # internal only
caddy: # HTTPS automatically
image: caddy:2
restart: unless-stopped
ports: ["80:80", "443:443"] # the only public entrypoint
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
volumes: { pg: {}, caddy_data: {} }
Los secretos viven en .env, nunca en el archivo compose:
# /opt/stack/.env (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string
Un Caddyfile mínimo hace de proxy de tu dominio a la app y obtiene HTTPS por su cuenta:
app.yourdomain.com {
reverse_proxy app:8080
}
2. Levántalo
cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app
restart: unless-stopped en cada servicio + Docker habilitado al arranque = el stack vuelve por sí solo tras un reboot.
3. Comandos del día a día
docker compose pull && docker compose up -d # update images
docker compose down # stop the stack
docker compose restart app # restart one service
La parte que la gente hace mal: puertos expuestos
Docker publica los puertos a través de iptables, así que un contenedor con ports: ["5432:5432"] es accesible desde internet incluso tras un firewall UFW que creías cerrado. Publica solo el punto de entrada público (el proxy en 80/443); mantén las bases de datos y cachés en la red compose o vinculadas a 127.0.0.1. Todo lo que sirva tráfico web necesita un plan de IP dedicada; combínalo con un firewall UFW.
Para todo un stack tras una IP, consulta autohospedar varios servicios. Root en un minuto aproximadamente, NVMe, sin KYC, pago en cripto.
Comentarios
Aún no hay comentarios. Sé el primero.