GitHub Action中云存储下载文件夹无法复制进Docker容器
问题排查与解决方案
针对你遇到的GitHub Action中下载的fine_tuned_model文件夹无法被Docker镜像复制的问题,以下是具体排查方向和解决办法:
1. 检查.gitignore或.dockerignore的排除规则
如果仓库根目录存在.gitignore文件,且其中包含fine_tuned_model或相关路径,Docker构建时会默认读取.gitignore规则排除对应文件/目录,即便你在Action中手动下载了该文件夹也会被忽略。
解决办法:
- 在仓库根目录创建
.dockerignore文件,明确添加规则允许fine_tuned_model目录被包含:# 保留其他需要排除的规则,添加以下行 !fine_tuned_model/ - 若
.dockerignore中已有对该目录的排除规则,直接删除即可。
2. 验证Docker构建上下文与文件路径
确认下载后的文件夹结构是否符合预期:
- 你的Action执行
mkdir fine_tuned_model和gcloud storage cp -r gs://mlops/fine_tuned_lora fine_tuned_model/后,fine_tuned_model目录下会存在fine_tuned_lora子目录。 - 检查Dockerfile中是否找错路径:如果期望
/app/fine_tuned_lora存在,需调整COPY指令:COPY fine_tuned_model/fine_tuned_lora/ /app/fine_tuned_lora/
3. 禁用Docker构建缓存测试
Docker构建缓存可能复用旧镜像层,导致新下载的文件夹未被包含。可在Action的docker/build-push-action步骤中禁用缓存:
- uses: docker/build-push-action@v5 with: file: Dockerfile push: true tags: europe-docker.pkg.dev/team2137/trygg/app:${{ env.TAG }} no-cache: true # 添加此行禁用缓存
4. 在Dockerfile中添加调试步骤确认文件存在
修改Dockerfile,在COPY后添加目录查看命令,验证文件是否被复制:
FROM python:3.11 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . # 添加调试步骤,查看目录内容 RUN ls -la /app/fine_tuned_model CMD ["python", "app.py"]
重新运行Action,查看构建日志输出,确认fine_tuned_model目录下的文件是否存在。
5. 检查文件权限问题
若下载的文件/目录权限为root且限制其他用户读取,Docker构建时可能无法正常复制。可在Action的下载步骤后添加权限修改命令:
- name: 'Last ned LORA fra cloud bucket' run: | mkdir fine_tuned_model gcloud storage cp -r gs://mlops/fine_tuned_lora fine_tuned_model/ chmod -R 755 fine_tuned_model/ # 修改目录权限
内容的提问来源于stack exchange,提问作者SamTheGoodOne
相关产品推荐
相关产品推荐

