services:
n8n:
image: 'n8nio/n8n:1.108.1'
command: start
restart: always
environment:
- SERVICE_FQDN_N8N_5678
- 'N8N_EDITOR_BASE_URL=${SERVICE_FQDN_N8N}'
- 'WEBHOOK_URL=${SERVICE_FQDN_N8N}'
- 'N8N_HOST=${SERVICE_URL_N8N}'
- 'GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-America/Sao_Paulo}'
- 'TZ=${TZ:-America/Sao_Paulo}'
- DB_TYPE=postgresdb
- 'DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-n8n}'
- DB_POSTGRESDB_HOST=postgresql
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=$SERVICE_USER_POSTGRES
- DB_POSTGRESDB_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- DB_POSTGRESDB_SCHEMA=public
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
- QUEUE_BULL_REDIS_DB=0
- 'QUEUE_BULL_REDIS_PASSWORD=${REDIS_PASSWORD}'
- N8N_LOG_LEVEL=info
- N8N_ENCRYPTION_KEY=$SERVICE_BASE64_N8N
- N8N_RUNNERS_ENABLED=true
- OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
- 'NODE_FUNCTION_ALLOW_EXTERNAL=*'
- N8N_PROXY_HOPS=1
volumes:
- 'n8n-data:/home/node/.n8n'
depends_on:
- postgresql
- redis
healthcheck:
test:
- CMD-SHELL
- 'wget -qO- <http://127.0.0.1:5678/> || exit 1'
interval: 5s
timeout: 20s
retries: 10
deploy:
resources:
limits:
cpus: '1'
memory: 1000M
n8n_worker:
image: 'n8nio/n8n:1.108.1'
command: worker
restart: always
environment:
- 'GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-America/Sao_Paulo}'
- 'TZ=${TZ:-America/Sao_Paulo}'
- DB_TYPE=postgresdb
- 'DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-n8n}'
- DB_POSTGRESDB_HOST=postgresql
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=$SERVICE_USER_POSTGRES
- DB_POSTGRESDB_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- DB_POSTGRESDB_SCHEMA=public
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
- QUEUE_BULL_REDIS_DB=0
- 'QUEUE_BULL_REDIS_PASSWORD=${REDIS_PASSWORD}'
- N8N_LOG_LEVEL=info
- N8N_ENCRYPTION_KEY=$SERVICE_BASE64_N8N
- N8N_RUNNERS_ENABLED=true
- OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
- 'NODE_FUNCTION_ALLOW_EXTERNAL=*'
- N8N_PROXY_HOPS=1
volumes:
- 'n8n-data:/home/node/.n8n'
depends_on:
- redis
- postgresql
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
n8n_webhook:
image: 'n8nio/n8n:1.108.1'
command: webhook
restart: always
environment:
- 'GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-America/Sao_Paulo}'
- 'TZ=${TZ:-America/Sao_Paulo}'
- DB_TYPE=postgresdb
- 'DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-n8n}'
- DB_POSTGRESDB_HOST=postgresql
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=$SERVICE_USER_POSTGRES
- DB_POSTGRESDB_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- DB_POSTGRESDB_SCHEMA=public
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
- QUEUE_BULL_REDIS_DB=0
- 'QUEUE_BULL_REDIS_PASSWORD=${REDIS_PASSWORD}'
- N8N_LOG_LEVEL=info
- N8N_ENCRYPTION_KEY=$SERVICE_BASE64_N8N
- N8N_RUNNERS_ENABLED=true
- OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
- 'NODE_FUNCTION_ALLOW_EXTERNAL=*'
- N8N_PROXY_HOPS=1
volumes:
- 'n8n-data:/home/node/.n8n'
depends_on:
- redis
- postgresql
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
postgresql:
image: ankane/pgvector
restart: always
volumes:
- 'postgresql-data:/var/lib/postgresql/data'
environment:
- POSTGRES_USER=$SERVICE_USER_POSTGRES
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- 'POSTGRES_DB=${POSTGRES_DB:-n8n}'
healthcheck:
test:
- CMD-SHELL
- 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'
interval: 5s
timeout: 20s
retries: 10
redis:
image: 'redis:alpine'
restart: always
command:
- redis-server
- '--requirepass'
- '${REDIS_PASSWORD}'
volumes:
- 'redis-data:/data'
healthcheck:
test:
- CMD
- redis-cli
- '-a'
- $SERVICE_PASSWORD_REDIS
- PING
interval: 30s
timeout: 10s
retries: 5
evolution-api:
image: 'atendai/evolution-api:latest'
volumes:
- 'evolution-data:/lab_evolution/instances'
environment:
- SERVICE_FQDN_EVOLUTION_8080
- 'SERVER_URL=${SERVICE_FQDN_EVOLUTION}'
- AUTHENTICATION_API_KEY=$SERVICE_PASSWORD_EVOLUTION
- DATABASE_ENABLED=true
- DATABASE_PROVIDER=postgresql
- 'DATABASE_CONNECTION_URI=postgresql://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB:-evolution}?schema=public'
- DATABASE_CONNECTION_CLIENT_NAME=evolution_exchange
- DATABASE_SAVE_DATA_INSTANCE=true
- DATABASE_SAVE_DATA_NEW_MESSAGE=true
- DATABASE_SAVE_MESSAGE_UPDATE=true
- DATABASE_SAVE_DATA_CONTACTS=true
- DATABASE_SAVE_DATA_CHATS=true
- DATABASE_SAVE_DATA_LABELS=true
- DATABASE_SAVE_DATA_HISTORIC=true
- 'CONFIG_SESSION_PHONE_VERSION=${CONFIG_SESSION_PHONE_VERSION:-2.3000.1026231250}'
- CACHE_REDIS_ENABLED=true
- 'CACHE_REDIS_URI=redis://redis:6379/6'
- CACHE_REDIS_PREFIX_KEY=evolution
- CACHE_REDIS_SAVE_INSTANCES=false
- CACHE_LOCAL_ENABLED=false
volumes:
n8n-data: null
postgresql-data: null
redis-data: null
evolution-data: null