docker/n8n/docker-compose.yml

64 lines
1.7 KiB
YAML

version: '3.8'
services:
n8n:
image: n8nio/n8n:1.76.1 # Aktuelle stabile Version (Pinning empfohlen!)
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=${TIMEZONE}
- TZ=${TIMEZONE}
# Datenbank-Verbindung
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${DB_NAME}
- DB_POSTGRESDB_USER=${DB_USER}
- DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}
# Webhook/Proxy Settings (Wichtig für externe Erreichbarkeit)
- N8N_HOST=${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://${DOMAIN_NAME}/
# Auto-Cleanup (Verhindert Datenbank-Explosion)
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=336 # Behalte Daten für 14 Tage (336 Stunden)
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000 # Max 50k Einträge
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
networks:
- n8n-net
- npm-network
postgres:
image: postgres:16-alpine # Neueste stabile Postgres Version
container_name: n8n-db
restart: always
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
interval: 5s
timeout: 5s
retries: 5
networks:
- n8n-net
volumes:
n8n_data:
postgres_data:
networks:
n8n-net:
internal: true
npm-network:
external: true