REGISTRY ?= your-registry BACKEND_IMAGE ?= $(REGISTRY)/stock-tracker-backend FRONTEND_IMAGE ?= $(REGISTRY)/stock-tracker-frontend TAG ?= latest PLATFORMS ?= linux/amd64,linux/arm64 .PHONY: help build build-backend build-frontend push push-backend \ push-frontend multiarch multiarch-backend multiarch-frontend \ compose-up compose-down compose-build clean help: ## 显示帮助信息 @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \ awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' # ── 本地构建(当前架构) ────────────────────────────────── build: build-backend build-frontend ## 构建后端和前端镜像(当前架构) build-backend: ## 构建后端镜像 docker build -t $(BACKEND_IMAGE):$(TAG) ./backend build-frontend: ## 构建前端镜像 docker build -t $(FRONTEND_IMAGE):$(TAG) ./frontend # ── 推送单架构镜像 ────────────────────────────────────── push: push-backend push-frontend ## 推送后端和前端镜像 push-backend: build-backend ## 构建并推送后端镜像 docker push $(BACKEND_IMAGE):$(TAG) push-frontend: build-frontend ## 构建并推送前端镜像 docker push $(FRONTEND_IMAGE):$(TAG) # ── 多架构构建(arm64 + amd64) ───────────────────────── multiarch: multiarch-backend multiarch-frontend ## 构建并推送多架构镜像(arm64 + amd64) multiarch-backend: ## 构建并推送后端多架构镜像 docker buildx build \ --platform $(PLATFORMS) \ -t $(BACKEND_IMAGE):$(TAG) \ ./backend \ --push multiarch-frontend: ## 构建并推送前端多架构镜像 docker buildx build \ --platform $(PLATFORMS) \ -t $(FRONTEND_IMAGE):$(TAG) \ ./frontend \ --push # ── docker compose 管理 ──────────────────────────────── compose-up: ## 启动所有服务 docker compose up -d compose-down: ## 停止所有服务 docker compose down compose-build: ## 构建所有服务(本地架构) docker compose build # ── 清理 ─────────────────────────────────────────────── clean: ## 清理本地构建的镜像 -docker rmi $(BACKEND_IMAGE):$(TAG) 2>/dev/null || true -docker rmi $(FRONTEND_IMAGE):$(TAG) 2>/dev/null || true