Valida un docker-compose antes de desplegar en Coolify verificando puertos, credenciales, healthchecks, volúmenes y reglas de seguridad obligatorias.
Este skill te ayuda a validar que tu docker-compose.yml cumple todas las reglas obligatorias antes de desplegarlo en Coolify. Previene errores comunes que causan fallos en producción.
SIN puertos del host en servicios web
ports: "80:80" en servicios HTTP/HTTPSports: "8080:8080" en APIsexpose: en su lugarSIN puertos expuestos para bases de datos
ports: "5432:5432" (PostgreSQL)ports: "3306:3306" (MySQL)ports: "6379:6379" (Redis)SIN network_mode: host
network_mode: host causa conflictos con TraefikSIN credenciales hardcodeadas
environment: DB_PASSWORD: "mi_password"environment: DB_PASSWORD: ${DB_PASSWORD}SIN imágenes con tag latest
image: postgres:latestimage: postgres:16-alpineSIN omisión de restart policy
restart: o restart: norestart: unless-stoppedPuerto interno documentado
expose: con su puertoApps escuchando en 0.0.0.0
localhost o 127.0.0.1Volúmenes persistentes definidos
volumes: explícitosHealthchecks en servicios críticos
healthcheck: test: ["CMD", ...]Dependencias correctamente definidas
depends_on con condition: service_healthydepends_on: [db] sin condiciónVariables de entorno organizadas
Preferir alpine en imágenes
node:18-alpine en lugar de node:18User no-root cuando sea posible
user: node en Nodeuser: www-data en PHPAbre tu docker-compose.yml y busca:
# Busca puertos mapeados en servicios web
grep -n "ports:" docker-compose.yml
# Busca credenciales directas (excepto en .env)
grep -n "DB_PASSWORD\|API_KEY\|SECRET" docker-compose.yml
# Busca latest tags
grep -n ":latest" docker-compose.yml
# Busca network_mode: host
grep -n "network_mode: host" docker-compose.yml
Acción: Si encuentras algo, elimínalo antes de continuar.
Para cada servicio en el compose:
expose: o documentación del puerto?restart: unless-stopped?${VAR}?Para cada dependencia:
depends_on con condition: service_healthydb:5432)