ปรับปรุง docker compose n8n postgres redis

ปรับปรุง 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