已为CI预安装具有依赖项的Docker映像

时间:2019-08-27 09:18:19

标签: python docker continuous-integration

执行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

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

1 个答案:

答案 0 :(得分:2)

为了使其更快,我建议您基于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-requirementswrite-effective-docker-files-with-python

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