• jenkins+git+docker实验环境的搭建


    持续集成(c/i)的实验环境

    git/harbor服务器    ip 192.168.200.132

    docker服务器          ip 192.168.200.149

    Jenkins服务器  ip  192.168.200.150

    工具与版本要求

    centos   7.5_x86

    maven  3.5

    tomcat  8

    jdk    1.8

    jenkins  2.6

    docker -ce  18.09.0

    查看实验环境

    [root@harbor ~]# cat /etc/redhat-release 
    CentOS Linux release 7.5.1804 (Core) 
    [root@harbor ~]# uname -r
    3.10.0-862.el7.x86_64

    开始部署harbor

    [root@harbor ~]# ls
    anaconda-ks.cfg docker-compose harbor-offline-installer-v1.5.0.tgz

    #创建ca证书

    [root@harbor ~]# mkdir -p /data/ssl
    [root@harbor ~]# cd /data/ssl/
    [root@harbor ssl]# which openssl
    /usr/bin/openssl
    [root@harbor ssl]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
    Generating a 4096 bit RSA private key
    .......................................................................................................................................++
    ...................++
    writing new private key to 'ca.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:Beijing
    Locality Name (eg, city) [Default City]:Beijing
    Organization Name (eg, company) [Default Company Ltd]:yunjisuan
    Organizational Unit Name (eg, section) []:yunjisuan
    Common Name (eg, your name or your server's hostname) []:www.yunjisuan.com
    Email Address []:

    [root@harbor ssl]# 

    #生成证书请求

    [root@harbor ssl]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.yunjisuan.com.key -out www.yunjisuan.com.csr
    Generating a 4096 bit RSA private key
    ...................................................++
    .........................................++
    writing new private key to 'www.yunjisuan.com.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:Beijing
    Locality Name (eg, city) [Default City]:Beijing
    Organization Name (eg, company) [Default Company Ltd]:yunjisuan
    Organizational Unit Name (eg, section) []:yunjisuan
    Common Name (eg, your name or your server's hostname) []:www.yunjisuan.com
    Email Address []:

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    [root@harbor ssl]#

    #生成主机注册表的证书

    [root@harbor ssl]# openssl x509 -req -days 365 -in www.yunjisuan.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.yunjisuan.com.crt
    Signature ok
    subject=/C=CN/ST=Beijing/L=Beijing/O=yunjisuan/OU=yunjisuan/CN=www.yunjisuan.com
    Getting CA Private Key
    [root@harbor ssl]#

    #查看生成的证书

    [root@harbor ssl]# ls
    ca.crt ca.key ca.srl www.yunjisuan.com.crt www.yunjisuan.com.csr www.yunjisuan.com.key

    #信任自签发的证书

    [root@harbor ssl]# cp www.yunjisuan.com.crt /etc/pki/ca-trust/source/anchors/
    [root@harbor ssl]# update-ca-trust enable
    [root@harbor ssl]# update-ca-trust extract

    #关闭selinux

    [root@harbor ssl]# setenforce 0

    #查看selinux的状态

    [root@harbor ssl]# sestatus

    #安装docker

    [root@harbor ssl]# yum -y install yum-utils device-mapper-persistent-data 1vm2 wget

    [root@harbor yum.repos.d]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    [root@harbor yum.repos.d]# yum -y install docker-ce

    [root@harbor yum.repos.d]# systemctl start docker
    [root@harbor yum.repos.d]# vim /etc/docker/daemon.json

    [root@harbor yum.repos.d]# cat /etc/docker/daemon.json
    {
    "registry-mirrors":[ "https://registry.docker-cn.com" ]
    }


    [root@harbor yum.repos.d]# systemctl daemon-reload
    [root@harbor yum.repos.d]# systemctl restart docker

    [root@harbor yum.repos.d]# docker version
    Client:
    Version: 18.09.0
    API version: 1.39
    Go version: go1.10.4
    Git commit: 4d60db4
    Built: Wed Nov 7 00:48:22 2018
    OS/Arch: linux/amd64
    Experimental: false

    Server: Docker Engine - Community
    Engine:
    Version: 18.09.0
    API version: 1.39 (minimum version 1.12)
    Go version: go1.10.4
    Git commit: 4d60db4
    Built: Wed Nov 7 00:19:08 2018
    OS/Arch: linux/amd64
    Experimental: false

    #搭建harbor,先复制证书

    [root@harbor ssl]# cd /data/ssl/
    [root@harbor ssl]# mkdir -p /etc/ssl/harbor
    [root@harbor ssl]# cp /data/ssl/www.yunjisuan.com.key /etc/ssl/harbor/
    [root@harbor ssl]# cp /data/ssl/www.yunjisuan.com.crt /etc/ssl/harbor/

    #harbor的现在地址

    [root@harbor install]# wget http://harbor.orientsoft.cn/harbor-v1.5.0/harbor-offline-installer-v1.5.0.tgz

    #安装harbor

    [root@harbor install]# cd ~
    [root@harbor ~]# tar xf harbor-offline-installer-v1.5.0.tgz -C /data/install/
    [root@harbor ~]# cd /data/install/harbor/

    [root@harbor harbor]# cp harbor.cfg{,.bak}

    [root@harbor harbor]# cat -n harbor.cfg | sed -n '7p;11p;23p;24p;68p'
    7 hostname = www.yunjisuan.com
    11 ui_url_protocol = https
    23 ssl_cert = /etc/ssl/harbor/www.yunjisuan.com.crt
    24 ssl_cert_key = /etc/ssl/harbor/www.yunjisuan.com.key
    68 harbor_admin_password = Harbor12345
    [root@harbor harbor]#

    #安装docker-compose命令

    [root@harbor harbor]# cd ~
    [root@harbor ~]# chmod +x docker-compose
    [root@harbor ~]# mv docker-compose /usr/bin/
    [root@harbor ~]# which docker-compose
    /usr/bin/docker-compose

    #启动harbor

    [root@harbor ~]# cd /data/install/harbor/
    [root@harbor harbor]# ./install.sh --with-clair

    给其他服务器下发信任证书

    [root@harbor ~]# scp /data/ssl/www.yunjisuan.com.crt 192.168.200.149:/etc/pki/ca-trust/source/anchors/
    The authenticity of host '192.168.200.149 (192.168.200.149)' can't be established.
    ECDSA key fingerprint is SHA256:gm/RhqGrfDo5Rgcr/LmBAaqPv6tmni7cRpXjGEWZQpg.
    ECDSA key fingerprint is MD5:ae:f6:0b:6e:80:96:67:cf:bd:e8:f5:b5:c4:e0:da:11.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.200.149' (ECDSA) to the list of known hosts.
    root@192.168.200.149's password: 
    www.yunjisuan.com.crt                                                         100% 1931     5.9KB/s   00:00    
    [root@harbor ~]# scp /data/ssl/www.yunjisuan.com.crt 192.168.200.150:/etc/pki/ca-trust/source/anchors/
    The authenticity of host '192.168.200.150 (192.168.200.150)' can't be established.
    ECDSA key fingerprint is SHA256:gm/RhqGrfDo5Rgcr/LmBAaqPv6tmni7cRpXjGEWZQpg.
    ECDSA key fingerprint is MD5:ae:f6:0b:6e:80:96:67:cf:bd:e8:f5:b5:c4:e0:da:11.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.200.150' (ECDSA) to the list of known hosts.
    root@192.168.200.150's password: 
    www.yunjisuan.com.crt                                                         100% 1931    19.5KB/s   00:00    
    [root@harbor ~]# 

    让另两个服务器立即生效并且映射域名,重启docker

    [root@docker ~]# update-ca-trust enable
    [root@docker ~]# update-ca-trust extract
    [root@docker ~]# echo "192.168.200.132 www.yunjisuan.com" >> /etc/hosts
    [root@docker ~]# systemctl restart docker
    [root@jenkins ~]# update-ca-trust enable
    [root@jenkins ~]# update-ca-trust extract
    [root@jenkins ~]# echo "192.168.200.132 www.yunjisuan.com" >> /etc/hosts
    [root@jenkins ~]# systemctl restart docker

     部署git在harbor上和Jenkins上

    [root@harbor harbor]# yum -y install git
    [root@harbor harbor]# useradd git [root@harbor harbor]# echo
    "123123" | passwd --stdin git Changing password for user git. passwd: all authentication tokens updated successfully.
    #在harbor上的git用户下创建仓库

    [root@harbor ~]# su - git
    Last login: Thu Dec 20 18:34:32 CST 2018 on pts/0
    [git@harbor ~]$ mkdir solo.git
    [git@harbor ~]$ cd solo.git/
    [git@harbor solo.git]$ git --bare init
    Initialized empty Git repository in /home/git/solo.git/
    [git@harbor solo.git]$ ls
    branches config description HEAD hooks info objects refs
    [git@harbor solo.git]$

     

     在Jenkins上安装git

    [root@jenkins ~]# yum -y install git
    #用git下载solo的bao

    [root@jenkins ~]# git clone https://github.com/b3log/solo.git

    [root@jenkins ~]# cd solo/
    [root@jenkins solo]# ls
    CHANGE_LOGS.html Dockerfile LICENSE pom.xml README_zh_CN.md
    docker-compose.yml gulpfile.js package.json README.md src

    #创建用于提交的git目录

    [root@jenkins solo]# mkdir -p /code
    [root@jenkins solo]# cd /code/
    [root@jenkins code]# git clone root@192.168.200.132:/home/git/solo.git
    Cloning into 'solo'...
    The authenticity of host '192.168.200.132 (192.168.200.132)' can't be established.
    ECDSA key fingerprint is SHA256:gm/RhqGrfDo5Rgcr/LmBAaqPv6tmni7cRpXjGEWZQpg.
    ECDSA key fingerprint is MD5:ae:f6:0b:6e:80:96:67:cf:bd:e8:f5:b5:c4:e0:da:11.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.200.132' (ECDSA) to the list of known hosts.
    root@192.168.200.132's password:
    warning: You appear to have cloned an empty repository.
    [root@jenkins code]# ls
    solo
    [root@jenkins code]# ls solo/
    [root@jenkins code]#

    #将solo项目的代码通过git上床到harbo服务器

    [root@jenkins solo]# cd solo/

    [root@jenkins solo]# git add .

    [root@jenkins solo]# git commit -m "all"

    [root@jenkins solo]# git config --global user.email "493115250@qq.com"  #第一次提交会报错,需要告诉git全局变量,邮箱和使用者

    [root@jenkins solo]# git config --global user.name "suge"    #第一次提交会报错,需要告诉git全局变量,邮箱和使用者

    [root@jenkins solo]# git commit -m "all"

    [root@jenkins solo]# git push origin master
    root@192.168.200.132's password:
    Counting objects: 2099, done.
    Compressing objects: 100% (2044/2044), done.
    Writing objects: 100% (2099/2099), 27.44 MiB | 12.93 MiB/s, done.
    Total 2099 (delta 367), reused 0 (delta 0)
    To root@192.168.200.132:/home/git/solo.git
    * [new branch] master -> master

    #修改SOLo的配置文件,并再次上传

    [root@jenkins solo]# cd /code/solo/src/main/resources/
    [root@jenkins resources]# vim latke.properties
    [root@jenkins resources]# cat -n latke.properties | sed -n '29p;31p'
    29 serverHost=192.168.200.149   #修改成docker的ip
    31 serverPort=8888 #监听端口
    [root@jenkins resources]# cd /code/solo/
    [root@jenkins solo]# git add .
    [root@jenkins solo]# git commit -m "latke"
    [master 82250cf] latke
    1 file changed, 2 insertions(+), 2 deletions(-)
    [root@jenkins solo]# git push origin master
    root@192.168.200.132's password:
    Counting objects: 11, done.
    Compressing objects: 100% (6/6), done.
    Writing objects: 100% (6/6), 534 bytes | 0 bytes/s, done.
    Total 6 (delta 3), reused 0 (delta 0)
    To root@192.168.200.132:/home/git/solo.git
    705030c..82250cf master -> master
    [root@jenkins solo]#

    在docker服务器上安装jdk。先不需要设置环境变量

    [root@docker ~]# ls 
    anaconda-ks.cfg  jdk-8u45-linux-x64.tar.gz
    [root@docker ~]# tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local/

    在Jenkins服务器上安装Jenkins镜像

    [root@jenkins ~]# ls 
    anaconda-ks.cfg                apache-tomcat-8.0.46.tar.gz  jdk-8u45-linux-x64.tar.gz
    apache-maven-3.5.0-bin.tar.gz  docker-compose               solo
    [root@jenkins ~]# tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local/ #因为是镜像的所有不用设置环境变量
    [root@jenkins ~]# tar xf apache-maven-3.5.0-bin.tar.gz -C /usr/local/ 
    #创建Jenkins的镜像dockerfile

    [root@jenkins ~]# mkdir -p dockerfile/jenkins
    [root@jenkins ~]# cd dockerfile/jenkins/
    [root@jenkins jenkins]# vim Dockerfile
    [root@jenkins jenkins]# cat Dockerfile #下的Jenkins镜像是Ubuntu的

    FROM jenkins

    USER root

    RUN echo "" > /etc/apt/sources.list.d/jessie-backports.list &&
    wget http://mirrors.163.com/.help/sources.list.jessie -O /etc/apt/sources.list

    RUN /usr/bin/apt-get update && /usr/bin/apt-get install -y git libltdl-dev

     Jenkins的容器的数据目录我们需要在宿主机上挂载,以免丢失

    Jenkins需要的jdk我们也在宿主机上安装

    Jenkins构建java代码的maven我们也安装在宿主机上

    Jenkins需要docker支持镜像

    Jenkins需要免秘钥交换拉取git代码,我们需要挂载本地的密匙

    #进行免秘钥分发
    [root@jenkins jenkins]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:tlI4gYrpwQsCX+6DdsnphBl3QFldtkB/tlRQtmCAfJQ root@jenkins The key's randomart image is: +---[RSA 2048]----+ | .o.+o+=o+o+ | | ... ++Eo + . | |. + . .o + . | |o+ + . o + . | |=o+ o + S . | |+ oO + + . | | o= O . . | | . + . . | | . | +----[SHA256]-----+ [root@jenkins jenkins]# ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168.200.132 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys git@192.168.200.132's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'git@192.168.200.132'" and check to make sure that only the key(s) you wanted were added. [root@jenkins jenkins]# ssh git@192.168.200.132 Last login: Thu Dec 20 18:34:53 2018 [git@harbor ~]$ exit logout
    #启动镜像
    [root@jenkins jenkins]# docker build -t jenkins:1 .

    [root@jenkins jenkins]# docker run -dit --name jenkins -p 8080:8080 -v /var/jenkins_home/:/var/jenkins_home/ -v /usr/local/apache-maven-3.5.0/:/usr/local/maven -v /usr/local/jdk1.8.0_45/:/usr/local/jdk -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v ~/.ssh/:/root/.ssh jenkins:1

     

     利用浏览器登陆Jenkins,提取密码的命令如下:

    [root@jenkins jenkins]# docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
    67a7a47315314a76bcae06ee790309a4

    由于不好选,我们所有的插件都装一遍

    我们现在创建一个可以运行solo的代码的tomcat的镜像

    [root@jenkins jenkins]# mkdir -p /root/dockerfile/solo
    [root@jenkins jenkins]# cd /root/dockerfile/solo/
    [root@jenkins solo]# vim Dockerfile

    [root@jenkins solo]# cat Dockerfile
    FROM centos:7
    MAINTAINER www.yunjisuan.com
    RUN /usr/bin/yum -y install unzip iproute
    ENV JAVA_HOME /usr/local/jdk
    ADD apache-tomcat-8.0.46.tar.gz /usr/local
    RUN mv /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat
    WORKDIR /usr/local/tomcat
    EXPOSE 8080
    ENTRYPOINT ["./bin/catalina.sh","run"]

    [root@jenkins solo]# ls
    apache-tomcat-8.0.46.tar.gz Dockerfile

    [root@jenkins solo]# docker build -t tomcat:v1 .

    [root@jenkins solo]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    tomcat v1 eba33a67bb74 2 minutes ago 302MB
    jenkins 1 60f11a4065d4 43 minutes ago 738MB
    centos 7 1e1148e4cc2c 2 weeks ago 202MB
    jenkins latest cd14cecfdb3a 5 months ago 696MB

    #测试登陆harbor私有参考,用docker登陆

    [root@jenkins solo]# docker login -uadmin -pHarbor12345 www.yunjisuan.com
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store

    Login Succeeded

    #推送镜像到harbor仓库(如果推送失败,查看docker是否登陆,或者查看ca证书)

    [root@jenkins solo]# docker tag tomcat:v1 www.yunjisuan.com/library/tomcat:v1
    [root@jenkins solo]# docker push www.yunjisuan.com/library/tomcat:v1
    The push refers to repository [www.yunjisuan.com/library/tomcat]
    68c3eb65b757: Pushed
    ff448c703734: Pushed
    5a25c30f7a36: Pushed
    071d8bd76517: Pushed
    v1: digest: sha256:1e7203c1caeace697e8057f9b69f70e20dc744e1fea9ff9c36e9fd8c6720188f size: 1163
    [root@jenkins solo]#

    查看镜像仓库有没有

    已经测试成功,现在开始配置Jenkins

     

    设置Jenkins和docker的ssh免秘钥连接

    [root@jenkins solo]# ll ~/.ssh/
    total 12
    -rw-------. 1 root root 1679 Dec 20 20:19 id_rsa
    -rw-r--r--. 1 root root  394 Dec 20 20:19 id_rsa.pub
    -rw-r--r--. 1 root root  177 Dec 20 18:54 known_hosts
    [root@jenkins solo]# ssh-copy-id root@192.168.200.149
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    The authenticity of host '192.168.200.149 (192.168.200.149)' can't be established.
    ECDSA key fingerprint is SHA256:gm/RhqGrfDo5Rgcr/LmBAaqPv6tmni7cRpXjGEWZQpg.
    ECDSA key fingerprint is MD5:ae:f6:0b:6e:80:96:67:cf:bd:e8:f5:b5:c4:e0:da:11.
    Are you sure you want to continue connecting (yes/no)? yes
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@192.168.200.149's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@192.168.200.149'"
    and check to make sure that only the key(s) you wanted were added.
    
    [root@jenkins solo]# ssh root@192.168.200.149
    Last login: Sat Dec 22 11:43:47 2018 from 192.168.200.1
    [root@docker ~]# exit

     给Jenkins添加秘钥在web页面上

    [root@jenkins solo]# cat ~/.ssh/id_rsa
    -----BEGIN RSA PRIVATE KEY-----
    MIIEpAIBAAKCAQEAyzG46DWQfUOpgoyaKPAYRsqYSdjqsaFHlQRO94Oo0y7anL1l
    3EnCgGXkfnrQWgE9HKPQuiY00VFvfihOC1xUBd/N6I4F3pIF54vLCpSxbl477ibL
    HgW/k8S4UQqihe+FTY1gOwiTxQREOqTCx0Gn0iXvWt/hP1AWeGy39u0+1Npg6yrs
    x+9OWygYswHv4CrMKgzrxsIozOiw4+y+OmDbKcRwGAo+M1fbo+0Ryc/3rAq7Kmdi
    CDm7V91kOs9t0DdvB7v5ZRXn4O9vFWqS1kORHGOssVuFVKbrLJCiPaT4YD3CI1KB
    CSjBwOXJ7ur2YQWnIVuKJdiBMZL1C5JVjwEOzQIDAQABAoIBAQC/OsZY08BuA3XO
    hWC4Um2mghict2b5UV264tkmnGQQjDH1/VGV5l0E1eAbIJ5hdnT7NTjFWBuxO0EA
    rBH3Iyd4d86jpLXlZ+vipG+sP5BU3J7uXNggIyzPdv44VxfpkSgVeo4sQMBBVOiZ
    gGJHgITehBElpzmnikn7f+YKn/DYBBatE7Wom79aJ/hVfdZBDykjZR4Agh4wTAd1
    CqbqGL0rR/E7Eh3vbYnGB/fWdqaVY7hmcQkzo6jqTLGLzJ/1f74KzbwR/lSrLm6E
    ljw9MYnXk7Knfqxlw+t6bC87xb6kr3B85X3ULkR8RwLtR+smOjTd2GYnJHz1t/yr
    8iMRHVUBAoGBAPqNNNjW6T7VEKo/MLHw2w9Bt6qdjgN38CLfd0fh0JY+bMWfncUg
    /NQawezKMWaYICqB8pKhUf3MucwALK+BpQwa/ky7pnJOLnpKjXDKeiOIcHYOx/sH
    V4QDAbfRXq4GwQTX3dYrsRjcq8e6QjLqvTIItioDLfAed3n8qEEhCWMhAoGBAM+c
    4e+p/jMYQM+P0yb6dD7ktFBWSXGZ9gpfdtUIzInvaejmPAGpQa5TKYJ+LVe1TFZT
    Mn5YssbOy5YRle+ISoiI/rGm6QCaeCGZFBmW6lzhL6UgiGrH1Y+6kItO6MSEJYwb
    35vGYaaKPnHa9iUzEjJFhnQihcJEPPMNU1ODaGItAoGBAIQDkNvL6NvNYdmCMAMh
    2Bpi0wZXu7MCKAoH2o6KYeA4BhHetz9d0Tlk29cK9hqLfy9GhuxRiaUDkMX3NZRH
    6BHHy0Pc/6dsoDqZO4s5dD9yrWbXBPG0fZ02BFq5O3zQXDVUFDO7k7V42B4Fesnf
    O064nlrmj/bb5rHkuTaP1KVhAoGAZkCobrfVASlS0mfN4Ya9NjTCMkctSQxBR/6Y
    snfw9Ya7LQAoUdEhDlDbQvAOOQKMJIA5gE0DUDONxc3HgQApZXHDr4+7dpad0D5q
    zeesai5mnveU+LKPloiWpGYq8o77RzR7P2fHtJSmCMGFNfEfZy8i95QBORsOwc6w
    WZOBF8kCgYB7RzhXxWZ4mZEY4KZ4+ywOGxU6lTgkO7touqgSLMn8oqs7SBvG5+DA
    sKXnHvYHESUmMzBH0eJiMCQqywAXYXtbRPUtwxLilg1mxObASbNhOh7Lx+Wia37r
    9FFqjYE9YmPwegMI/FiPrfHCrlOJTf5eAECQnJgKfuLlIEnfExcFHA==
    -----END RSA PRIVATE KEY-----

    添加怎么连接docker在系统管理里边

     

    Jenkins创建项目

    构建过程中的目录在Jenkins上看

    [root@jenkins solo]# cd /var/jenkins_home/workspace/
    [root@jenkins workspace]# ls 
    solo_bolg
    [root@jenkins workspace]# cd solo_bolg/
    [root@jenkins solo_bolg]# l 
    -bash: l: command not found
    [root@jenkins solo_bolg]# ls 
    CHANGE_LOGS.html    Dockerfile   LICENSE       pom.xml    README_zh_CN.md  target
    docker-compose.yml  gulpfile.js  package.json  README.md  src
    [root@jenkins solo_bolg]# cd target/
    [root@jenkins target]# ls 
    classes  generated-sources  generated-test-sources  maven-status  test-classes

     所以利用maven构建的java的源代码实际上就是生成可以在tomcat等容器中运行的warbao,现在我们重新修改一下项目配置,增加post steps(构建之后的操作)其实,构建之后,我们只需要通过脚本将warbao封装进一个tomcat的镜像中,然后推送到harbor里即可

    cd $WORKSPACE
    car > Dockerfile << fof
    FROM www.yunjisuan.com/library/tomcat:v1
    MAINTAINER www.yunjisuan.com
    COPY target/solo.war /tmp/ROOT.war
    RUN rm -rf /usr/local/tomcat/webapps/* &&
         unzip /tmp/ROOT.war -d /usr/local//tomcat/webapps/ROOT && 
          rm-f /tmp/ROOT.war
    WORKDIR /usr/local/tomcat
    EXPOSE    8080
    ENTRYPOINT ["./bin/catalina.sh","run"]
    fof
    
    docker build -t www.yunjisuan.com/library/solo:v1 .
    docker login -uadmin -pHarbor12345 www.yunjisuan.com
    docker push www.yunjisuan.com/library/solo:v1

     

    测试构建成功后,我们继续在添加管理发送给docker服务器,

    docker rm -f solo
    docker rmi -f www.yunjisuan.com/library/solo:v1
    docker login -uadmin -pHarbor12345 www.yunjisuan.com
    docker run -d --name solo -p 8888:8080 -v /usr/local/jdk1.8.0_45/:/usr/local/jdk www.yunjisuan.com/library/solo:v1
  • 相关阅读:
    中英文对照 —— 宗教
    十万个为什么 —— 冷知识
    十万个为什么 —— 冷知识
    OpenCV调试利器——Image Watch插件的安装和使用
    matlab 读写其他格式数据文件(excel)
    matlab 读写其他格式数据文件(excel)
    文学创作的艺术手法
    文学创作的艺术手法
    常用cl命令参数解释
    网站的栏目和目录结构规划方法
  • 原文地址:https://www.cnblogs.com/cash-su/p/10151312.html
Copyright © 2020-2023  润新知