diff --git a/docker-compose.yml b/docker-compose.yml index 89f1b3f..cb7322d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,9 @@ -# Archivo: docker-compose.yml (Versión Final Corregida) +# Archivo: docker-compose.yml +# Version: unificada-1.2-coolify-ready +# Descripción: Stack completo para n8n y Evolution API con servicios compartidos. +# Optimizado para despliegue en Coolify a través de Git: +# - Sin mapeo de puertos al host. +# - Con sintaxis de healthcheck corregida. version: '3.8' @@ -9,15 +14,36 @@ services: container_name: n8n_service restart: always environment: - # ... (tus variables de n8n están aquí, no se tocan) - # LA SECCIÓN 'ports' HA SIDO ELIMINADA DE AQUÍ + # Las variables se cargarán desde la UI de Coolify + - N8N_HOST=${N8N_HOST} + - N8N_EDITOR_BASE_URL=${SERVICE_FQDN_N8N} + - WEBHOOK_URL=${SERVICE_FQDN_N8N} + - GENERIC_TIMEZONE=${TZ} + - TZ=${TZ} + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_USER=${POSTGRES_USER} + - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} + - DB_POSTGRESDB_DATABASE=${N8N_DB_NAME} + - DB_POSTGRESDB_SCHEMA=public + - N8N_EMAIL_MODE=${N8N_EMAIL_MODE} + - N8N_SMTP_HOST=${N8N_SMTP_HOST} + - N8N_SMTP_PORT=${N8N_SMTP_PORT} + - N8N_SMTP_USER=${N8N_SMTP_USER} + - N8N_SMTP_PASS=${N8N_SMTP_PASS} + - N8N_SMTP_SENDER=${N8N_SMTP_SENDER} + - N8N_SMTP_SSL=${N8N_SMTP_SSL} volumes: - n8n_data:/home/node/.n8n depends_on: postgres: condition: service_healthy healthcheck: - # ... (sin cambios) + test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/healthz || exit 1"] + interval: 30s + timeout: 10s + retries: 5 #--- EVOLUTION API SERVICE ---# api: @@ -25,23 +51,55 @@ services: container_name: evolution_api_service restart: always environment: - # ... (tus variables de api están aquí, no se tocan) - # LA SECCIÓN 'ports' HA SIDO ELIMINADA DE AQUÍ + # Las variables se cargarán desde la UI de Coolify + - SERVER_URL=${SERVICE_FQDN_EVO} + - AUTHENTICATION_API_KEY=${EVOLUTION_API_KEY} + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_USER=${POSTGRES_USER} + - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} + - DB_POSTGRESDB_DATABASE=${EVOLUTION_DB_NAME} + - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${EVOLUTION_DB_NAME} + - DATABASE_CONNECTION_URI=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${EVOLUTION_DB_NAME} + - CHATWOOT_IMPORT_DATABASE_CONNECTION_URI=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${EVOLUTION_DB_NAME} + - CACHE_REDIS_ENABLED=true + - CACHE_REDIS_URI=redis://redis:6379/6 + # El resto de variables de Evolution (WEBHOOK_*, etc.) se gestionan en la UI volumes: - evolution_instances:/evolution/instances depends_on: - redis - postgres - # ... (El resto de los servicios 'postgres' y 'redis' no cambian) + #--- SHARED POSTGRESQL DATABASE ---# postgres: image: postgres:16-alpine - # ... (sin cambios) - + container_name: shared_postgres_db + restart: always + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${N8N_DB_NAME} + volumes: + - postgres_data:/var/lib/postgresql/data + - ./init-db.sh:/docker-entrypoint-initdb.d/init-db.sh + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + + #--- SHARED REDIS CACHE ---# redis: image: redis:7-alpine - # ... (sin cambios) + container_name: shared_redis_cache + restart: always + command: "redis-server --save 60 1 --loglevel warning" + volumes: + - evolution_redis:/data +#--- VOLUMES DEFINITION ---# volumes: n8n_data: driver: local