Docker镜像中Python脚本在GitLab CI执行时找不到文件的问题
解决GitLab CI中Python脚本找不到的问题
问题描述
自定义Docker基础镜像中已安装Python环境及依赖,且复制了verification.py脚本,但在GitLab CI使用该镜像运行脚本时,出现如下错误:
python3: can't open file 'publication_verification.py': [Errno 2] No such file or directory
排查与修复步骤
1. 核对脚本文件名匹配度
报错指向的是publication_verification.py,但你提供的Dockerfile和.gitlab-ci.yml中使用的是verification.py,需先确认:
- 本地实际脚本文件名是否为
publication_verification.py?若是,同步修改Dockerfile的COPY命令与CI脚本的执行命令 - 若为CI执行时的笔误,修正.gitlab-ci.yml中的脚本名称
2. 确保CI作业的工作目录正确
Dockerfile中设置了WORKDIR /app/,脚本被复制到该目录,但GitLab CI默认会切换到项目仓库根目录运行作业,导致无法找到/app下的脚本。可通过两种方式修复:
- 在CI脚本中先切换到/app目录:
script: - cd /app - python3 --version - python3 verification.py - 直接使用脚本的绝对路径执行:
script: - python3 --version - python3 /app/verification.py
3. 验证基础镜像是否包含目标脚本
重新构建基础镜像后,手动运行镜像检查/app目录:
docker run -it --rm image:base:0.1 ls /app
如果镜像中没有verification.py,需确认构建镜像时,该脚本处于Docker构建上下文范围内(与Dockerfile同目录或子目录),否则COPY命令无法复制文件。
4. 清理Dockerfile中的冗余空格
Dockerfile里的CMD命令存在多余空格:CMD [ "python3 ", "./verification.py"],建议修正为标准格式(不影响CI执行,但符合最佳实践):
CMD ["python3", "./verification.py"]
内容的提问来源于stack exchange,提问作者Ritik
相关产品推荐
相关产品推荐

