Files
lcbp3/docs/Docker compose all.yaml
2025-11-17 22:09:01 +07:00

194 lines
6.4 KiB
YAML

# version: '3.8'
# ==========================================================
# Volumes (พื้นที่จัดเก็บข้อมูลถาวร)
# ==========================================================
volumes:
# (จากไฟล์เดิม)
backend_node_modules:
# (ที่เพิ่มใหม่)
db_data: # 2.4. Database
npm_data: # 2.8. Reverse Proxy
npm_letsencrypt: # 2.8. SSL Certs
es_data: # 6.2. Elasticsearch
n8n_data: # 2.7. n8n
gitea_data: # 2.2. Gitea
# ==========================================================
# Services (บริการทั้งหมดของระบบ)
# ==========================================================
services:
# --------------------------------------------------------
# Service 1: Reverse Proxy (Nginx Proxy Manager)
# --------------------------------------------------------
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm
restart: unless-stopped
ports:
- '80:80' # HTTP
- '443:443' # HTTPS
- '81:81' # Admin UI
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
networks:
- lcbp3
# --------------------------------------------------------
# Service 2: Database (MariaDB)
# --------------------------------------------------------
mariadb:
image: mariadb:10.11
container_name: mariadb
restart: unless-stopped
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=YOUR_STRONG_ROOT_PASSWORD
- MYSQL_DATABASE=lcbp3
- MYSQL_USER=center
- MYSQL_PASSWORD=Center#2025
- TZ=Asia/Bangkok
networks:
- lcbp3
# --------------------------------------------------------
# Service 3: Database UI (phpMyAdmin)
# --------------------------------------------------------
pma:
image: phpmyadmin:5-apache
container_name: pma
restart: unless-stopped
ports:
- "8080:80"
environment:
- PMA_HOST=mariadb
- PMA_PORT=3306
- UPLOAD_LIMIT=256M
networks:
- lcbp3
depends_on:
- mariadb
# --------------------------------------------------------
# Service 4: Backend (NestJS)
# (ปรับแก้จากไฟล์ ของคุณ)
# --------------------------------------------------------
backend:
build:
context: /share/Container/lcbp3/backend
container_name: backend
restart: unless-stopped
stdin_open: true
tty: true
command: npm run start:dev
networks:
- lcbp3
ports:
- "3000:3000"
environment:
# --- Database Connection (จากไฟล์เดิม) ---
- DB_HOST=mariadb
- DB_PORT=3306
- DB_USER=center
- DB_PASSWORD=Center#2025
- DB_NAME=lcbp3
- PORT=3000
# --- Security (จากไฟล์เดิม) ---
- JWT_SECRET=9a6d8705a6695ab9bae4ca1cd46c72a6379aa72404b96e2c5b59af881bb55c639dd583afdce5a885c68e188da55ce6dbc1fb4aa9cd4055ceb51507e56204e4ca
- JWT_EXPIRES_IN=1d
# --- (เพิ่มใหม่) Environment Variables ที่ Service ต้องการ ---
- STORAGE_PATH=/app/storage # (Path ภายใน Container ที่เชื่อมกับ /share/dms-data)
- ELASTICSEARCH_NODE=http://elasticsearch:9200
- N8N_WEBHOOK_URL=http://n8n:5678/webhook/lcbp3-notify
volumes:
- /share/Container/lcbp3/backend:/app
- /share/dms-data:/app/storage # (เชื่อม Path จริงบน QNAP เข้ากับ Container)
- /share/Container/dms/logs/backend:/app/logs:rw
- backend_node_modules:/app/node_modules
depends_on:
- mariadb
# --------------------------------------------------------
# Service 5: Frontend (Next.js)
# --------------------------------------------------------
frontend:
build:
context: /share/Container/lcbp3/frontend
container_name: frontend
restart: unless-stopped
command: npm run dev
ports:
- "3001:3000" # (ใช้ Host Port 3001)
networks:
- lcbp3
volumes:
- /share/Container/lcbp3/frontend:/app
- /share/Container/lcbp3/frontend/node_modules:/app/node_modules
environment:
# (Frontend ต้องเรียก API ผ่าน Domain ที่ NPM จัดการ)
- NEXT_PUBLIC_API_URL=https://backend.np-dms.work
depends_on:
- backend
# --------------------------------------------------------
# Service 6: Search (Elasticsearch)
# --------------------------------------------------------
elasticsearch:
image: elasticsearch:8.11.0 # (แนะนำให้ระบุเวอร์ชัน)
container_name: elasticsearch
restart: unless-stopped
ports:
- "9200:9200"
volumes:
- es_data:/usr/share/elasticsearch/data
environment:
- discovery.type=single-node
- xpack.security.enabled=false # (ปิดการยืนยันตัวตนสำหรับ Dev)
- ES_JAVA_OPTS=-Xms512m -Xmx512m # (จำกัด RAM)
networks:
- lcbp3
# --------------------------------------------------------
# Service 7: Workflow (n8n)
# --------------------------------------------------------
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
volumes:
- n8n_data:/home/node/.n8n
environment:
- TZ=Asia/Bangkok
networks:
- lcbp3
# --------------------------------------------------------
# Service 8: Code Hosting (Gitea)
# --------------------------------------------------------
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
ports:
- "3002:3000" # (ใช้ Host Port 3002)
- "2222:22" # (ใช้ Host Port 2222 สำหรับ SSH)
volumes:
- gitea_data:/data
networks:
- lcbp3
depends_on:
- mariadb
# ==========================================================
# Networks (เครือข่ายกลาง)
# ==========================================================
networks:
lcbp3:
external: true