最終更新 5 months ago

這個 Makefile 專門為 Docker Compose 專案設計,它會自動抓取你當前資料夾的名稱當作專案名,省去手動設定的麻煩。裡面包辦了 Docker Compose 最常用的指令,像是啟動、停止、重新建置、查看日誌、進入容器等,讓你可以「一鍵搞定」專案操作。此外,它還提供了清理服務資料和未使用 Docker 資源的功能,讓你的工作環境保持乾淨,是管理 Docker Compose 專案的好幫手!

修正履歴 3c0d2d9f23ec9ba70ef3813f75d828385811c296

Makefile Raw
1# Makefile: 適用於 docker-compose 專案,自動取用當前資料夾為專案名
2
3COMPOSE := docker-compose
4COMPOSE_FILE := docker-compose.yml
5PROJECT_NAME := $(notdir $(CURDIR)) # 依照當前資料夾自動命名
6
7# 可選自訂 .env 變數(預設 docker-compose 自動載入)
8# ENV_FILE := .env
9
10.PHONY: help up down build restart logs ps exec clean prune
11
12help:
13 @echo "🔧 Docker Compose Makefile 指令:"
14 @echo " make up - 啟動所有服務 (背景執行)"
15 @echo " make up-fg - 前景執行(方便除錯)"
16 @echo " make down - 停止並移除服務容器"
17 @echo " make build - 重新建構服務映像檔"
18 @echo " make restart - 重啟所有服務"
19 @echo " make logs - 查看服務日誌"
20 @echo " make ps - 顯示服務狀態"
21 @echo " make exec - 進入主要容器 shell"
22 @echo " make clean - 清理所有服務資料(含 volume)"
23 @echo " make prune - 清除未使用的資源"
24
25up:
26 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) up -d
27
28up-fg:
29 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) up
30
31down:
32 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) down
33
34build:
35 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) build
36
37restart:
38 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) down
39 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) up -d
40
41logs:
42 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) logs -f --tail=100
43
44ps:
45 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) ps
46
47exec:
48 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) exec app sh
49
50clean:
51 $(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) down -v --remove-orphans
52
53prune:
54 docker system prune -af --volumes
55