最終更新 5 months ago

這個 Makefile 讓 Docker Compose 專案管理變超簡單!它會自動用資料夾名稱當專案名。你可以用它來啟動、停止、重啟服務,也能輕鬆備份和還原 PostgreSQL 資料庫(還原是「砍掉重練」等級,要小心用喔!)。它還能幫你清理 Docker 資源,解決一些「技術債」。配合 `docker-compose.yml`,資料庫服務設定好好的,資料會自動存起來,連初始化腳本的換行符號都會自動搞定,超貼心!

修正履歴 deecd38de674dbbbfe75f3dc563016c4a61bd396

docker-compose.yml Raw
1db:
2 image: postgres:15
3 container_name: app_db
4 environment:
5 POSTGRES_USER: ${DB_USER:-postgres}
6 POSTGRES_DB: ${DB_NAME:-app_db}
7 POSTGRES_PASSWORD: ${DB_PASSWORD:-password}
8 healthcheck:
9 test: [ "CMD-SHELL", "pg_isready -d ${DB_NAME:-app_db} -U ${DB_USER:-postgres}" ]
10 interval: 10s
11 timeout: 5s
12 retries: 5
13 restart: unless-stopped
14 networks:
15 - app_network
16 volumes:
17 - app_postgres_data:/var/lib/postgresql/data
18 - type: bind
19 source: ./database_init # 假設你的初始化腳本放在專案根目錄下的 database_init 資料夾
20 target: /docker-entrypoint-initdb.d
21 consistency: cached
22 command: >
23 bash -c ' if command -v apt-get >/dev/null 2>&1; then
24 apt-get update && apt-get install -y dos2unix
25 elif command -v apk >/dev/null 2>&1; then
26 apk add --no-cache dos2unix
27 fi && find /docker-entrypoint-initdb.d -type f -name "*.sh" -exec sh -c '\''
28 dos2unix "{}" 2>/dev/null || true
29 chmod +x "{}"
30 '\'' \; && exec docker-entrypoint.sh postgres '
31
32volumes:
33 app_postgres_data: # 定義給 PostgreSQL 數據用的 volume
34
35networks:
36 app_network: # 定義給服務串接用的網路