Files
whatsapp/docker-compose.yml
T
Lizandro Guarnizo 6807da8a2b fix: conectar app a red 'coolify' donde vive Redis de Coolify
El contenedor Redis (zqmfom0vw6nj3ae66mkwxek1) vive en la red 'coolify'.
La app estaba solo en la red nj05x5... → DNS SERVFAIL → health.php tardaba
10-12s intentando conectar → healthcheck timeout → unhealthy → 'no available server'.

Solución: declarar red coolify como external y conectar el servicio app.
Fix inmediato aplicado manualmente con: docker network connect coolify <container>
2026-03-12 16:58:44 -05:00

87 lines
2.7 KiB
YAML

services:
# Aplicación PHP con Nginx y Workers
app:
build:
context: .
dockerfile: Dockerfile
# container_name: NO definir — Coolify asigna su propio nombre
restart: unless-stopped
# Coolify/Traefik gestiona el enrutamiento - no exponer puertos al host
expose:
- "80"
volumes:
# NO montar ./:/var/www/html — sobreescribiría el código del contenedor en prod
# Coolify usa named volumes para logs y uploads (persistencia entre deploys)
- app-logs:/var/www/html/logs
- app-uploads:/var/www/html/uploads
environment:
- APP_ENV=${APP_ENV:-production}
- DB_HOST=${DB_HOST}
- DB_PORT=${DB_PORT:-3306}
- DB_NAME=${DB_NAME}
- DB_USER=${DB_USER}
- DB_PASS=${DB_PASS}
# Redis gestionado por Coolify — configurar REDIS_HOST en env vars de Coolify
- REDIS_HOST=${REDIS_HOST:-127.0.0.1}
- REDIS_PORT=${REDIS_PORT:-6379}
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
- WHATSAPP_TOKEN=${WHATSAPP_TOKEN}
- WHATSAPP_PHONE_NUMBER_ID=${WHATSAPP_PHONE_NUMBER_ID}
- WEBHOOK_VERIFY_TOKEN=${WEBHOOK_VERIFY_TOKEN}
- LOG_LEVEL=${LOG_LEVEL:-INFO}
- ENABLE_RATE_LIMIT=${ENABLE_RATE_LIMIT:-true}
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost/health.php || curl -sf http://localhost/ || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
networks:
- coolify
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# MySQL Database (DESHABILITADO - usando BD externa)
# Descomenta si quieres usar MySQL en Docker
# db:
# image: mysql:8.0
# container_name: whatsapp-bot-db
# restart: unless-stopped
# ports:
# - "${DB_PORT:-3306}:3306"
# environment:
# MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
# MYSQL_DATABASE: ${DB_NAME:-whatsapp_bot}
# MYSQL_USER: ${DB_USER:-whatsapp_user}
# MYSQL_PASSWORD: ${DB_PASS}
# MYSQL_CHARACTER_SET_SERVER: utf8mb4
# MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
# volumes:
# - db-data:/var/lib/mysql
# - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
# networks:
# - whatsapp-network
# healthcheck:
# test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD}"]
# interval: 10s
# timeout: 5s
# retries: 5
# start_period: 30s
# command: --default-authentication-plugin=mysql_native_password --max_connections=500
# Redis: gestionado como Database Resource en Coolify (externo)
# Worker: corre dentro del contenedor app vía Supervisor
volumes:
app-logs:
driver: local
app-uploads:
driver: local
networks:
coolify:
external: true