Fichier docker-compose.yml d’n8n
services:
postgres:
image: postgres:17
container_name: n8n-postgresql
hostname: n8n-postgresql
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "${POSTGRES_DB}", "-U", "${POSTGRES_USER}"]
timeout: 60s
interval: 5s
retries: 3
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
TZ: ${N8N_GENERIC_TIMEZONE}
volumes:
- ./postgresql:/var/lib/postgresql/data:rw
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
security_opt:
- no-new-privileges:true
restart: always
ports:
- "5678:5678"
environment:
N8N_HOST: ${N8N_HOST}
N8N_PORT: 5678
N8N_PROTOCOL: https
N8N_SECURE_COOKIE: ${N8N_SECURE_COOKIE}
N8N_RUNNERS_ENABLED: true
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: true
NODE_ENV: production
WEBHOOK_URL: ${N8N_WEBHOOK_URL}
WEBHOOK_TUNNEL_URL: ${N8N_WEBHOOK_TUNNEL_URL}
GENERIC_TIMEZONE: ${N8N_GENERIC_TIMEZONE}
TZ: ${N8N_GENERIC_TIMEZONE}
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: n8n-postgresql
DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_USER: ${POSTGRES_USER}
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./n8n_data:/home/node/.n8n:rw
- ./n8n_files:/files:rw
depends_on:
postgres:
condition: service_healthy