执行 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 客户端在创建容器期间。
