|
@@ -58,62 +58,37 @@ fi
|
|
|
# 创建数据目录
|
|
# 创建数据目录
|
|
|
mkdir -p data
|
|
mkdir -p data
|
|
|
|
|
|
|
|
-# 检查是否需要重新构建镜像
|
|
|
|
|
|
|
+# 检查是否需要重新构建镜像(只有依赖变更才需要)
|
|
|
NEED_BUILD=false
|
|
NEED_BUILD=false
|
|
|
-NEED_FULL_BUILD=false
|
|
|
|
|
|
|
|
|
|
# 检查镜像是否存在
|
|
# 检查镜像是否存在
|
|
|
if ! docker image inspect lq-label-backend:latest > /dev/null 2>&1; then
|
|
if ! docker image inspect lq-label-backend:latest > /dev/null 2>&1; then
|
|
|
- echo "镜像不存在,需要完整构建..."
|
|
|
|
|
|
|
+ echo "镜像不存在,需要构建..."
|
|
|
NEED_BUILD=true
|
|
NEED_BUILD=true
|
|
|
- NEED_FULL_BUILD=true
|
|
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
-# 计算当前代码哈希(包含所有 Python 文件)
|
|
|
|
|
-# 依赖文件哈希(变更需要完整重建)
|
|
|
|
|
|
|
+# 依赖文件哈希(只有这些变更才需要重建镜像)
|
|
|
DEPS_HASH=$(md5sum requirements.txt Dockerfile 2>/dev/null | md5sum | cut -d' ' -f1)
|
|
DEPS_HASH=$(md5sum requirements.txt Dockerfile 2>/dev/null | md5sum | cut -d' ' -f1)
|
|
|
-# 代码文件哈希(变更只需增量重建)
|
|
|
|
|
-CODE_HASH=$(find . -name "*.py" -type f ! -path "./.pytest_cache/*" ! -path "./__pycache__/*" -exec md5sum {} \; 2>/dev/null | sort | md5sum | cut -d' ' -f1)
|
|
|
|
|
|
|
|
|
|
-# 检查依赖是否变更(需要完整重建,不使用缓存)
|
|
|
|
|
if [ -f ".last_deps_hash" ]; then
|
|
if [ -f ".last_deps_hash" ]; then
|
|
|
LAST_DEPS_HASH=$(cat .last_deps_hash)
|
|
LAST_DEPS_HASH=$(cat .last_deps_hash)
|
|
|
if [ "$DEPS_HASH" != "$LAST_DEPS_HASH" ]; then
|
|
if [ "$DEPS_HASH" != "$LAST_DEPS_HASH" ]; then
|
|
|
- echo "检测到依赖或 Dockerfile 变更,需要完整重建..."
|
|
|
|
|
|
|
+ echo "检测到依赖或 Dockerfile 变更,需要重建镜像..."
|
|
|
NEED_BUILD=true
|
|
NEED_BUILD=true
|
|
|
- NEED_FULL_BUILD=true
|
|
|
|
|
fi
|
|
fi
|
|
|
else
|
|
else
|
|
|
NEED_BUILD=true
|
|
NEED_BUILD=true
|
|
|
- NEED_FULL_BUILD=true
|
|
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
-# 检查代码是否变更(增量重建,使用缓存)
|
|
|
|
|
-if [ -f ".last_code_hash" ]; then
|
|
|
|
|
- LAST_CODE_HASH=$(cat .last_code_hash)
|
|
|
|
|
- if [ "$CODE_HASH" != "$LAST_CODE_HASH" ]; then
|
|
|
|
|
- echo "检测到 Python 代码变更,需要增量重建..."
|
|
|
|
|
- NEED_BUILD=true
|
|
|
|
|
- fi
|
|
|
|
|
-else
|
|
|
|
|
- NEED_BUILD=true
|
|
|
|
|
-fi
|
|
|
|
|
-
|
|
|
|
|
-# 执行构建
|
|
|
|
|
|
|
+# 执行构建(只在需要时)
|
|
|
if [ "$NEED_BUILD" = true ]; then
|
|
if [ "$NEED_BUILD" = true ]; then
|
|
|
- if [ "$NEED_FULL_BUILD" = true ]; then
|
|
|
|
|
- echo "执行完整构建(不使用缓存)..."
|
|
|
|
|
- docker build --no-cache -t lq-label-backend:latest .
|
|
|
|
|
- else
|
|
|
|
|
- echo "执行增量构建(使用缓存加速)..."
|
|
|
|
|
- docker build -t lq-label-backend:latest .
|
|
|
|
|
- fi
|
|
|
|
|
- # 保存哈希
|
|
|
|
|
|
|
+ echo "构建 Docker 镜像..."
|
|
|
|
|
+ docker build -t lq-label-backend:latest .
|
|
|
echo "$DEPS_HASH" > .last_deps_hash
|
|
echo "$DEPS_HASH" > .last_deps_hash
|
|
|
- echo "$CODE_HASH" > .last_code_hash
|
|
|
|
|
echo -e "${GREEN}镜像构建完成${NC}"
|
|
echo -e "${GREEN}镜像构建完成${NC}"
|
|
|
else
|
|
else
|
|
|
- echo "代码无变更,跳过构建"
|
|
|
|
|
|
|
+ echo -e "${GREEN}依赖无变更,跳过镜像构建${NC}"
|
|
|
|
|
+ echo "代码已通过 volume 挂载,重启容器即可生效"
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
echo "启动后端服务..."
|
|
echo "启动后端服务..."
|