GitHub Actions执行Docker Push时无法找到Dockerfile正确路径的问题
问题分析
这个错误是因为Docker构建步骤中指定的Dockerfile路径不正确,和仓库名与代码目录名是否一致无关,GitHub Actions的路径生成逻辑是正常的。
错误提示里的重复目录名是GitHub Actions的默认工作目录结构导致的:默认情况下,actions/checkout会将代码克隆到/home/runner/work/<仓库名>/<仓库名>目录下(即$GITHUB_WORKSPACE),你的系统正是在这个默认工作目录下查找Dockerfile,但实际Dockerfile在该目录下的DockerDeployDemoVS22Ent子目录中,所以找不到文件。
解决方案
修正Docker构建命令的路径
- 如果使用原生
docker build命令,需要明确指定Dockerfile的子目录路径:docker build -f ./DockerDeployDemoVS22Ent/Dockerfile . - 如果使用Docker官方的GitHub Action(如
docker/build-push-action@v5),需要在action参数中指定正确的Dockerfile路径:- name: Build and push uses: docker/build-push-action@v5 with: context: . dockerfile: DockerDeployDemoVS22Ent/Dockerfile push: true tags: your-acr-name.azurecr.io/your-image:latest
- 如果使用原生
验证目录结构(可选)
在workflow中添加一步打印当前目录和文件结构的命令,方便确认代码的实际位置:- name: Inspect directory structure run: | pwd ls -R执行后可以在GitHub Actions日志中看到所有文件的路径,确保Dockerfile的路径与构建命令中的指定一致。
检查checkout步骤配置
如果你修改了actions/checkout的path参数,会改变代码的克隆位置,需要对应调整Dockerfile的路径。例如如果设置了path: ./my-code,那么Dockerfile的路径应该是./my-code/DockerDeployDemoVS22Ent/Dockerfile。默认情况下不需要指定path参数,保持默认配置即可。
内容的提问来源于stack exchange,提问作者user1585204
相关产品推荐
相关产品推荐

