• 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,看到以下图片就代表安装成功

  • 相关阅读:
    Xcode编译WebDriverAgentRunner报错:The bundle identifier for IntegrationApp.app couldn’t be read.解决方案
    python+django更新表结构执行相关命令报错:No installed app with label 'interface_crud'解决方案
    python激活虚拟环境env报错:no such file or directory: env/Scripts/activate解决方案
    Django创建api_crud app时报错:file "manage.py", line 16 ) from exc ^ SyntaxError: invalid syntax解决方案
    Redis未授权访问漏洞复现
    逻辑漏洞小结之SRC篇
    Linux下清空用户登录记录和命令历史的方法
    linux下直接清空日志的方法
    Linux Hackers/Suspicious Account Detection
    linux查看所有用户信息
  • 原文地址:https://www.cnblogs.com/jiakecong/p/14345529.html
Copyright © 2020-2023  润新知