Valida que un docker-compose.yml cumpla con todas las reglas obligatorias de Coolify (sin ports en web, sin network_mode host, credenciales en variables, versiones fijas, restart policies, healthchecks, expose definido, volúmenes persistentes, etc.)
Este skill te ayuda a asegurar que cualquier docker-compose.yml que generes o modifiques cumple con las reglas obligatorias del entorno Coolify de producción (VPS Contabo + Cloudflare). Evita errores comunes que causarían fallos en despliegue.
Puertos expuestos en servicios web: No ports: (ej. "80:80", "8080:8080") en servicios que serán enrutados por Traefik/Coolify.
expose: en lugar de ports:ports: ["8080:8080"]network_mode: host: Nunca usar, rompe el aislamiento de contenedores.
Credenciales hardcodeadas: No valores sensibles en claro (passwords, API keys, tokens).
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}POSTGRES_PASSWORD: mipassword123Imágenes sin versión fija: No usar latest o tags flotantes.
postgres:16-alpine, node:18.20.1-alpine3.18postgres:latest, node:alpineFalta de restart: unless-stopped: Obligatorio en producción para recuperación ante fallos.
expose: o puerto documentado: Cada servicio debe indicar dónde escucha (preferir expose: sobre ports:).
Apps escuchan en 0.0.0.0: No solo en localhost o 127.0.0.1.
healthcheck en servicios críticos (DB, API, cache).
depends_on con condition: service_healthy si hay dependencias.
Volúmenes persistentes para datos (BD, uploads, config).
Variables de entorno bien organizadas y documentadas.
Usuario no-root (user: non-root) si la imagen lo soporta.
Imágenes alpine cuando esté disponible (más livianas).
Proporciona el archivo docker-compose.yml que deseas validar (completo o el servicio específico).
Verifico cada regla:
# Ejemplo de FALLO