From 2a88649f752c4f8ec78160deb09eb1709ccb8e42 Mon Sep 17 00:00:00 2001 From: sky121113 Date: Mon, 23 Feb 2026 17:06:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8B=86=E5=88=86=20Docker=20Compose?= =?UTF-8?q?=20=E9=85=8D=E7=BD=AE=E7=82=BA=E5=A4=9A=E6=AA=94=E6=A1=88?= =?UTF-8?q?=E7=B9=BC=E6=89=BF=E6=A8=A1=E5=BC=8F=E4=B8=A6=E5=84=AA=E5=8C=96?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy-demo.yaml | 6 +++--- .gitea/workflows/deploy-prod.yaml | 9 +++----- compose.demo.yaml | 6 ++++++ compose.prod.yaml | 7 ++++++ compose.yaml | 36 ++++++++++++++++++++++--------- 5 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 compose.demo.yaml create mode 100644 compose.prod.yaml diff --git a/.gitea/workflows/deploy-demo.yaml b/.gitea/workflows/deploy-demo.yaml index bb27c94..c2e25e2 100644 --- a/.gitea/workflows/deploy-demo.yaml +++ b/.gitea/workflows/deploy-demo.yaml @@ -59,14 +59,14 @@ jobs: cd /var/www/star-erp-demo chown -R 1000:1000 . - if git diff --name-only HEAD~1 HEAD 2>/dev/null | grep -qE '(Dockerfile|compose\.yaml|docker-compose\.yaml)'; then + if git diff --name-only HEAD~1 HEAD 2>/dev/null | grep -qE '(Dockerfile|compose\.yaml|compose\.demo\.yaml|docker-compose\.yaml)'; then echo "🔄 偵測到 Docker 相關檔案變更,執行完整重建..." - WWWGROUP=1000 WWWUSER=1000 docker compose up -d --build --wait + WWWGROUP=1000 WWWUSER=1000 docker compose -f compose.yaml -f compose.demo.yaml up -d --build --wait else echo "⚡ 無 Docker 檔案變更,僅重載服務..." if ! docker ps --format '{{.Names}}' | grep -q 'star-erp-laravel'; then echo "容器未運行,正在啟動..." - WWWGROUP=1000 WWWUSER=1000 docker compose up -d --wait + WWWGROUP=1000 WWWUSER=1000 docker compose -f compose.yaml -f compose.demo.yaml up -d --wait else echo "容器已運行,跳過 docker compose,直接進行程式碼部署..." fi diff --git a/.gitea/workflows/deploy-prod.yaml b/.gitea/workflows/deploy-prod.yaml index fd6f9a4..d117af4 100644 --- a/.gitea/workflows/deploy-prod.yaml +++ b/.gitea/workflows/deploy-prod.yaml @@ -41,9 +41,6 @@ jobs: key: ${{ secrets.PROD_SSH_KEY }} script: | cd /var/www/star-erp - # [Patch] 修正正式機 Nginx Proxy 配置 (對應外部 SSL/OpenResty) - sed -i "s/- '8080:8080'/- '80:80'\n - '8080:8080'/" compose.yaml - sed -i "s/demo-proxy.conf/prod-proxy.conf/" compose.yaml if git diff --name-only HEAD~1 HEAD 2>/dev/null | grep -qE '(Dockerfile|compose\.yaml|docker-compose\.yaml)'; then echo "REBUILD_NEEDED=true" @@ -62,14 +59,14 @@ jobs: cd /var/www/star-erp chown -R 1000:1000 . - if git diff --name-only HEAD~1 HEAD 2>/dev/null | grep -qE '(Dockerfile|compose\.yaml|docker-compose\.yaml)'; then + if git diff --name-only HEAD~1 HEAD 2>/dev/null | grep -qE '(Dockerfile|compose\.yaml|compose\.prod\.yaml|docker-compose\.yaml)'; then echo "🔄 偵測到 Docker 相關檔案變更,執行完整重建..." - WWWGROUP=1000 WWWUSER=1000 docker compose up -d --build --wait + WWWGROUP=1000 WWWUSER=1000 docker compose -f compose.yaml -f compose.prod.yaml up -d --build --wait else echo "⚡ 無 Docker 檔案變更,僅重載服務..." if ! docker ps --format '{{.Names}}' | grep -q 'star-erp-laravel'; then echo "容器未運行,正在啟動..." - WWWGROUP=1000 WWWUSER=1000 docker compose up -d --wait + WWWGROUP=1000 WWWUSER=1000 docker compose -f compose.yaml -f compose.prod.yaml up -d --wait else echo "容器已運行,跳過 docker compose,直接進行程式碼部署..." fi diff --git a/compose.demo.yaml b/compose.demo.yaml new file mode 100644 index 0000000..cd0d9b3 --- /dev/null +++ b/compose.demo.yaml @@ -0,0 +1,6 @@ +services: + proxy: + ports: + - '8080:8080' + volumes: + - './nginx/demo-proxy.conf:/etc/nginx/conf.d/default.conf:ro' diff --git a/compose.prod.yaml b/compose.prod.yaml new file mode 100644 index 0000000..dc74f73 --- /dev/null +++ b/compose.prod.yaml @@ -0,0 +1,7 @@ +services: + proxy: + ports: + - '80:80' + - '8080:8080' + volumes: + - './nginx/prod-proxy.conf:/etc/nginx/conf.d/default.conf:ro' diff --git a/compose.yaml b/compose.yaml index eaa3ffb..78ee827 100644 --- a/compose.yaml +++ b/compose.yaml @@ -8,9 +8,11 @@ services: image: 'sail-8.5/app' container_name: star-erp-laravel hostname: star-erp-laravel - network_mode: host extra_hosts: - 'host.docker.internal:host-gateway' + ports: + # - '${APP_PORT:-8080}:80' # 由 proxy 處理 + - '${VITE_PORT:-5173}:${VITE_PORT:-5173}' environment: WWWUSER: '${WWWUSER}' LARAVEL_SAIL: 1 @@ -19,15 +21,18 @@ services: IGNITION_LOCAL_SITES_PATH: '${PWD}' volumes: - '.:/var/www/html' + networks: + - sail depends_on: - mysql - redis - + # - mailpit mysql: image: 'mysql/mysql-server:8.0' container_name: star-erp-mysql hostname: star-erp-mysql - network_mode: host + ports: + - '${FORWARD_DB_PORT:-3306}:3306' environment: MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' MYSQL_ROOT_HOST: '%' @@ -39,6 +44,8 @@ services: volumes: - 'sail-mysql:/var/lib/mysql' - './docker/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' + networks: + - sail healthcheck: test: - CMD @@ -47,14 +54,16 @@ services: - '-p${DB_PASSWORD}' retries: 3 timeout: 5s - redis: image: 'redis:alpine' container_name: star-erp-redis hostname: star-erp-redis - network_mode: host + # ports: + # - '${FORWARD_REDIS_PORT:-6379}:6379' volumes: - 'sail-redis:/data' + networks: + - sail healthcheck: test: - CMD @@ -62,16 +71,23 @@ services: - ping retries: 3 timeout: 5s - proxy: image: 'nginx:alpine' container_name: star-erp-proxy - network_mode: host - volumes: - - './nginx/demo-proxy.conf:/etc/nginx/conf.d/default.conf:ro' + networks: + - sail depends_on: - laravel.test - + # mailpit: + # image: 'axllent/mailpit:latest' + # ports: + # - '${FORWARD_MAILPIT_PORT:-1025}:1025' + # - '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025' + # networks: + # - sail +networks: + sail: + driver: bridge volumes: sail-mysql: driver: local