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

Docker镜像python:3.12-slim为何在GitLab CI中使用旧Python版本?

问题排查:GitLab CI与开发容器python:3.12-slim版本不一致的原因及解决办法

核心原因:镜像缓存导致CI使用旧版本

python:3.12-slim属于Docker的滚动标签——标签会随着官方更新指向最新的3.12.x版本,但GitLab CI的Runner默认会复用本地已缓存的镜像。你的开发容器是近期拉取的,所以拿到了最新的3.12.3,而CI Runner还保留着之前缓存的3.12.0版本,导致版本不匹配触发Poetry报错。

解决办法:

  • 强制CI拉取最新镜像
    在.gitlab-ci.yml的对应job中添加pull_policy: always,强制每次运行CI都重新拉取最新的python:3.12-slim镜像,跳过本地缓存:

    build_job:
      image: python:3.12-slim
      pull_policy: always
      script:
        - python --version
        - poetry install
    
  • 清理Runner的本地镜像缓存(自托管Runner适用)
    如果你的GitLab Runner是自托管的,手动清理旧的python:3.12-slim镜像:

    # 列出所有匹配的镜像
    docker images | grep python:3.12-slim
    # 删除旧镜像(替换成实际的镜像ID)
    docker rmi abc123def456
    

    清理后再运行CI,Runner会自动拉取最新版本。

  • 改用固定版本标签(最稳妥方案)
    滚动标签虽然便捷,但容易出现环境不一致问题。直接使用具体版本的镜像标签,比如python:3.12.3-slim,让开发容器和CI完全使用同一版本:

    • CI配置(.gitlab-ci.yml):
      image: python:3.12.3-slim
      
    • 开发容器Dockerfile:
      FROM python:3.12.3-slim
      
  • 先验证CI中的Python版本
    在CI脚本开头添加版本打印,确认问题根源:

    script:
      - python --version  # 先确认版本是否正确
      - poetry install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:43:37