You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker打包含子模块的dq-mod仓库:common_utils复制失败求助

解决Docker构建与运行时Git子模块的问题

一、构建时将common_utils内容打包进镜像

问题核心是Git子模块默认仅保存引用信息,未拉取实际文件,Docker构建时需主动初始化拉取子模块内容。修改Dockerfile如下:

# 替换为你的业务所需基础镜像,比如python:3.9-slim
FROM python:3.9-slim

WORKDIR /app

# 安装Git(若基础镜像已自带可省略)
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*

# 复制子模块配置文件与Git元数据,用于初始化子模块
COPY .gitmodules .
COPY .git/ .git/

# 初始化并拉取子模块完整内容,--recursive适配嵌套子模块场景
RUN git submodule init && git submodule update --recursive

# 复制所有仓库文件到镜像工作目录(含已拉取的common_utils)
COPY . .

# 创建utils目录(若不存在)并复制common_utils内容
RUN mkdir -p utils && cp -r common_utils/* utils/

# 后续添加依赖安装等业务步骤,示例:
RUN pip install -r requirements.txt

CMD ["./start.sh"]

二、运行时自动拉取common_utils最新内容

修改start.sh,在启动主程序前更新子模块并同步到utils目录:

#!/bin/bash

# 拉取common_utils最新代码(替换为子模块实际默认分支,如master)
cd common_utils
git pull origin main
cd ..

# 同步最新内容到utils目录
cp -r common_utils/* utils/

# 启动主程序
python main.py

三、常见问题排查

  • 若构建时Git命令报错,检查基础镜像是否已安装Git,或子模块远程仓库地址在.gitmodules中是否配置正确
  • 确认复制命令路径无误:工作目录是否为/app,utils目录是否提前创建
  • 若运行时拉取失败,检查容器网络是否能访问子模块的Git仓库

内容的提问来源于stack exchange,提问作者fancybear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:52:02