docker(12)使用Dockerfile创建jenkins+python3+pytest环境
前言
之前我们用docker手动安装了jenkins环境,在jenkins中又安装了python3环境和各种安装包,如果我们想要在其他3台机器上安装,又是重复操作,重复劳动,那会显得很low,这里可以使用Dockerfile来让他自动执行安装命令,类似shell脚本
环境准备
1.docker安装,可以参考这篇文章https://www.cnblogs.com/jiakecong/p/14307530.html
2.python3.7.6编译完成的文件夹,这里是复制之前在mac电脑上已经编译完成的包,通过rz命令导入即可
解释:这里为什么不用wget命令重新下载python3的包,再安装编译,经过博主实验,下载速度实在太慢,效率太低,所以直接使用Dockerfile中的copy命令,将文件复制到容器内部即可
查看路径内容
[root@jkc docker-run]# pwd
/root/docker-run
[root@jkc docker-run]# ls
Dockerfile python3 requirements.txt
[root@jkc docker-run]#
在docker-run下有3个文件,其中python3这个文件已经安装了python3.7.6的环境并且已经编译,且已经安装了requirements里的第三方包
编写Dockerfile文件
[root@jkc docker-run]# cat Dockerfile
# 1.基于jenkins/jenkins:lts镜像
FROM jenkins/jenkins:lts
# 2.镜像维护者的姓名和邮箱地址
MAINTAINER jkc <1044500650@qq.com>
# 3.指定当前工作目录
WORKDIR /var/jenkins_home
# 4.将当前目录文件夹下的所有文件拷贝到指定目录
COPY ./python3 ../python3
COPY requirements.txt ..
# 5.切换到root用户
USER root
# 6.添加软连接
RUN ln -s /var/jenkins_home/python3/bin/python3.7 /usr/bin/python3
RUN ln -s /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3
RUN ln -s /var/jenkins_home/python3/bin/pytest /usr/bin/pytest
Dockerfile文件命令解析
- 第1步:FROM就是拉取jenkins镜像,没什么好说的
- 第2步:说明镜像者姓名和邮箱
- 第3步:指定进入容器后的目录:/var/jenkins_home
- 第4步:(重点)拷贝宿主机当前目录下的python3文件夹到容器当前目录
(/var/jenkins_home)的上一级目录(/var),也就是说现在python3在/var目录下 - 第5步:切换到root用户,以防止接下来的操作中,没有权限导致报错
- 第6步:添加软链接python3、pip3、pytest,由于python3现在在/var目录,当启动完容器后,文件映射后,还需将python3移动到
/var/jenkins_home
构建镜像
docker build -t jenkins_python:v2 .
启动容器
[root@jkc docker-run]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins_python v2 edb7a6021f60 About an hour ago 1.19GB
jenkins/jenkins lts e5599f396096 2 weeks ago 717MB
[root@jkc docker-run]# docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home jenkins_python:v2
726bc4335ed2e78f05cab404986f924698bc41613dafacaa30f9b22a09a0cae8
这里明显发现构建的镜像容器为1.19GB,比正常只有jenkins环境的镜像多了400多MB,这是因为我们把python3的包复制到了镜像中
进入容器内部,复制python3文件到/var/jenkins_home
[root@jkc docker-run]# docker exec -it -uroot 726bc4335ed2 /bin/bash
root@726bc4335ed2:/var/jenkins_home# ls
config.xml jenkins.install.UpgradeWizard.state nodeMonitors.xml secret.key.not-so-secret users
copy_reference_file.log jenkins.telemetry.Correlator.xml nodes secrets war
hudson.model.UpdateCenter.xml jobs plugins updates
identity.key.enc logs secret.key userContent
root@726bc4335ed2:/var/jenkins_home# cd ..
root@726bc4335ed2:/var# ls
backups cache jenkins_home lib local lock log mail opt python3 requirements.txt run spool tmp
root@726bc4335ed2:/var# mv python3/ /var/jenkins_home/
root@726bc4335ed2:/var# cd jenkins_home/
root@726bc4335ed2:/var/jenkins_home# ls
config.xml jenkins.install.UpgradeWizard.state nodeMonitors.xml secret.key userContent
copy_reference_file.log jenkins.telemetry.Correlator.xml nodes secret.key.not-so-secret users
hudson.model.UpdateCenter.xml jobs plugins secrets war
identity.key.enc logs python3 updates
安装requirements.txt
root@726bc4335ed2:/var# ls
backups cache jenkins_home lib local lock log mail opt requirements.txt run spool tmp
root@726bc4335ed2:/var# pip3 install -r requirements.txt
如果你跟博主一样,复制的python3里面已经有这些第三方包了,可以忽略此步骤
验证环境
root@726bc4335ed2:/var/jenkins_home# python3 --version
Python 3.7.6
root@726bc4335ed2:/var/jenkins_home# pip3 --version
pip 19.2.3 from /var/jenkins_home/python3/lib/python3.7/site-packages/pip (python 3.7)
root@726bc4335ed2:/var/jenkins_home# pytest --version
pytest 6.2.1
root@726bc4335ed2:/var/jenkins_home#
打开浏览器,输入ip地址:8080,看到以下图片就代表安装成功

