前言

之前我们用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环境的更多相关文章

  1. ubuntu下创建虚拟python3开发环境

    友情链接:ubuntu16.04下安装python3+创建虚拟python3开发环境 1.为什么要创建python3虚拟开发环境? /********************************* ...

  2. Docker之使用Dockerfile创建定制化镜像(四)--技术流ken

    前言 在之前的博客<Docker端口映射及创建镜像演示(二)--技术流ken>,演示了如何使用一个现有容器创建一个镜像,以及镜像在阿里云的上传和下载. 但是这样的镜像有很大的局限性,不能根 ...

  3. [转]Docker基础-使用Dockerfile创建镜像

    本文转自:https://www.cnblogs.com/jie-fang/p/7927643.html 1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # T ...

  4. Docker基础-使用Dockerfile创建镜像

    1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - ED ...

  5. Docker之使用Dockerfile创建定制化镜像(四)

    Dockerfile简介 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么哪些无法重复的问题.镜像构建 ...

  6. Docker DevOps实战:Docker+Jenkins+Python+Pytest+Allure(1)- 创建Jenkins容器、安装Python环境、安装项目依赖类库、安装Allure报告插件

    前言: 本文实操笔记参照菠萝笔记,安装过程中的坑大家可以参考下 创建Jenkins容器 # 下载Jenkins镜像 [root@localhost ~]# docker pull jenkins/je ...

  7. docker Dockerfile 创建镜像

    Docker 组件 1. docker client : docker的客户端 2. docker server : docker daemon的主要组成部分,接受用户通过docker client发 ...

  8. docker——Dockerfile创建镜像

    写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境 ...

  9. Docker实战(六)之使用Dockerfile创建镜像

    Dockervile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义镜像. 1.基本结构 Dockerfile由一行行命令语句组成,并且支持以#开头的注释行. 一般而言,Do ...

随机推荐

  1. Vue3.0聊天室|vue3+vant3仿微信聊天实例|vue3.x仿微信app界面

    一.项目简介 基于Vue3.0+Vant3.x+Vuex4.x+Vue-router4+V3Popup等技术开发实现的仿微信手机App聊天实例项目Vue3-Chatroom.实现了发送图文表情消息/g ...

  2. CentOS8_在线安装_网络源_网络镜像源填写格式_以及其他笔记

    CentOS8_在线安装_网络源_网络镜像源填写格式_以及其他笔记 转载注明来源: 本文链接 来自osnosn的博客,写于 2020-10-1. 参考: Centos8.0.1905 在线安装源选择 ...

  3. docker基础总结

    搜索镜像docker search ubuntu 搜索ubuntu的Docker镜像 搜索结果单个单词ubuntu这样的镜像,被称为基础镜像或根镜像,这些基础镜像由 Docker 公司创建搜索结果ti ...

  4. SpringCloud系列之SpringCloud Stream

    SpringCloud Stream SpringCloud Config SpringCloud Gatewa SpringCloud Hystrix SpringCloud 第一部分 文章目录 S ...

  5. oracle出现未选定行

    初学oracle,在SQLplus输入查询命令 出现了以下情况.. 后来了解到oracle的SQL语句其中有些词必须大写才会有效. 在这个语句中将username后面的值改为大写就可以了. 还有一种就 ...

  6. docker save 保存导出镜像

    Docker保存镜像 tag 镜像 # 镜像打 tag 标签 # docker tag 镜像id/名 新名字 docker tag fce91102e17d tomcat01 commit 镜像 注意 ...

  7. 跨站脚本漏洞(XSS)基础

    什么是跨站脚本攻击XSS 跨站脚本(cross site script),为了避免与样式css混淆所以简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式. 什么是 ...

  8. Ubuntu安装Vivado

    Step1 安装必要的库文件: sudo apt install libncurses5 build-essential openjdk-11-jdk Step2 进入vivado的安装文件夹 sud ...

  9. 前端工程构建之谈:gulp3要不要升级到Gulp4

    关于升级还是不升级,这是一个哲学问题. gulp4的语法更加现代,支持ES6的大部分写法,使用exports的方式去暴露任务组合,更加灵活和便捷. gulp4同时也提供了很多强大的API,例如para ...

  10. XV6学习(1) Lab util

    正在学习MIT的6.S081,把做的实验写一写吧. 实验的代码放在了Github上. 第一个实验是Lab util,算是一个热身的实验,没有涉及到系统的底层,就是使用系统调用来完成几个用户模式的小程序 ...