前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker镜像里安装Python环境

Docker镜像里安装Python环境

作者头像
wangmcn
发布2022-07-26 16:23:54
2.9K0
发布2022-07-26 16:23:54
举报
文章被收录于专栏:AllTests软件测试

Docker镜像里安装Python环境

目录

  • 1、前言
  • 2、Docker安装Python环境
  • 3、Jenkins时间与本地时间不一致

1、前言

根据之前的文章 Docker安装Jenkins

是在 CentOS 7.9 环境下进行 Docker 安装 Jenkins 的。

目录地址:

/var/jenkins_home 目录为容器 Jenkins 工作目录,挂载到宿主机所创建的 /var/jenkins_workspace 工作目录上。

在 Jenkins 工作目录,例如 test 项目,显示的路径地址为

/var/jenkins_home/workspace/test

而实际,对应于宿主机的地址为

/var/jenkins_workspace/workspace/test

上面只是阐述了一下目录的路径,下面开始说一下问题。

宿主机有 Python 环境,Docker 镜像里没有 Python 环境。

宿主机下执行 Python 脚本。

执行成功。

Jenkins 的项目里,构建添加执行 shell,输入命令。

之后立即构建此项目(test),执行完成后,查看控制台输出日志,可以看到报错,未找到 python。

如何解决:

需要在 Docker 容器中安装 Python 环境。

2、Docker安装Python环境

1、查询正在运行的容器ID

代码语言:javascript
复制
docker ps

Jenkins 容器ID为 b896766053f2

2、进入 Jenkins 容器中

代码语言:javascript
复制
docker exec -itu root 容器id /bin/sh
例如 docker exec -itu root b896766053f2 /bin/sh

3、查看容器当前操作系统

代码语言:javascript
复制
cat /etc/issue

这里查到的是 Debian 系统(不是 Ubuntu,也不是 CentOS),这里 yum 是没有的,所以不能用 yum 安装,这里用 apt-get 代替 yum。

4、先执行更新软件列表

代码语言:javascript
复制
apt-get update

如图所示:提示更新失败。

即重启 Docker,之后再启动 Jenkins 镜像即可。

代码语言:javascript
复制
sudo systemctl restart docker
docker restart b896766053f2

5、容器内部安装 Python

(1)先安装依赖

代码语言:javascript
复制
apt-get -y install gcc automake autoconf libtool make
apt-get -y install make*
apt-get -y install zlib*
apt-get -y install openssl libssl-dev
apt-get install sudo

(2)下载

官网下载地址,例如版本3.8.12

https://www.python.org/ftp/python/

切换到 /usr/local 目录,将下载的安装包存放在此目录里。

代码语言:javascript
复制
cd /usr/local
wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz

注意:若提示 wget: not found,执行 sudo apt-get install wget 即可。

(3)解压

代码语言:javascript
复制
tar -xvf Python-3.8.12.tgz

创建 python3 文件夹

代码语言:javascript
复制
mkdir python3

切换到解压后的 Python-3.8.12 目录下

代码语言:javascript
复制
cd Python-3.8.12

之后在启动 Jenkins 镜像

(4)执行如下代码安装

--prefix 选项是配置安装的路径,执行后所有资源文件放在 /usr/local/python3 的路径里。

代码语言:javascript
复制
./configure --prefix=/usr/local/python3 --enable-optimizations
make
make install

(5)创建软链接

代码语言:javascript
复制
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

(6)查看 Python 3 是否安装成功。

代码语言:javascript
复制
python3 -V
pip3 -V

6、之后再次在 Jenkins 里执行 Python 脚本( Docker 镜像里已有 Python 环境)

之后立即构建此项目(test),执行完成后,查看控制台输出日志,可以看到构建成功。

3、Jenkins时间与本地时间不一致

利用 Docker 安装 Jenkins,在后续使用 Jenkins 时,可能会发现 Jenkins 时间与本地时间不一致这个问题。

解决方法为:启动 Jenkins 容器时,设置容器时间为上海时间。

代码语言:javascript
复制
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai

拉取 Jenkins 容器:

代码语言:javascript
复制
sudo docker run -d -p 8089:8080 -p 10241:50000 -v /var/jenkins_workspace:/var/jenkins_home -v /etc/localtime:/etc/localtime -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name my_jenkins jenkins/jenkins

此时 Jenkins 时间与本地时间一致。

查询 Jenkins 系统信息-系统属性时,时区已改为上海时区。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档