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

使用Github Actions构建子目录Dockerfile报错:路径未找到

解决GitHub Actions构建子目录Dockerfile的路径错误问题

问题根源

你设置的context: ../../../encoding路径完全错误:GitHub Actions执行actions/checkout@v2后,工作目录是仓库的根目录(即app文件夹),往上三级的路径根本不存在,导致构建时无法找到上下文路径。

修正步骤

1. 调整build.yml中的构建参数

修改docker/build-push-action@v2的配置,正确指定上下文和Dockerfile路径:

- name: Build Docker image 
  uses: docker/build-push-action@v2
  with:
    context: .  # 上下文设为仓库根目录,确保Dockerfile能访问根目录的pyproject.toml和poetry.lock
    dockerfile: ./encoding/Dockerfile  # 明确指定子目录中的Dockerfile位置
    push: true
    tags: <username>/<project_name>:<tag>
    # 已通过docker/login-action完成登录,无需重复设置username和password参数

2. 修正Dockerfile中的文件复制路径

因为上下文是仓库根目录,encoder.py位于encoding子目录下,需要调整COPY命令的源路径:

FROM python:3.8

WORKDIR /app/

# 从仓库根目录复制依赖配置文件
ADD ./pyproject.toml /tmp/ 
ADD ./poetry.lock /tmp/
RUN cp /tmp/pyproject.toml /tmp/poetry.lock /app/

RUN pip install poetry
RUN poetry config virtualenvs.create false && poetry install --no-root --no-dev -vvv

# 从encoding子目录复制encoder.py到容器内
COPY ./encoding/encoder.py /app/

WORKDIR /app/

CMD ["python", "encoder.py", "--input_file", "/app/input.txt", "--output_file", "/app/output.txt", "--model_name_or_path", "bert-base-uncased"]

3. 额外优化建议

  • 移除不必要的Set up Python步骤:Docker构建过程中会自行处理Python环境,无需在Actions流程中单独配置。
  • 检查self-hosted runner的工作目录权限,避免因权限不足导致的路径访问问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:15:07