首页 > 解决方案 > 为 CI 预先安装依赖项的 Docker 映像

问题描述

执行 CI 的常见建议(示例)是使用具有预安装依赖项的映像。不幸的是,对于像我这样的 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 过程运行得更快?

标签: pythondockercontinuous-integration

解决方案


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

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 中添加 git 客户端并在创建容器期间拉取代码。


推荐阅读