1- # AIX-DB All-in-One 镜像构建配置
2- # 包含:前端(nginx) + 后端 + MinIO + PostgreSQL
1+ # AIX-DB 镜像构建配置
2+ # 包含:基础镜像 + 应用镜像
33
4- # 项目名称和版本
4+ # ============ 版本配置 ============
5+
6+ # 项目名称和应用版本
57PROJECT_NAME = aix-db
68VERSION = 1.2.2
79
10+ # 基础镜像版本(依赖变更时更新此版本号)
11+ BASE_VERSION = 1.0.0
12+
13+ # ============ 镜像名称配置 ============
14+
815# Docker Hub 镜像
916DOCKER_IMAGE = apconw/$(PROJECT_NAME ) :$(VERSION )
17+ BASE_IMAGE = apconw/$(PROJECT_NAME ) -base:$(BASE_VERSION )
18+ BASE_IMAGE_LATEST = apconw/$(PROJECT_NAME ) -base:latest
1019
1120# 阿里云镜像仓库
1221ALIYUN_REGISTRY = crpi-7xkxsdc0iki61l0q.cn-hangzhou.personal.cr.aliyuncs.com
1322ALIYUN_NAMESPACE = apconw
1423ALIYUN_IMAGE = $(ALIYUN_REGISTRY ) /$(ALIYUN_NAMESPACE ) /$(PROJECT_NAME ) :$(VERSION )
24+ ALIYUN_BASE_IMAGE = $(ALIYUN_REGISTRY ) /$(ALIYUN_NAMESPACE ) /$(PROJECT_NAME ) -base:$(BASE_VERSION )
25+ ALIYUN_BASE_IMAGE_LATEST = $(ALIYUN_REGISTRY ) /$(ALIYUN_NAMESPACE ) /$(PROJECT_NAME ) -base:latest
1526
1627# Dockerfile 路径
1728DOCKERFILE = ./docker/Dockerfile
29+ DOCKERFILE_BASE = ./docker/Dockerfile.base
30+
31+ # ============ 基础镜像构建(依赖变更时执行) ============
32+
33+ # 构建基础镜像(本地,当前架构)
34+ # 使用场景:pyproject.toml、uv.lock、package.json、pnpm-lock.yaml 变更时
35+ build-base :
36+ @echo " 🔨 构建基础镜像 $( BASE_IMAGE) ..."
37+ docker build --no-cache -t $(BASE_IMAGE ) -t $(BASE_IMAGE_LATEST ) -f $(DOCKERFILE_BASE ) .
38+ @echo " ✅ 基础镜像构建完成"
39+
40+ # 构建基础镜像(使用缓存)
41+ build-base-cache :
42+ @echo " 🔨 构建基础镜像 $( BASE_IMAGE) (使用缓存)..."
43+ docker build -t $(BASE_IMAGE ) -t $(BASE_IMAGE_LATEST ) -f $(DOCKERFILE_BASE ) .
44+ @echo " ✅ 基础镜像构建完成"
45+
46+ # 推送基础镜像至 Docker Hub(多架构)
47+ push-base :
48+ @echo " 📤 推送基础镜像至 Docker Hub..."
49+ docker buildx build --platform linux/amd64,linux/arm64 --push \
50+ -t $(BASE_IMAGE ) \
51+ -t $(BASE_IMAGE_LATEST ) \
52+ -f $(DOCKERFILE_BASE ) .
53+ @echo " ✅ 基础镜像推送完成"
54+
55+ # 推送基础镜像至阿里云(多架构)
56+ push-base-aliyun :
57+ @echo " 📤 推送基础镜像至阿里云..."
58+ docker buildx build --platform linux/amd64,linux/arm64 --push \
59+ -t $(ALIYUN_BASE_IMAGE ) \
60+ -t $(ALIYUN_BASE_IMAGE_LATEST ) \
61+ -f $(DOCKERFILE_BASE ) .
62+ @echo " ✅ 基础镜像推送完成"
63+
64+ # 推送基础镜像至所有仓库
65+ push-base-all :
66+ @echo " 📤 推送基础镜像至所有仓库..."
67+ docker buildx build --platform linux/amd64,linux/arm64 --push \
68+ -t $(BASE_IMAGE ) \
69+ -t $(BASE_IMAGE_LATEST ) \
70+ -t $(ALIYUN_BASE_IMAGE ) \
71+ -t $(ALIYUN_BASE_IMAGE_LATEST ) \
72+ -f $(DOCKERFILE_BASE ) .
73+ @echo " ✅ 基础镜像推送完成"
1874
19- # ============ 本地构建 ============
75+ # ============ 应用镜像构建(日常发版使用) ============
2076
21- # 构建镜像(本地,当前架构)
77+ # 快速构建应用镜像(基于基础镜像,仅复制源码)
78+ # 构建时间:~30秒
2279build :
23- docker build --no-cache -t $(DOCKER_IMAGE ) -f $(DOCKERFILE ) .
80+ @echo " 🚀 快速构建应用镜像 $( DOCKER_IMAGE) ..."
81+ docker build -t $(DOCKER_IMAGE ) \
82+ --build-arg BASE_IMAGE=$(BASE_IMAGE_LATEST ) \
83+ -f $(DOCKERFILE ) .
84+ @echo " ✅ 应用镜像构建完成"
2485
25- # 构建镜像(使用缓存,加快构建速度)
26- build-cache :
27- docker build -t $(DOCKER_IMAGE ) -f $(DOCKERFILE ) .
86+ # 构建应用镜像(指定基础镜像版本)
87+ build-with-base-version :
88+ @echo " 🚀 构建应用镜像(基础镜像: $( BASE_IMAGE) )..."
89+ docker build -t $(DOCKER_IMAGE ) \
90+ --build-arg BASE_IMAGE=$(BASE_IMAGE ) \
91+ -f $(DOCKERFILE ) .
92+ @echo " ✅ 应用镜像构建完成"
2893
29- # ============ 多架构构建并推送 ============
94+ # ============ 多架构构建并推送(应用镜像) ============
3095
3196# 构建多架构镜像并推送至 Docker Hub
3297push-dockerhub :
33- docker buildx build --platform linux/amd64,linux/arm64 --push -t $(DOCKER_IMAGE ) -f $(DOCKERFILE ) .
98+ @echo " 📤 推送应用镜像至 Docker Hub..."
99+ docker buildx build --platform linux/amd64,linux/arm64 --push \
100+ --build-arg BASE_IMAGE=$(BASE_IMAGE_LATEST ) \
101+ -t $(DOCKER_IMAGE ) \
102+ -f $(DOCKERFILE ) .
103+ @echo " ✅ 应用镜像推送完成"
34104
35105# 构建多架构镜像并推送至阿里云
36106push-aliyun :
37- docker buildx build --platform linux/amd64,linux/arm64 --push -t $(ALIYUN_IMAGE ) -f $(DOCKERFILE ) .
107+ @echo " 📤 推送应用镜像至阿里云..."
108+ docker buildx build --platform linux/amd64,linux/arm64 --push \
109+ --build-arg BASE_IMAGE=$(ALIYUN_BASE_IMAGE_LATEST ) \
110+ -t $(ALIYUN_IMAGE ) \
111+ -f $(DOCKERFILE ) .
112+ @echo " ✅ 应用镜像推送完成"
38113
39114# 同时推送至 Docker Hub 和阿里云
40115push-all :
116+ @echo " 📤 推送应用镜像至所有仓库..."
41117 docker buildx build --platform linux/amd64,linux/arm64 --push \
118+ --build-arg BASE_IMAGE=$(BASE_IMAGE_LATEST ) \
42119 -t $(DOCKER_IMAGE ) \
43120 -t $(ALIYUN_IMAGE ) \
44121 -f $(DOCKERFILE ) .
122+ @echo " ✅ 应用镜像推送完成"
45123
46124# ============ Docker Compose 操作 ============
47125
@@ -63,13 +141,52 @@ restart:
63141
64142# ============ 清理 ============
65143
66- # 清理本地镜像
144+ # 清理本地应用镜像
67145clean :
68146 docker rmi $(DOCKER_IMAGE ) 2> /dev/null || true
69147
70- # 清理所有构建缓存
148+ # 清理本地基础镜像
149+ clean-base :
150+ docker rmi $(BASE_IMAGE ) $(BASE_IMAGE_LATEST ) 2> /dev/null || true
151+
152+ # 清理所有本地镜像和构建缓存
71153clean-all :
72154 docker rmi $(DOCKER_IMAGE ) 2> /dev/null || true
155+ docker rmi $(BASE_IMAGE ) $(BASE_IMAGE_LATEST ) 2> /dev/null || true
73156 docker builder prune -f
74157
75- .PHONY : build build-cache push-dockerhub push-aliyun push-all up down logs restart clean clean-all
158+ # ============ 帮助信息 ============
159+
160+ help :
161+ @echo " "
162+ @echo " AIX-DB Docker 镜像构建命令"
163+ @echo " =========================="
164+ @echo " "
165+ @echo " 📦 基础镜像(依赖变更时执行):"
166+ @echo " make build-base - 构建基础镜像(本地)"
167+ @echo " make build-base-cache - 构建基础镜像(使用缓存)"
168+ @echo " make push-base - 推送基础镜像至 Docker Hub"
169+ @echo " make push-base-aliyun - 推送基础镜像至阿里云"
170+ @echo " make push-base-all - 推送基础镜像至所有仓库"
171+ @echo " "
172+ @echo " 🚀 应用镜像(日常发版):"
173+ @echo " make build - 快速构建应用镜像(~30秒)"
174+ @echo " make push-dockerhub - 推送至 Docker Hub"
175+ @echo " make push-aliyun - 推送至阿里云"
176+ @echo " make push-all - 推送至所有仓库"
177+ @echo " "
178+ @echo " 🐳 Docker Compose:"
179+ @echo " make up - 启动服务"
180+ @echo " make down - 停止服务"
181+ @echo " make logs - 查看日志"
182+ @echo " make restart - 重启服务"
183+ @echo " "
184+ @echo " 🧹 清理:"
185+ @echo " make clean - 清理应用镜像"
186+ @echo " make clean-base - 清理基础镜像"
187+ @echo " make clean-all - 清理所有镜像和缓存"
188+ @echo " "
189+
190+ .PHONY : build-base build-base-cache push-base push-base-aliyun push-base-all \
191+ build build-with-base-version push-dockerhub push-aliyun push-all \
192+ up down logs restart clean clean-base clean-all help
0 commit comments