mirror of
https://github.com/henry4682/finance_app.git
synced 2026-07-16 00:10:00 +00:00
This commit is contained in:
19
Dockerfile
19
Dockerfile
@@ -1,6 +1,6 @@
|
|||||||
FROM php:8.2-fpm
|
FROM php:8.2-fpm
|
||||||
|
|
||||||
# 1. 安裝系統必要的擴充套件(Laravel 需要 zip, unzip 等才能解壓套件)
|
# 1. 安裝系統套件(這層幾乎不變,永遠快取)
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
git \
|
git \
|
||||||
curl \
|
curl \
|
||||||
@@ -11,20 +11,23 @@ RUN apt-get update && apt-get install -y \
|
|||||||
unzip \
|
unzip \
|
||||||
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
|
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
|
||||||
|
|
||||||
# 🎯 2. 從官方 Composer 鏡像中,直接把 composer 執行檔複製進來
|
|
||||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
# 3. 設定工作目錄
|
|
||||||
WORKDIR /var/www
|
WORKDIR /var/www
|
||||||
|
|
||||||
# 4. 把專案檔案複製進去
|
# 🎯 2. 【核心魔法】只複製套件清單檔案
|
||||||
|
COPY composer.json composer.lock /var/www/
|
||||||
|
|
||||||
|
# 🎯 3. 在這裡就先執行安裝!
|
||||||
|
# 因為上面只複製了 json/lock,只要你沒裝新套件,這層 Docker 就會直接跳過、秒速套用快取!
|
||||||
|
RUN composer install --no-interaction --no-scripts --no-autoloader --no-dev
|
||||||
|
|
||||||
|
# 4. 最後才複製你天天在修改的 Laravel 原始碼(如 Controller、Routes)
|
||||||
COPY . /var/www
|
COPY . /var/www
|
||||||
|
|
||||||
# 🎯 5. 在容器內直接執行 composer install,把 vendor 長出來!
|
# 5. 補上自動載入優化
|
||||||
# 加上 --no-dev 是因為生產環境不需要測試套件,速度會快非常多
|
RUN composer dump-autoload --optimize --no-dev
|
||||||
RUN composer install --no-interaction --optimize-autoloader --no-dev
|
|
||||||
|
|
||||||
EXPOSE 9000
|
EXPOSE 9000
|
||||||
|
|
||||||
# 6. 啟動 Laravel HTTP 伺服器
|
|
||||||
CMD ["php", "/var/www/artisan", "serve", "--host=0.0.0.0", "--port=9000"]
|
CMD ["php", "/var/www/artisan", "serve", "--host=0.0.0.0", "--port=9000"]
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
services:
|
services:
|
||||||
|
# 🐘 1. 你的 Laravel 後端服務
|
||||||
finance-backend:
|
finance-backend:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
@@ -11,14 +12,36 @@ services:
|
|||||||
- APP_ENV=production
|
- APP_ENV=production
|
||||||
- APP_DEBUG=false
|
- APP_DEBUG=false
|
||||||
- DB_CONNECTION=pgsql
|
- DB_CONNECTION=pgsql
|
||||||
- DB_HOST=161.118.239.140
|
- DB_HOST=finance-postgres # 🎯 關鍵:改用資料庫的服務名稱當作 Host!
|
||||||
- DB_PORT=5432
|
- DB_PORT=5432
|
||||||
- DB_DATABASE=myfinance
|
- DB_DATABASE=myfinance
|
||||||
- DB_USERNAME=myfinance_henry4682
|
- DB_USERNAME=myfinance_henry4682
|
||||||
- DB_PASSWORD=DwmQ78PB
|
- DB_PASSWORD=DwmQ78PB
|
||||||
networks:
|
networks:
|
||||||
- 1panel-network # 🎯 這裡的名字必須跟最下面一模一樣
|
- 1panel-network
|
||||||
|
depends_on:
|
||||||
|
- finance-postgres # 🎯 確保資料庫先開,後端才開
|
||||||
|
|
||||||
|
# 🐬 2. 直接在這裡把消失的 PostgreSQL 生回來!
|
||||||
|
finance-postgres:
|
||||||
|
image: postgres:15-alpine # 使用穩定的 15-alpine 版本
|
||||||
|
container_name: finance-laravel-backend-postgres
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "5432:5432" # 🎯 把 5432 暴露給實體主機,這樣你本機的 pgAdmin 就能連進來了!
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=myfinance
|
||||||
|
- POSTGRES_USER=myfinance_henry4682
|
||||||
|
- POSTGRES_PASSWORD=DwmQ78PB
|
||||||
|
volumes:
|
||||||
|
- finance_db_data:/var/lib/postgresql/data # 🎯 資料持久化,容器重啟資料也不會掉
|
||||||
|
networks:
|
||||||
|
- 1panel-network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
1panel-network: # 🎯 這裡一定要頂格(沒有縮排),定義這個外部網路
|
1panel-network:
|
||||||
external: true
|
external: true
|
||||||
|
|
||||||
|
# 🎯 定義資料庫的儲存卷
|
||||||
|
volumes:
|
||||||
|
finance_db_data:
|
||||||
Reference in New Issue
Block a user