before
本篇講解如何在Jenkins的容器中安裝Python環境。
首先這里要分開來講,由於不同的Jenkins鏡像依賴的基礎鏡像不同,安裝Python的方式也不同,所以,這里要分開說。
常見的兩個鏡像是:
[root@r /]# docker images | grep jenkins
jenkinsci/blueocean latest 9393ec9589f7 25 hours ago 568MB
jenkins/jenkins lts 7e250da768ed 7 weeks ago 619MB
要想查看鏡像依賴的基礎鏡像,你可以分別創建兩個容器,然后進入容器的交互式環境,來查看。
jenkins/jenkins
鏡像的基礎鏡像:
[root@r docker_data]# docker exec -it -u root myjenkins bash
root@35533a48d952:/# cat /etc/issue
Debian GNU/Linux 9 \n \l
jenkinsci/blueocean
鏡像的基礎鏡像:
[root@r docker_data]# docker exec -it -u root myjenkins bash
bash-4.4# cat /etc/issue
Welcome to Alpine Linux 3.9
Kernel \r on an \m (\l)
Debian
使用的包管理工具是apt-get
;而Alpine Linux
的包管理工具是apk
。
所以,接下來要分別說兩種方式如何安裝Python,這里都是安裝Python3.
Debian 安裝 Python
后續操作都是在容器的交互式環境中進行。
ready
升級源列表:
apt-get update
root@35533a48d952:/# apt-get update
Get:1 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Ign:2 http://deb.debian.org/debian stretch InRelease
Get:3 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB]
Get:4 http://deb.debian.org/debian stretch Release [118 kB]
Get:5 http://deb.debian.org/debian stretch Release.gpg [2410 B]
Get:6 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [521 kB]
Get:7 http://deb.debian.org/debian stretch-updates/main amd64 Packages [27.9 kB]
Get:8 http://deb.debian.org/debian stretch/main amd64 Packages [7083 kB]
Fetched 7937 kB in 2s (3156 kB/s)
Reading package lists... Done
root@35533a48d952:/#
這該說的也說了,該提前准備的也准備了,開干吧!
解決依賴
為了不必要的麻煩,先安裝依賴包,注意,還是容器環境。
apt-get -y install gcc automake autoconf libtool make
apt-get -y install make-guile
apt-get -y install make*
apt-get -y install zlib*
apt-get -y install openssl libssl-dev
apt-get -y install sudo
go
再次強調,以下都是容器環境下操作。
- 在
/var/jenkins_home
下面新建python3
子目錄,並且cd
進去
root@35533a48d952:/# cd /var/jenkins_home/
root@35533a48d952:/var/jenkins_home# mkdir python3
root@35533a48d952:/var/jenkins_home# cd python3/
- 下載Python3.6安裝包並解壓,完事壓縮包就可以刪掉了
root@35533a48d952:/var/jenkins_home/python3# wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
root@35533a48d952:/var/jenkins_home/python3# tar -xvf Python-3.6.8.tgz
root@35533a48d952:/var/jenkins_home/python3# ls
Python-3.6.8 Python-3.6.8.tgz
- 配置最優安裝
root@35533a48d952:/var/jenkins_home/python3# cd Python-3.6.8
root@35533a48d952:/var/jenkins_home/python3/Python-3.6.8# ./configure --prefix=/var/jenkins_home/python3 --enable-optimizations
root@35533a48d952:/var/jenkins_home/python3/Python-3.6.8# ./configure --enable-optimizations
- 編譯安裝
root@35533a48d952:/var/jenkins_home/python3/Python-3.6.8# make && make install
- 建立軟連
root@35533a48d952:/var/jenkins_home/python3/bin# ln -s /var/jenkins_home/python3/bin/python3.6 /usr/bin/python3
root@35533a48d952:/var/jenkins_home/python3/bin# ln -s /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3
- 測試
root@35533a48d952:/var/jenkins_home/python3/bin# cd /
root@35533a48d952:/# python3 -V
Python 3.6.8
root@35533a48d952:/# pip3 -V
pip 18.1 from /var/jenkins_home/python3/lib/python3.6/site-packages/pip (python 3.6)
Alpine Linux 安裝 Python
我發現有兩種方式可以安裝:
- 方式1:直接使用apk命令安裝,非常方便,推薦使用這種方式,但也有缺點,貌似只有3.6版本可用,可能是我沒有深入研究~
- 方式2:下載tar包,解壓,make安裝,再配置軟連,這個的優點就是,想安裝什么版本就安裝什么版本,想安裝到哪就安裝到哪,比較靈活。
方式1
- 升級源碼包列表和安裝必要的依賴:
bash-4.4# apk update -y
bash-4.4# apk add gcc
bash-4.4# apk add build-base
bash-4.4# apk add zlib-dev
- 尋找Python3的可用版本,下面
python3-3.6.9-r2
就是咱們這次的目標:
apk search python3
bash-4.4# apk search python3
python3-tkinter-3.6.8-r1
python3-idle-3.6.8-r1
python3-dev-3.6.9-r2
boost-python3-1.67.0-r2
postgresql-plpython3-contrib-11.7-r0
python3-dbg-3.6.9-r2
python3-3.6.9-r2
xapian-bindings-python3-1.4.9-r0
python3-tkinter-tests-3.6.8-r1
uwsgi-python3-2.0.17.1-r0
python3-wininst-3.6.9-r2
unit-python3-1.6-r0
postgresql-plpython3-11.7-r0
python3-doc-3.6.9-r2
python3-tests-3.6.9-r2
libpeas-python3-1.22.0-r0
- 安裝吧:
apk add python3=3.6.9-r2
bash-4.4# apk add python3=3.6.9-r2
(1/3) Installing gdbm (1.13-r1)
(2/3) Installing xz-libs (5.2.4-r0)
(3/3) Installing python3 (3.6.9-r2)
Executing busybox-1.29.3-r10.trigger
OK: 474 MiB in 96 packages
- 測試,通過查看
/use/bin
就可以看到,已經自動的配置好了軟連,你干就完了:
bash-4.4# ls /usr/bin/python*
/usr/bin/python3 /usr/bin/python3.6 /usr/bin/python3.6m
bash-4.4# pip3 -V
pip 18.1 from /usr/lib/python3.6/site-packages/pip (python 3.6)
bash-4.4# python3 -V
Python 3.6.9
- 可選操作,升級pip版本:
pip3 install --upgrade pip
收工,有問題可以在下面留言反饋,我也是第一次這么安裝。
是在不行,你可以使用方法2,慢慢配置,相信絕對沒問題。
方式2
啥也別說了,進入容器交互式環境,開干吧!
Python各個版本列表:https://www.python.org/ftp/python/
- 解決依賴:
bash-4.4# apk update -y
bash-4.4# apk add gcc
bash-4.4# apk add build-base
bash-4.4# apk add zlib-dev
- 下載tar包並解壓,這里以
Python3.6.9
版本為例:
[root@r docker_data]# docker exec -it -u root myjenkins bash
bash-4.4# wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
bash-4.4# tar -zvxf Python-3.6.9.tgz
bash-4.4# ls
Python-3.6.9 Python-3.6.9.tgz
- 配置最優安裝
bash-4.4# cd Python-3.6.9
bash-4.4# ./configure --prefix=/opt/python3 --enable-optimizations
bash-4.4# ./configure --enable-optimizations
- 編譯安裝
bash-4.4# make && make install
- 建立軟連
bash-4.4# ln -s /opt/python3/bin/python3.6 /usr/bin/python3
bash-4.4# ln -s /opt/python3/bin/pip3 /usr/bin/pip3
- 測試
bash-4.4# python3 -V
Python 3.6.8
bash-4.4# pip3.6 -V
pip 18.1 from /usr/lib/python3.6/site-packages/pip (python 3.6)
測試
-
創建一個自由風格任務:
-
直接選擇
構建
,並選擇執行shell命令:
-
編輯如下命令:
-
選擇立即構建,並查看控制台輸出。
可以看到,現在已經成功的返回了Python和pip版本信息。
question
1.make時內存不足
我在make時出現內存不足的情況:
由於我的是阿里雲服務器,只能花錢提升內存!如果你是虛擬機,就多分配點內存吧!
see also:jenkins學習4-進docker容器安裝python3環境