Дженкинс в контейнере Docker - Как установить пользовательские библиотеки Python? - PullRequest
0 голосов
/ 09 сентября 2018

Итак, после построения конвейера, я понял, что мне понадобятся некоторые пользовательские библиотеки для скрипта Python, который я буду извлекать из SCM. Чтобы установить Jenkins в Docker, я использовал следующий учебник:

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, я не уверен, возможно ли добавить в качестве аргумента «установку RUN pip». Возможно, у кого-то есть альтернативный подход.

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ 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 голосов
/ 10 сентября 2018

Аналогично тому, что ответил Хемант Синг, но 2 несколько разных вещи.

Сначала создайте уникальный каталог: mkdir foo "cd" в этот каталог и запустите:

сборка докера -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), запустите его и убедитесь, что пункт действительно обновлен:

$ 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-пакеты, которые вам нужны:)

0 голосов
/ 17 июля 2019

Ошибка:

/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. Замените 'apt-get' на 'apk' в вашем Dockerfile. (Если это не работает, вы также можете попробовать менеджер пакетов 'yum').
  2. Команда в вашем Dockerfile должна выглядеть следующим образом:

    RUN apk update

0 голосов
/ 09 сентября 2018

Вы можете создать 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 .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...