Files
Docker-Compose/n8n/docker-compose.yml
2025-12-27 04:36:03 +08:00

159 lines
4.5 KiB
YAML

version: "3.7"
services:
main:
image: ${N8N_IMAGE}
command: start
restart: unless-stopped
user: ${N8N_UID}
ports:
- "5678:5678"
environment:
# Database
- DB_TYPE=postgresdb
- DB_POSTGRESDB_USER=${N8N_POSTGRESDB_DATABASE}
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=${N8N_POSTGRESDB_USER}
- DB_POSTGRESDB_PASSWORD=${N8N_POSTGRESDB_PASSWORD}
# Redis
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
- QUEUE_BULL_REDIS_DB=0
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_HOST=${N8N_HOST}
- N8N_PORT=5678
- N8N_EDITOR_BASE_URL=${N8N_EDITOR_URL}
- N8N_PROTOCOL=https
- NODE_ENV=production
- N8N_LOG_LEVEL=debug
- WEBHOOK_URL=${N8N_WEBHOOK_URL}
- EXECUTIONS_MODE=queue
- N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- NODE_FUNCTION_ALLOW_EXTERNAL=${NODE_FUNCTION_ALLOW_EXTERNAL}
#- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
- GENERIC_TIMEZONE=${N8N_TZ}
- TZ=${N8N_TZ}
volumes:
- /mnt:/mnt
deploy:
mode: replicated
replicas: 1
labels:
- homepage.group=Management
- homepage.name=n8n
- homepage.icon=sh-n8n-light
- homepage.href=${N8N_EDITOR_URL}
- homepage.description=n8n is a workflow automation platform that gives technical teams the flexibility of code with the speed of no-code.
worker:
image: ${N8N_IMAGE}
command: worker --concurrency=10
restart: unless-stopped
user: ${N8N_UID}
environment:
# Database
- DB_TYPE=postgresdb
- DB_POSTGRESDB_USER=${N8N_POSTGRESDB_DATABASE}
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=${N8N_POSTGRESDB_USER}
- DB_POSTGRESDB_PASSWORD=${N8N_POSTGRESDB_PASSWORD}
# Redis
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
- QUEUE_BULL_REDIS_DB=0
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_HOST=${N8N_HOST}
- N8N_PORT=5678
- N8N_EDITOR_BASE_URL=${N8N_EDITOR_URL}
- N8N_PROTOCOL=https
- NODE_ENV=production
- N8N_LOG_LEVEL=debug
- WEBHOOK_URL=${N8N_WEBHOOK_URL}
- EXECUTIONS_MODE=queue
- N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- NODE_FUNCTION_ALLOW_EXTERNAL=${NODE_FUNCTION_ALLOW_EXTERNAL}
#- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
- GENERIC_TIMEZONE=${N8N_TZ}
- TZ=${N8N_TZ}
volumes:
- /mnt:/mnt
deploy:
mode: global
webhook:
image: ${N8N_IMAGE}
command: webhook
restart: unless-stopped
user: ${N8N_UID}
ports:
- "5679:5678"
environment:
# Database
- DB_TYPE=postgresdb
- DB_POSTGRESDB_USER=${N8N_POSTGRESDB_DATABASE}
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=${N8N_POSTGRESDB_USER}
- DB_POSTGRESDB_PASSWORD=${N8N_POSTGRESDB_PASSWORD}
# Redis
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
- QUEUE_BULL_REDIS_DB=0
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_HOST=${N8N_HOST}
- N8N_PORT=5678
- N8N_EDITOR_BASE_URL=${N8N_EDITOR_URL}
- N8N_PROTOCOL=https
- NODE_ENV=production
- N8N_LOG_LEVEL=debug
- WEBHOOK_URL=${N8N_WEBHOOK_URL}
- EXECUTIONS_MODE=queue
- N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- NODE_FUNCTION_ALLOW_EXTERNAL=${NODE_FUNCTION_ALLOW_EXTERNAL}
#- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
- GENERIC_TIMEZONE=${N8N_TZ}
- TZ=${N8N_TZ}
volumes:
- /mnt:/mnt
deploy:
mode: replicated
replicas: 1
redis:
image: redis:alpine
restart: unless-stopped
user: ${N8N_UID}
db:
image: postgres:16
restart: unless-stopped
user: ${N8N_UID}
volumes:
- /mnt/docker-storage/n8n:/var/lib/postgresql/data
environment:
- TZ=${N8N_TZ}
- POSTGRES_DB=${N8N_POSTGRESDB_DATABASE}
- POSTGRES_USER=${N8N_POSTGRESDB_USER}
- POSTGRES_PASSWORD=${N8N_POSTGRESDB_PASSWORD}