GitLab CI/CD部署Flask应用时遇Dockerfile缺失错误
解决GitLab CI/CD + Cloud Build部署时找不到Dockerfile的问题
错误根源
Cloud Build执行Docker构建时提示unable to evaluate symlinks in Dockerfile path: lstat /workspace/Dockerfile: no such file or directory,核心原因是Cloud Build收到的构建上下文里没有Dockerfile。
排查与解决步骤
1. 确认新仓库的Dockerfile状态
- 检查
fts_im仓库根目录是否存在Dockerfile,并且已提交到GitLab:本地执行git status确认Dockerfile不在未跟踪列表,执行git log --oneline查看是否有提交Dockerfile的记录。 - 检查仓库的
.gitignore文件,确保没有包含Dockerfile或类似*Dockerfile的规则,避免Dockerfile被Git忽略。
2. 在GitLab CI中添加调试步骤验证上下文
在.gitlab-ci.yml的script部分,gcloud builds submit命令前添加目录检查,确认当前工作目录存在Dockerfile:
script: # ... 原有步骤 ... - ls -la # 列出当前目录所有文件,确认Dockerfile存在 - gcloud builds submit . --config=cloudbuild.yaml
运行CI流水线后查看日志,确认ls -la输出里包含Dockerfile。
3. 确认Cloud Build的上下文与Dockerfile路径
如果Dockerfile不在项目根目录,需要修改Cloud Build的构建步骤指定路径:
比如Dockerfile在./docker目录下,修改cloudbuild.yaml:
steps: - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/fts-im', '-f', './docker/Dockerfile', '.']
4. 检查DVC操作是否影响目录结构
确认dvc pull操作不会移动或删除根目录的Dockerfile,比如是否存在DVC配置意外覆盖根目录文件的情况。
内容的提问来源于stack exchange,提问作者sandepp
相关产品推荐
相关产品推荐

