diff --git a/docker/urbanLifeline/Makefile b/docker/urbanLifeline/Makefile index 9c545bd3..760ebc5f 100644 --- a/docker/urbanLifeline/Makefile +++ b/docker/urbanLifeline/Makefile @@ -2,45 +2,162 @@ # Urban Lifeline - Docker 构建与部署 (All-in-One) # ================================================ -.PHONY: help build build-serv build-web up down logs ps status restart +.PHONY: help build build-pg build-base build-serv build-web up down logs ps status restart +.PHONY: save save-pg save-base save-serv save-web + +# 项目根目录 (相对于此 Makefile) +ROOT_DIR := ../.. + +# 镜像导出目录 +EXPORT_DIR := ./images + +# 时间戳标签 +TIMESTAMP := $(shell date +%Y%m%d_%H%M%S) # 默认目标 help: @echo "Urban Lifeline Docker 命令 (All-in-One 模式)" @echo "" @echo "构建命令:" - @echo " make build - 构建所有镜像" - @echo " make build-serv - 构建后端镜像" - @echo " make build-web - 构建前端镜像" + @echo " make build - 构建所有镜像 (pg + base + serv + web)" + @echo " make build-pg - 构建 PostgreSQL 镜像" + @echo " make build-base - 构建后端基础镜像" + @echo " make build-serv - 构建后端服务镜像 (依赖 base)" + @echo " make build-web - 构建前端镜像" + @echo "" + @echo "构建并导出 (SAVE=1):" + @echo " make build-pg SAVE=1 - 构建并导出 PostgreSQL 镜像" + @echo " make build-serv SAVE=1 - 构建并导出后端镜像" + @echo " make build-web SAVE=1 - 构建并导出前端镜像" + @echo " make build SAVE=1 - 构建并导出所有镜像" + @echo "" + @echo "导出命令:" + @echo " make save - 导出所有镜像" + @echo " make save-pg - 导出 PostgreSQL 镜像" + @echo " make save-base - 导出后端基础镜像" + @echo " make save-serv - 导出后端服务镜像" + @echo " make save-web - 导出前端镜像" @echo "" @echo "启动/停止:" - @echo " make up - 启动所有服务" - @echo " make down - 停止所有服务" + @echo " make up - 启动所有服务" + @echo " make down - 停止所有服务" @echo "" @echo "管理命令:" - @echo " make ps - 查看容器状态" - @echo " make status - 查看服务状态" - @echo " make logs - 查看日志" + @echo " make ps - 查看容器状态" + @echo " make status - 查看服务状态" + @echo " make logs - 查看日志" @echo " make restart-serv SERVICE=gateway - 重启后端服务" @echo " make restart-web SITE=platform - 重启前端站点" + @echo "" + @echo "镜像导出目录: $(EXPORT_DIR)" -# 构建 -build: build-serv build-web +# ============================================ +# 构建镜像 +# ============================================ -build-serv: - bash serv/build.sh +# 构建所有镜像 +build: build-pg build-base build-serv build-web +ifdef SAVE + @$(MAKE) save +endif +# 构建 PostgreSQL 镜像 +build-pg: + @echo "==========================================" + @echo " 构建 PostgreSQL 镜像" + @echo " 标签: $(TIMESTAMP) / latest" + @echo "==========================================" + docker build -t urban-lifeline-pg:$(TIMESTAMP) -f postgres/Dockerfile.pg postgres/ + docker tag urban-lifeline-pg:$(TIMESTAMP) urban-lifeline-pg:latest +ifdef SAVE + @$(MAKE) save-pg +endif + +# 构建后端基础镜像 +build-base: + @echo "==========================================" + @echo " 构建后端基础镜像" + @echo " 标签: $(TIMESTAMP) / latest" + @echo "==========================================" + cd $(ROOT_DIR) && docker build -t urban-lifeline-base-serv:$(TIMESTAMP) -f docker/urbanLifeline/serv/Dockerfile.base . + docker tag urban-lifeline-base-serv:$(TIMESTAMP) urban-lifeline-base-serv:latest +ifdef SAVE + @$(MAKE) save-base +endif + +# 构建后端服务镜像 (依赖 base 镜像) +build-serv: build-base + @echo "==========================================" + @echo " 构建后端服务镜像" + @echo " 标签: $(TIMESTAMP) / latest" + @echo "==========================================" + cd $(ROOT_DIR) && docker build -t urban-lifeline-serv:$(TIMESTAMP) -f docker/urbanLifeline/serv/Dockerfile.serv . + docker tag urban-lifeline-serv:$(TIMESTAMP) urban-lifeline-serv:latest +ifdef SAVE + @$(MAKE) save-serv +endif + +# 构建前端镜像 build-web: - bash web/build.sh + @echo "==========================================" + @echo " 构建前端镜像" + @echo " 标签: $(TIMESTAMP) / latest" + @echo "==========================================" + cd $(ROOT_DIR) && docker build -t urban-lifeline-web:$(TIMESTAMP) -f docker/urbanLifeline/web/Dockerfile.web . + docker tag urban-lifeline-web:$(TIMESTAMP) urban-lifeline-web:latest +ifdef SAVE + @$(MAKE) save-web +endif + +# ============================================ +# 导出镜像 +# ============================================ + +# 创建导出目录 +$(EXPORT_DIR): + mkdir -p $(EXPORT_DIR) + +# 导出所有镜像 +save: save-pg save-base save-serv save-web + +# 导出 PostgreSQL 镜像 +save-pg: $(EXPORT_DIR) + @echo "导出 PostgreSQL 镜像..." + docker save urban-lifeline-pg:latest | gzip > $(EXPORT_DIR)/urban-lifeline-pg.tar.gz + @echo "已导出: $(EXPORT_DIR)/urban-lifeline-pg.tar.gz" + +# 导出后端基础镜像 +save-base: $(EXPORT_DIR) + @echo "导出后端基础镜像..." + docker save urban-lifeline-base-serv:latest | gzip > $(EXPORT_DIR)/urban-lifeline-base-serv.tar.gz + @echo "已导出: $(EXPORT_DIR)/urban-lifeline-base-serv.tar.gz" + +# 导出后端服务镜像 +save-serv: $(EXPORT_DIR) + @echo "导出后端服务镜像..." + docker save urban-lifeline-serv:latest | gzip > $(EXPORT_DIR)/urban-lifeline-serv.tar.gz + @echo "已导出: $(EXPORT_DIR)/urban-lifeline-serv.tar.gz" + +# 导出前端镜像 +save-web: $(EXPORT_DIR) + @echo "导出前端镜像..." + docker save urban-lifeline-web:latest | gzip > $(EXPORT_DIR)/urban-lifeline-web.tar.gz + @echo "已导出: $(EXPORT_DIR)/urban-lifeline-web.tar.gz" + +# ============================================ +# 启动/停止 +# ============================================ -# 启动/停止 (通过主 docker-compose) up: cd .. && docker compose --profile all up -d down: cd .. && docker compose --profile all down -# 状态 +# ============================================ +# 状态查看 +# ============================================ + ps: docker ps --filter "name=urban-lifeline" @@ -51,7 +168,10 @@ status: @echo "=== 前端服务状态 ===" @docker exec urban-lifeline-web /app/web-manager.sh status 2>/dev/null || echo "前端容器未运行" +# ============================================ # 日志 +# ============================================ + logs: cd .. && docker compose logs -f --tail=100 @@ -61,7 +181,10 @@ logs-serv: logs-web: docker logs -f --tail=100 urban-lifeline-web +# ============================================ # 重启单个服务 +# ============================================ + restart-serv: @if [ -z "$(SERVICE)" ]; then \ echo "用法: make restart-serv SERVICE=gateway"; \ diff --git a/docker/urbanLifeline/serv/service-manager.sh b/docker/urbanLifeline/serv/service-manager.sh index f01d98ed..ca11c6bc 100644 --- a/docker/urbanLifeline/serv/service-manager.sh +++ b/docker/urbanLifeline/serv/service-manager.sh @@ -25,12 +25,12 @@ declare -A SERVICES=( ["system"]="8082:384m" ["auth"]="8081:256m" ["file"]="8084:256m" - ["log"]="8083:192m" - ["message"]="8085:256m" - ["crontab"]="8086:192m" + # ["log"]="8083:192m" + # ["message"]="8085:256m" + # ["crontab"]="8086:192m" ["ai"]="8090:384m" - ["bidding"]="8087:256m" - ["platform"]="8089:256m" + # ["bidding"]="8087:256m" + # ["platform"]="8089:256m" ["workcase"]="8088:384m" ) diff --git a/docker/urbanLifeline/web/web-manager.sh b/docker/urbanLifeline/web/web-manager.sh index f5549501..cea6d9e3 100644 --- a/docker/urbanLifeline/web/web-manager.sh +++ b/docker/urbanLifeline/web/web-manager.sh @@ -57,7 +57,7 @@ declare -A WEBS=( ["shared"]="SHARED_PORT:8000" ["platform"]="PLATFORM_PORT:8001" ["workcase"]="WORKCASE_PORT:8002" - ["bidding"]="BIDDING_PORT:8003" + # ["bidding"]="BIDDING_PORT:8003" ["workcase_wechat"]="WORKCASE_WECHAT_PORT:8004" )