N8n Docker-compose

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