使用Jenkins和Docker运行Python脚本

时间:2018-03-19 09:39:47

标签: python docker jenkins jenkins-pipeline

我想在Jenkins(管道)工作的各个阶段运行Python脚本,在国外广泛的代理。我希望所有这些都具有相同的Python环境,因此我考虑将Docker用于此目的。

我考虑使用Docker构建包含Python环境(带有已安装的软件包等)的映像,然后允许基于参数输入的外部Python脚本:

docker run my_image my_python_file.py

我现在的问题是,基础设施应该如何?我看到Python docker分布是688MB,将这个图像传输到所有步骤肯定会是一个开销?但是,他们 都在同一个网络上,所以也许这不是一个大问题。

更新。所以,我的Dockerfile看起来像这样:

FROM python:3.6-slim-jessie

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

CMD ["python3"]

然后我使用

构建图像

>docker build ./ -t my-app

成功构建映像并安装我的需求。然后我想使用

将图像作为守护进程启动

> docker run -dit my-app

然后我使用

执行该过程

> docker exec -d {DAEMON_ID} my-script.py

2 个答案:

答案 0 :(得分:1)

将您的Docker容器作为守护程序进程运行,每次需要运行Python脚本时,请调用docker exec

docker exec -d <your-container> <your-python-file.py>

答案 1 :(得分:1)

使用Docker代理进行构建是实现分布式和可重现构建的有效方法。

  

我看到Python docker分布是688MB,将这个图像转移到所有步骤肯定会是一个开销?

您应该考虑使用较小的Docker镜像。蟒蛇有高山和纤细的码头图像。你应该考虑先使用它们。高山蟒蛇图像的大小为89.2MB。 此外,大多数图像层都将由Docker缓存,因此您将拉出一些尺寸明显更小的图层。