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
|
||||
|
||||
# 1. 安裝系統必要的擴充套件(Laravel 需要 zip, unzip 等才能解壓套件)
|
||||
# 1. 安裝系統套件(這層幾乎不變,永遠快取)
|
||||
RUN apt-get update && apt-get install -y \
|
||||
git \
|
||||
curl \
|
||||
@@ -11,20 +11,23 @@ RUN apt-get update && apt-get install -y \
|
||||
unzip \
|
||||
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
|
||||
|
||||
# 🎯 2. 從官方 Composer 鏡像中,直接把 composer 執行檔複製進來
|
||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||
|
||||
# 3. 設定工作目錄
|
||||
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
|
||||
|
||||
# 🎯 5. 在容器內直接執行 composer install,把 vendor 長出來!
|
||||
# 加上 --no-dev 是因為生產環境不需要測試套件,速度會快非常多
|
||||
RUN composer install --no-interaction --optimize-autoloader --no-dev
|
||||
# 5. 補上自動載入優化
|
||||
RUN composer dump-autoload --optimize --no-dev
|
||||
|
||||
EXPOSE 9000
|
||||
|
||||
# 6. 啟動 Laravel HTTP 伺服器
|
||||
CMD ["php", "/var/www/artisan", "serve", "--host=0.0.0.0", "--port=9000"]
|
||||
@@ -1,4 +1,5 @@
|
||||
services:
|
||||
# 🐘 1. 你的 Laravel 後端服務
|
||||
finance-backend:
|
||||
build:
|
||||
context: .
|
||||
@@ -11,14 +12,36 @@ services:
|
||||
- APP_ENV=production
|
||||
- APP_DEBUG=false
|
||||
- DB_CONNECTION=pgsql
|
||||
- DB_HOST=161.118.239.140
|
||||
- DB_HOST=finance-postgres # 🎯 關鍵:改用資料庫的服務名稱當作 Host!
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=myfinance
|
||||
- DB_USERNAME=myfinance_henry4682
|
||||
- DB_PASSWORD=DwmQ78PB
|
||||
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:
|
||||
1panel-network: # 🎯 這裡一定要頂格(沒有縮排),定義這個外部網路
|
||||
external: true
|
||||
1panel-network:
|
||||
external: true
|
||||
|
||||
# 🎯 定義資料庫的儲存卷
|
||||
volumes:
|
||||
finance_db_data:
|
||||
Reference in New Issue
Block a user