Github Actions中使用docker/build-push-action构建镜像找不到Dockerfile
问题解决:Github Actions中docker/build-push-action@v2找不到Dockerfile
问题描述
使用原生docker build命令可正常找到Dockerfile并构建镜像:
- name: Build the Docker image run: docker build . --file Dockerfile --build-arg NPM_TOKEN=${{ secrets.TOKEN }} --tag my-image-name:$(date +%s)
但切换为docker/build-push-action@v2动作后,出现找不到Dockerfile的报错:
- name: Docker Build and Push uses: docker/build-push-action@v2 with: context: . file: Dockerfile tags: my-image-name:t10 build-args: | "NPM_TOKEN=${{ secrets.TOKEN }}" push: true
报错信息:
Error: buildx failed with: error: failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount4215207778/Dockerfile: no such file or directory
目录结构:项目根目录下包含Dockerfile、.github/workflows/工作流文件及其他项目文件。
解决方案
问题出在build-args的格式错误,多行写法的参数无需添加双引号,修改后的配置如下:
- name: Docker Build and Push uses: docker/build-push-action@v2 with: context: . file: Dockerfile tags: my-image-name:t10 build-args: | NPM_TOKEN=${{ secrets.TOKEN }} push: true
原因说明
docker/build-push-action的build-args参数采用多行写法时,直接以KEY=VALUE格式编写即可,额外添加的双引号会被解析为参数值的一部分,导致buildkit处理构建参数时出现异常,间接引发Dockerfile路径解析错误。
另外可确认context和file路径的正确性:
context: .表示使用当前工作目录作为构建上下文,对应Github Actions中的${{ github.workspace }}file: Dockerfile表示在构建上下文根目录查找Dockerfile,和docker build命令的路径逻辑一致,配置无误。
内容的提问来源于stack exchange,提问作者Junius L
相关产品推荐
相关产品推荐

