我想在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
答案 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缓存,因此您将拉出一些尺寸明显更小的图层。