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

GitHub Action构建Python容器时找不到requirements.txt的问题求助

问题排查:Docker构建时无法找到requirements.txt文件

核心问题分析

  1. Docker构建上下文错误:CI中使用docker build - < Dockerfile命令,未指定构建上下文目录,导致Docker无法访问仓库内其他文件;同时Dockerfile里COPY ../requirements.txt .路径错误——requirements.txt与Dockerfile在同一目录,无需向上跳转。
  2. 镜像标签不匹配:构建镜像时未打标签,后续docker run python:0.0.1找不到对应镜像。
  3. 容器内文件缺失:Dockerfile未复制test目录到容器,执行CMD时会找不到测试文件。

具体修复步骤

1. 修改Dockerfile

FROM python:3.8-slim

# 禁用Python生成.pyc文件
ENV PYTHONDONTWRITEBYTECODE=1

# 关闭输出缓冲,方便容器日志查看
ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH='/workspaces/PROJ-2023-MLSERN'

# 安装依赖工具并清理缓存
RUN apt-get update && apt-get install -y git gcc && rm -rf /var/lib/apt/lists/*

WORKDIR /MLSERN

# 修正COPY路径:直接引用同目录下的requirements.txt
COPY requirements.txt . 

RUN python -m pip install --no-cache-dir -r requirements.txt

# 复制测试目录到容器,确保CMD能找到测试文件
COPY test/ ./test/
# 若需要运行src目录代码,可添加:COPY src/ ./src/

# 创建非root用户并授权
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /MLSERN
USER appuser

CMD ["python", "test/test_file.py"]

2. 修改CI.yaml配置

on:
  push:
  pull_request:

jobs:
  run-tests:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest]
        python-version: ["3.8"]
    
    name: Test
    runs-on: ${{matrix.os}}

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      # 修正构建命令:指定仓库根目录为上下文,同时打镜像标签
      - name: Build docker image
        run: docker build -t python:0.0.1 .
      # 运行已构建的镜像
      - name: Run tests
        run: docker run python:0.0.1

3. 关键说明

  • 构建上下文:docker build .中的.代表以当前仓库根目录作为构建上下文,Docker可访问该目录下所有文件,COPY指令路径均基于此上下文。
  • 镜像优化:合并apt-get命令并清理缓存,减少镜像层数与体积。
  • 文件完整性:必须将容器运行所需的代码目录(如test、src)复制到容器内,否则会出现文件找不到的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:05:17