volumes: db_storage: n8n_storage: redis_storage: x-shared: &shared restart: unless-stopped image: docker.n8n.io/n8nio/n8n 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_EXPRESS_TRUST_PROXY=${N8N_EXPRESS_TRUST_PROXY} 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 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 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}"