docker-compose_n8n/docker-compose.yml
2025-08-08 22:50:47 +00:00

136 lines
3.6 KiB
YAML

volumes:
db_storage:
n8n_storage:
redis_storage:
networks:
daffnie-n8n_network:
external: true
x-shared: &shared
restart: unless-stopped
image: n8nio/n8n:stable
networks:
- daffnie-n8n_network
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=daffnie-n8n_postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=daffnie-n8n_redis
- QUEUE_HEALTH_CHECK_ACTIVE=true
- N8N_ENCRYPTION_KEY=${ENCRYPTION_KEY}
- N8N_HOST=${N8N_HOST}
- WEBHOOK_URL=${N8N_WEBHOOK_URL}
- N8N_EDITOR_BASE_URL=${N8N_EDITOR_BASE_URL}
- N8N_RUNNERS_ENABLED=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
- N8N_EMAIL_MODE=smtp
- 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_USER_MANAGEMENT_DISABLED=false
- N8N_EXPRESS_TRUST_PROXY=true
- N8N_RATE_LIMIT_ENABLED=false
links:
- daffnie-n8n_postgres
- daffnie-n8n_redis
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
daffnie-n8n_redis:
condition: service_healthy
daffnie-n8n_postgres:
condition: service_healthy
services:
daffnie-n8n_postgres:
container_name: daffnie-n8n_postgres
image: postgres:16
restart: unless-stopped
networks:
- daffnie-n8n_network
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- POSTGRES_NON_ROOT_PASSWORD
volumes:
- db_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10
deploy:
resources:
limits:
cpus: "${POSTGRES_LIMIT_CPUS}"
memory: "${POSTGRES_LIMIT_MEMORY}"
reservations:
cpus: "${POSTGRES_RESERVE_CPUS}"
memory: "${POSTGRES_RESERVE_MEMORY}"
daffnie-n8n_redis:
container_name: daffnie-n8n_redis
image: redis:6-alpine
restart: unless-stopped
networks:
- daffnie-n8n_network
# - nextcloud_shared-network
volumes:
- redis_storage:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 10
deploy:
resources:
limits:
cpus: "${REDIS_LIMIT_CPUS}"
memory: "${REDIS_LIMIT_MEMORY}"
reservations:
cpus: "${REDIS_RESERVE_CPUS}"
memory: "${REDIS_RESERVE_MEMORY}"
daffnie-n8n_main:
<<: *shared
restart: unless-stopped
container_name: daffnie-n8n_main
ports:
- ${N8N_PORT}:5678
deploy:
resources:
limits:
cpus: "${N8N_LIMIT_CPUS}"
memory: "${N8N_LIMIT_MEMORY}"
reservations:
cpus: "${N8N_RESERVE_CPUS}"
memory: "${N8N_RESERVE_MEMORY}"
daffnie-n8n_worker:
<<: *shared
restart: unless-stopped
container_name: daffnie-n8n_worker
command: worker
depends_on:
- daffnie-n8n_main
deploy:
resources:
limits:
cpus: "${N8N_WORKER_LIMIT_CPUS}"
memory: "${N8N_WORKER_LIMIT_MEMORY}"
reservations:
cpus: "${N8N_WORKER_RESERVE_CPUS}"
memory: "${N8N_WORKER_RESERVE_MEMORY}"