ปรับปรุง docker compose n8n postgres redis
services:
redis:
image: redis:6-alpine
restart: always
command: redis-server --appendonly yes
volumes:
- redis_data:/data
networks:
- n8n_network
n8n:
build:
context: .
dockerfile: Dockerfile
restart: always
ports:
# คงไว้เผื่อเทส Local หรือให้ Cloudflare tunnel ชี้มาที่ IP เครื่อง:5678
- "192.168.31.219:5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgresql
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
# Redis Config
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
# General Config
# สำคัญ: WEBHOOK_URL ต้องเป็น https://โดเมนจริง
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_PROXY_HOPS=1 # จำเป็นสำหรับ Cloudflare เพื่อให้เห็น IP จริง
- N8N_N8N_FILESYSTEM_ROOT=/doc
- N8N_RESTRICT_FILE_ACCESS_TO=/doc
- N8N_SECURE_COOKIE=false
- NODES_EXCLUDE=[]
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- TYPHOON_OCR_API_KEY=${TYPHOON_OCR_API_KEY}
volumes:
- n8n_data:/home/node/.n8n
- ./doc:/doc
depends_on:
- postgresql
- redis
networks:
- n8n_network
n8n-worker:
build:
context: .
dockerfile: Dockerfile
restart: always
command: worker
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgresql
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
- NODE_ENV=production
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_N8N_FILESYSTEM_ROOT=/doc
- NODES_EXCLUDE=[]
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- TYPHOON_OCR_API_KEY=${TYPHOON_OCR_API_KEY}
volumes:
- n8n_data:/home/node/.n8n
- ./doc:/doc
depends_on:
- postgresql
- redis
networks:
- n8n_network
# --- Postgres (เหมือนเดิม) ---
postgresql:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgresql_data:/var/lib/postgresql/data
networks:
- n8n_network
volumes:
n8n_data:
redis_data:
postgresql_data:
networks:
n8n_network:
driver: bridge