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

Docker本地运行正常但GitHub Actions构建失败:文件或目录不存在

解决GitHub Actions中Docker构建chmod失败问题

问题描述

本地构建Docker镜像完全正常,但执行GitHub Actions工作流时出现如下报错:

ERROR: failed to solve: process "/bin/sh -c chmod +x /app/wisecow/wisecow.sh" did not complete successfully: exit code: 1 Error: buildx failed with: ERROR: failed to solve: process "/bin/sh -c chmod +x /app/wisecow/wisecow.sh" did not complete successfully: exit code: 1

原因分析

结合你提供的Workflow和Dockerfile来看,核心问题是构建上下文路径不一致:

  • 本地构建时,你大概率是在./app目录下执行docker build,此时Dockerfile中的COPY wisecow/ /app/wisecow会读取./app/wisecow目录下的文件
  • 但GitHub Actions中,docker/build-push-action的构建上下文设置为根目录(context: .),而Workflow里的defaults.run.working-directory: ./app仅影响run步骤,不改变Docker构建的上下文路径。这就导致Docker在构建时找不到根目录下的wisecow目录,文件复制失败,后续chmod命令因找不到目标文件报错。

解决方案

方案1:调整Docker构建上下文与本地一致

修改GitHub Actions工作流中的Build and push Docker image步骤,将构建上下文改为./app,同时指定Dockerfile的完整路径:

- name: Build and push Docker image
  uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
  with:
    context: ./app
    file: ./app/Dockerfile
    push: true
    tags: ${{ steps.meta.outputs.tags }}
    labels: ${{ steps.meta.outputs.labels }}

方案2:修改Dockerfile中的COPY路径

如果不想调整构建上下文,可以修改Dockerfile中的COPY命令,指定相对于仓库根目录的路径:

# Copy the shell script into the image
COPY app/wisecow/ /app/wisecow

辅助排查步骤(可选)

如果上述方案无效,可以在Dockerfile的RUN chmod命令前添加文件检查步骤,确认文件是否被正确复制:

# Verify file exists before chmod
RUN ls -la /app/wisecow/
# Make the script executable
RUN chmod +x /app/wisecow/wisecow.sh

同时检查仓库中wisecow.sh是否被正确提交,没有被.gitignore规则忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:00:01