Skip to main content
 首页 » 编程设计

python之为 CI 预先安装依赖项的 Docker 镜像

2024年09月03日32bhlsheji

执行 CI 的常见建议 ( example ) 是使用具有预安装依赖项的图像。不幸的是,对于像我这样的 n00b,有问题的链接没有进一步的细节。

当我寻找 docker 教程时,似乎通常会教您如何将应用程序容器化,而不是教您如何将 Python 与一些预安装的依赖项结合起来。

例如,如果这是我的 .gitlab-ci.yml 文件的样子:

image: "python:3.7" 
 
before_script: 
  - python --version 
  - pip install -r requirements.txt 
 
stages: 
  - Static Analysis 
 
flake8: 
  stage: Static Analysis 
  script: 
  - flake8 --max-line-length=120 

我如何将 Python 与一些预安装的依赖项(这里是 requirements.txt 中的依赖项)容器化,以及我应该如何更改 .gitlab-ci.yml 文件,以便 CI 进程运行得更快?

请您参考如下方法:

为了加快速度,我建议您基于 python:3.7 创建您的自定义 Dockerfile,它已在构建期间安装了所有依赖项。因此,这将节省您的时间,并且您的作业不需要在每次作业构建期间安装依赖项。

FROM python:3.7 
RUN  python --version 
 
# Create app directory 
WORKDIR /app 
 
# copy requirements.txt 
COPY local-src/requirements.txt ./ 
 
 
# Install app dependencies 
RUN pip install -r requirements.txt 
 
# Bundle app source 
COPY src /app 
 

您可以阅读有关此实践的更多信息 docker-python-pip-requirements和 write-effective-docker-files-with-python

另一种选择是在 Dockerfile 和 pull code 中添加 git 客户端在创建容器期间。