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