使用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-hostedrunner的工作目录权限,避免因权限不足导致的路径访问问题。
内容的提问来源于stack exchange,提问作者lazarea
相关产品推荐
相关产品推荐

