Jenkins在Docker容器中-如何安装自定义Python库?

时间:2018-09-09 13:05:47

标签: python-3.x docker jenkins

因此,在构建了管道之后,我意识到我将需要一些自定义库来处理从SCM中提取的python脚本。要在Docker中安装Jenkins,我使用了以下教程:

https://jenkins.io/doc/book/installing/

像这样:

docker run \
  -u root \
  --rm \  
  -d \ 
  -p 8080:8080 \ 
  -p 50000:50000 \ 
  -v jenkins-data:/var/jenkins_home \ 
  -v /var/run/docker.sock:/var/run/docker.sock \ 
  jenkinsci/blueocean 

现在,我将说我不是Docker专家,但我知道Dockerfile允许传递Python的库安装。但是,由于我要从dockerhub中提取docker映像,因此不确定是否可以添加“ RUN pip install”作为参数。也许有人可能有另一种方法。

感谢您的帮助。

编辑1:这是第一位评论者推荐的输出:

Step 1/6 : FROM jenkinsci/blueocean
 ---> b7eef16a711e
Step 2/6 : USER root
 ---> Running in 150bba5c4994
Removing intermediate container 150bba5c4994
 ---> 882bcec61ccf
Step 3/6 : RUN apt-get update
 ---> Running in 324f28f384e0
/bin/sh: apt-get: not found
The command '/bin/sh -c apt-get update' returned a non-zero code: 127

3 个答案:

答案 0 :(得分:1)

您可以创建一个Dockerfile

FROM jenkins:latest
USER root
RUN apt-get update
RUN apt-get install -y python-pip
# Install app dependencies
RUN pip install --upgrade pip

您可以使用构建自定义图像

docker build -t jenkinspython .

答案 1 :(得分:0)

类似于Hemant Sing的回答,但有2处稍有不同。

首先,创建一个唯一目录:mkdir foo “ cd”到该目录并运行:

docker build -f jenkinspython。

jenkinspython包含以下内容:

FROM jenkins:latest
USER root
RUN apt-get update
RUN apt-get install -y python-pip
# Install app dependencies
RUN pip install --upgrade pip

请注意,我的更改具有-f,而不是-t。并注意构建输出确实包含:

Step 5/5 : RUN pip install --upgrade pip ---> Running in d460e0ebb11d Collecting pip Downloading https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB) Installing collected packages: pip Found existing installation: pip 9.0.1 Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr Successfully installed pip-18.0 Removing intermediate container d460e0ebb11d ---> b7d342751a79 Successfully built b7d342751a79

因此,现在已经构建了映像(在我的情况下为b7d342751a79),将其启动并验证pip确实已更新:

$ docker run -it b7d342751a79 bash
root@9f559d448be9:/# pip --version
pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

所以现在您的映像已安装了pip,因此您可以随意pip安装所需的任何疯狂软件包:)

答案 2 :(得分:0)

错误:

/bin/sh: apt-get: not found
The command '/bin/sh -c apt-get update' returned a non-zero code: 127

观察:

  1. 当您要运行的容器不是基于Debian的,因此不支持'apt'时,就会出现此错误。
  2. 要解决此问题,我们需要找出它使用的包管理器。
  3. 在我的情况下是:“ apk”。

分辨率:

  1. 在Dockerfile中将“ apt-get”替换为“ apk”。 (如果这不起作用,您也可以尝试使用“ yum”软件包管理器。)
  2. Dockerfile中的
  3. 命令应如下所示:

    运行apk更新