执行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进程运行更快?
答案 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-requirements和write-effective-docker-files-with-python
另一种选择是在创建容器时在Dockerfile和pull code中添加git客户端。