From 1d9a02d088b9ee027caddb8dd5500f6ad70357cd Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 23 Feb 2026 15:12:44 +0700 Subject: [PATCH] 260223:1512 20260223:1500 Refaoctor specs/ --- .gitea/workflows/deploy.yaml | 6 +- .../docker-compose-app.yml | 0 .../docker-compose-lcbp3.yml | 122 ++++++++++++++++++ .../lcbp3-monitoring.yml | 0 .../lcbp3-registry.yml | 0 5 files changed, 125 insertions(+), 3 deletions(-) rename specs/04-Infrastructure-OPS/{ => 04-00-docker-compose}/docker-compose-app.yml (100%) create mode 100644 specs/04-Infrastructure-OPS/04-00-docker-compose/docker-compose-lcbp3.yml rename specs/04-Infrastructure-OPS/{ => 04-00-docker-compose}/lcbp3-monitoring.yml (100%) rename specs/04-Infrastructure-OPS/{ => 04-00-docker-compose}/lcbp3-registry.yml (100%) diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 4b0c22a..5514fa7 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -44,14 +44,14 @@ jobs: # 4. Update Containers echo "🔄 Updating Containers..." # Sync compose file จาก repo → app directory - cp /share/np-dms/app/source/lcbp3/specs/08-infrastructure/docker-compose-app.yml /share/np-dms/app/docker-compose-app.yml + cp /share/np-dms/app/source/lcbp3/specs/04-Infrastructure-OPS/04-00-docker-compose/docker-compose-lcbp3.yml /share/np-dms/app/docker-compose-lcbp3.yml cd /share/np-dms/app # ⚠️ ลบ container เดิมที่อาจสร้างจาก Container Station docker rm -f backend frontend 2>/dev/null || true # 4a. Start Backend ก่อน echo "🟢 Starting Backend..." - docker compose -f docker-compose-app.yml up -d backend + docker compose -f docker-compose-lcbp3.yml up -d backend # 4b. รอ Backend healthy (ทุก 5 วิ สูงสุด 60 วิ) echo "⏳ Waiting for Backend health check..." @@ -68,7 +68,7 @@ jobs: # 4c. Start Frontend echo "🟢 Starting Frontend..." - docker compose -f docker-compose-app.yml up -d frontend + docker compose -f docker-compose-lcbp3.yml up -d frontend # 5. Cleanup echo "🧹 Cleaning up unused images..." diff --git a/specs/04-Infrastructure-OPS/docker-compose-app.yml b/specs/04-Infrastructure-OPS/04-00-docker-compose/docker-compose-app.yml similarity index 100% rename from specs/04-Infrastructure-OPS/docker-compose-app.yml rename to specs/04-Infrastructure-OPS/04-00-docker-compose/docker-compose-app.yml diff --git a/specs/04-Infrastructure-OPS/04-00-docker-compose/docker-compose-lcbp3.yml b/specs/04-Infrastructure-OPS/04-00-docker-compose/docker-compose-lcbp3.yml new file mode 100644 index 0000000..ba8f243 --- /dev/null +++ b/specs/04-Infrastructure-OPS/04-00-docker-compose/docker-compose-lcbp3.yml @@ -0,0 +1,122 @@ +# File: /share/np-dms/app/docker-compose.yml +# DMS Container v1.8.0: Application Stack (Backend + Frontend) +# Application name: lcbp3-app +# ============================================================ +# ⚠️ ใช้งานร่วมกับ services อื่นที่รันอยู่แล้วบน QNAP: +# - mariadb (lcbp3-db) +# - cache (services) +# - search (services) +# - npm (lcbp3-npm) +# ============================================================ + +x-restart: &restart_policy + restart: unless-stopped + +x-logging: &default_logging + logging: + driver: 'json-file' + options: + max-size: '10m' + max-file: '5' + +networks: + lcbp3: + external: true + +services: + # ---------------------------------------------------------------- + # 1. Backend API (NestJS) + # Service Name: backend (ตามที่ NPM อ้างอิง → backend:3000) + # ---------------------------------------------------------------- + backend: + <<: [*restart_policy, *default_logging] + image: lcbp3-backend:latest + container_name: backend + stdin_open: true + tty: true + deploy: + resources: + limits: + cpus: '2.0' + memory: 1536M + reservations: + cpus: '0.5' + memory: 512M + environment: + TZ: 'Asia/Bangkok' + NODE_ENV: 'production' + # --- Database --- + DB_HOST: 'mariadb' + DB_PORT: '3306' + DB_DATABASE: 'lcbp3' + DB_USERNAME: 'center' + DB_PASSWORD: 'Center#2025' + # --- Redis --- + REDIS_HOST: 'cache' + REDIS_PORT: '6379' + REDIS_PASSWORD: 'Center2025' + # --- Elasticsearch --- + ELASTICSEARCH_HOST: 'search' + ELASTICSEARCH_PORT: '9200' + # --- JWT --- + JWT_SECRET: 'eebc122aa65adde8c76c6a0847d9649b2b67a06db1504693e6c912e51499b76e' + JWT_EXPIRATION: '8h' + JWT_REFRESH_SECRET: 'a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2' + # --- Numbering --- + NUMBERING_LOCK_TIMEOUT: '5000' + NUMBERING_RESERVATION_TTL: '300' + # --- File Upload --- + UPLOAD_TEMP_DIR: '/app/uploads/temp' + UPLOAD_PERMANENT_DIR: '/app/uploads/permanent' + MAX_FILE_SIZE: '52428800' + networks: + - lcbp3 + volumes: + # Two-Phase Storage: จัดเก็บไฟล์นอก container + - '/share/np-dms/data/uploads/temp:/app/uploads/temp' + - '/share/np-dms/data/uploads/permanent:/app/uploads/permanent' + - '/share/np-dms/data/logs/backend:/app/logs' + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:3000/health'] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + + # ---------------------------------------------------------------- + # 2. Frontend Web App (Next.js) + # Service Name: frontend (ตามที่ NPM อ้างอิง → frontend:3000) + # ---------------------------------------------------------------- + frontend: + <<: [*restart_policy, *default_logging] + image: lcbp3-frontend:latest + container_name: frontend + stdin_open: true + tty: true + deploy: + resources: + limits: + cpus: '2.0' + memory: 2G + reservations: + cpus: '0.25' + memory: 512M + environment: + TZ: 'Asia/Bangkok' + NODE_ENV: 'production' + HOSTNAME: '0.0.0.0' + PORT: '3000' + # --- NextAuth --- + AUTH_SECRET: 'eebc122aa65adde8c76c6a0847d9649b2b67a06db1504693e6c912e51499b76e' + AUTH_URL: 'https://lcbp3.np-dms.work' + networks: + - lcbp3 + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:3000/'] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s + depends_on: + backend: + condition: service_healthy diff --git a/specs/04-Infrastructure-OPS/lcbp3-monitoring.yml b/specs/04-Infrastructure-OPS/04-00-docker-compose/lcbp3-monitoring.yml similarity index 100% rename from specs/04-Infrastructure-OPS/lcbp3-monitoring.yml rename to specs/04-Infrastructure-OPS/04-00-docker-compose/lcbp3-monitoring.yml diff --git a/specs/04-Infrastructure-OPS/lcbp3-registry.yml b/specs/04-Infrastructure-OPS/04-00-docker-compose/lcbp3-registry.yml similarity index 100% rename from specs/04-Infrastructure-OPS/lcbp3-registry.yml rename to specs/04-Infrastructure-OPS/04-00-docker-compose/lcbp3-registry.yml