docker(12)使用Dockerfile创建jenkins+python3+pytest环境的更多相关文章
- ubuntu下创建虚拟python3开发环境
友情链接:ubuntu16.04下安装python3+创建虚拟python3开发环境 1.为什么要创建python3虚拟开发环境? /********************************* ...
- Docker之使用Dockerfile创建定制化镜像(四)--技术流ken
前言 在之前的博客<Docker端口映射及创建镜像演示(二)--技术流ken>,演示了如何使用一个现有容器创建一个镜像,以及镜像在阿里云的上传和下载. 但是这样的镜像有很大的局限性,不能根 ...
- [转]Docker基础-使用Dockerfile创建镜像
本文转自:https://www.cnblogs.com/jie-fang/p/7927643.html 1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # T ...
- Docker基础-使用Dockerfile创建镜像
1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - ED ...
- Docker之使用Dockerfile创建定制化镜像(四)
Dockerfile简介 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么哪些无法重复的问题.镜像构建 ...
- Docker DevOps实战:Docker+Jenkins+Python+Pytest+Allure(1)- 创建Jenkins容器、安装Python环境、安装项目依赖类库、安装Allure报告插件
前言: 本文实操笔记参照菠萝笔记,安装过程中的坑大家可以参考下 创建Jenkins容器 # 下载Jenkins镜像 [root@localhost ~]# docker pull jenkins/je ...
- docker Dockerfile 创建镜像
Docker 组件 1. docker client : docker的客户端 2. docker server : docker daemon的主要组成部分,接受用户通过docker client发 ...
- docker——Dockerfile创建镜像
写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境 ...
- Docker实战(六)之使用Dockerfile创建镜像
Dockervile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义镜像. 1.基本结构 Dockerfile由一行行命令语句组成,并且支持以#开头的注释行. 一般而言,Do ...
随机推荐
- Mac上“您没有权限来打开应用程序”(Big Sur)
最近电脑更新了Macos的最新11版大苏尔 Big Sur.很快问题就出现了:安装某个软件的时候Key Gen打不开,提示您没有权限来打开应用程序,类似这样:https://zhuanlan.zhih ...
- WebApi 中请求的 JSON 数据字段作为 POST 参数传入
使用 POST 方式请求 JSON 数据到服务器 WebAPI 接口时需要将 JSON 格式封装成数据模型接收参数.即使参数较少,每个接口仍然需要单独创建模型接收.下面方法实现了将 JSON 参数中的 ...
- LeetCode844 比较含退格的字符串
题目描述: 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = ...
- LeetCode 二分查找模板 I
模板 #1: int binarySearch(vector<int>& nums, int target){ if(nums.size() == 0) return -1; in ...
- Python作业---内置数据类型
实验2 内置数据类型 实验性质:验证性 一.实验目的 1.掌握内置函数.列表.切片.元组的基本操作: 2.掌握字典.集合和列表表达式的基本操作. 二.实验预备知识 1.掌握Python内置函数的基/本 ...
- kubernetes机理之调度器以及控制器
一 了解调度器 1.1 调度器是如何将一个pod调度到节点上的 我们都已然知晓了,API服务器不会主动的去创建pod,只是拉起系统组件,这些组件订阅资源状态的通知,之后创建相应的资源,而负责调度po ...
- 使用NIM Server网络半自动安装AIX系统
一.NIM配置 1.安装NIMServer前准备 1.1.配置IP地址 # ifconfig –a #检查当前IP地址# # smitty mktcpip #设置IP地址# 选择第一块网卡(插网线的网 ...
- SAP中用户口令状态的一点说明
数据元素:XUPWDSTATE 数值 内涵 -2(通常)不能更改口令.-1(每天只允许一次)今天不能更改口令.0可以更改口令,但没有必要更改.1口令为初始值必须更改口令.2口令过期必须更改口 ...
- django使用缓存之drf-extensions
使用方法:1.直接添加装饰器@cache_response该装饰器装饰的方法有两个要求: 它必须是继承了rest_framework.views.APIView的类的方法 它必须返回rest_fram ...
- 扩展:Flash消息
扩展:Flash消息 flash存值之后只能取一次 from flask import Flask,render_template,flash,get_flashed_messages,session ...