瀏覽代碼

-fix:修复docker镜像构建问题

LuoChinWen 3 周之前
父節點
當前提交
613a757db7
共有 2 個文件被更改,包括 11 次插入34 次删除
  1. 2 0
      backend/docker-compose.yml
  2. 9 34
      deploy.sh

+ 2 - 0
backend/docker-compose.yml

@@ -10,6 +10,8 @@ services:
     ports:
       - "8003:8000"
     volumes:
+      # 挂载代码目录(代码更新无需重新构建镜像)
+      - .:/app
       # 持久化数据库文件
       - ./data:/app/data
       # 挂载生产环境配置文件

+ 9 - 34
deploy.sh

@@ -58,62 +58,37 @@ fi
 # 创建数据目录
 mkdir -p data
 
-# 检查是否需要重新构建镜像
+# 检查是否需要重新构建镜像(只有依赖变更才需要)
 NEED_BUILD=false
-NEED_FULL_BUILD=false
 
 # 检查镜像是否存在
 if ! docker image inspect lq-label-backend:latest > /dev/null 2>&1; then
-    echo "镜像不存在,需要完整构建..."
+    echo "镜像不存在,需要构建..."
     NEED_BUILD=true
-    NEED_FULL_BUILD=true
 fi
 
-# 计算当前代码哈希(包含所有 Python 文件)
-# 依赖文件哈希(变更需要完整重建)
+# 依赖文件哈希(只有这些变更才需要重建镜像)
 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
     LAST_DEPS_HASH=$(cat .last_deps_hash)
     if [ "$DEPS_HASH" != "$LAST_DEPS_HASH" ]; then
-        echo "检测到依赖或 Dockerfile 变更,需要完整重建..."
+        echo "检测到依赖或 Dockerfile 变更,需要重建镜像..."
         NEED_BUILD=true
-        NEED_FULL_BUILD=true
     fi
 else
     NEED_BUILD=true
-    NEED_FULL_BUILD=true
 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_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 "$CODE_HASH" > .last_code_hash
     echo -e "${GREEN}镜像构建完成${NC}"
 else
-    echo "代码无变更,跳过构建"
+    echo -e "${GREEN}依赖无变更,跳过镜像构建${NC}"
+    echo "代码已通过 volume 挂载,重启容器即可生效"
 fi
 
 echo "启动后端服务..."