Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Docker容器中的Jenkins-如何安装自定义Python库?_Python 3.x_Docker_Jenkins - Fatal编程技术网

Python 3.x Docker容器中的Jenkins-如何安装自定义Python库?

Python 3.x Docker容器中的Jenkins-如何安装自定义Python库?,python-3.x,docker,jenkins,Python 3.x,Docker,Jenkins,所以,在构建了一个管道之后,我意识到我需要一些自定义库来编写一个将从SCM中提取的python脚本。为了在Docker中安装Jenkins,我使用了以下教程: 像这样: 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.s

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

像这样:

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

您可以创建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 .

与Hemant Sing的答案相似,但有两个稍有不同

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

docker构建-f jenkinspython

其中,Python包含:

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。请注意,构建输出确实包含:


步骤5/5:运行pip安装--升级pip
--->在d460e0ebb11d中运行
收集点
正在下载https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB)
安装收集的软件包:pip
找到现有安装:pip 9.0.1
未在/usr/lib/python2.7/dist-packages、外部环境/usr卸载pip
已成功安装pip-18.0
拆卸中间容器d460e0ebb11d
--->b7d342751a79
已成功构建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,因此您可以随意安装所需的任何疯狂软件包:)

错误:

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

  • 如果要运行的容器不是基于Debian的,因此不支持“apt”,则会出现此错误
  • 为了解决这个问题,我们需要找出它使用了哪个包管理器
  • 在我的例子中,它是“apk”
  • 决议:

  • 将Dockerfile中的“apt get”替换为“apk”。(如果这不起作用,您也可以尝试“yum”package manager)
  • Dockerfile中的命令应如下所示:

    运行apk更新


  • 检查以上内容。尝试了它,但它没有按计划工作。您使用该过程的输出编辑了您的问题。但是我们看到您使用的是
    jenkinsci/blueocean
    ,而不是
    jenkins:latest
    (或者我建议的
    jenkins/jenkins:latest
    ),它似乎不是基于debian的。基于
    jenkinsci/blueocean
    的图像的解决方案是什么?