美文网首页
[Docker]安装jenkins

[Docker]安装jenkins

作者: 芒果奶油卷 | 来源:发表于2022-11-09 16:50 被阅读0次

    1.拉取镜像

    docker pull jenkins/jenkins

    拉取了jenkins 的最新版本

    2.查看版本

    docker inspect 镜像id

    3.创建jenkins 挂载文件夹:

    mkdir /opt/jenkins/jenkins_home

    4.安装jenkins 需要用到的软件

    yum install wget (已安装则跳过)

    jdk:

    下载jdk17压缩包并解压至/usr/local/jdk/

    JAVA_HOME= /usr/local/jdk/jdk17

    git:

    源码安装

    wget --no-check-certificate https://www.kernel.org/pub/software/scm/git/git-2.25.1.tar.gz

    安装依赖包:

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y

    创建目录:

    mkdir /usr/local/git/git-2.25.1

    tar -zxvf git-2.25.1.tar.gz

    cd git-2.25.1

    ./configure --prefix=/usr/local/git/git-2.25.1 && make install

    增加环境变量

    GIT_HOME=/usr/local/git/git-2.25.1

    PATH=$PATH:$GIT_HOME/bin

    设置生效,校验版本来确定安装成功

    source /etc/profile

    git --version

    nexus:

    docker安装私服:

    # 【1】 安装镜像

    docker search nexus3

    docker pull docker.io/sonatype/nexus3

    # 【2】 创建数据持久化目录

    sudo mkdir -p /opt/nexus/data

    sudo chmod 777 /opt/nexus/data

    # 【3】 启动

    #!/bin/bash

    docker stop nexus;

    docker rm nexus;

    docker run -d \

    -p 9300:8081 \

    --name nexus \

    --restart=always \

    -v /opt/nexus/data:/var/nexus-data \

    --privileged=true \

    sonatype/nexus3

    # 【4】 获取nexus初始化 admin 的密码

    docker  exec  -it  nexus3  /bin/bash

    cd  nexus-data/

    #复制密码为: bash单词前,复制登录后提示你重置密码

    cat admin.password

    # 【5】 登录使用。账号是 admin 密码是上一步获取的,如果一直转圈可能是私服启动比较慢,要等待一会。

    http://ip:9300(我启动映射端口是 9300,ip当然是你服务器ip

    maven:

    下载

    wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

    解压缩至/usr/local/maven目录

    MAVEN_HOME=/usr/local/maven/maven3

    maven仓库地址为

    /usr/local/maven/repo

    配置maven setting.xml文件:

    <!-- 本地仓库存放地址 -->

    <localRepository>/usr/local/maven/repo</localRepository>

    <mirrors>

      <!-- nexus start --> 

      <mirror>

        <id>nexus</id> 

        <mirrorOf>*</mirrorOf> 

        <name>Nexus name</name> 

        <!-- 复制nexus中的maven-public url --> 

        <url>http://ip:9300/repository/maven-public/</url>

      </mirror>

      <!-- nexus end --> 

      <mirror>

        <id>alimaven</id> 

        <mirrorOf>central</mirrorOf> 

        <name>aliyun maven</name> 

        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>

      </mirror> 

      <mirror>

        <id>alimaven</id> 

        <name>aliyun maven</name> 

        <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 

        <mirrorOf>central</mirrorOf>

      </mirror> 

      <mirror>

        <id>central</id> 

        <name>Maven Repository Switchboard</name> 

        <url>http://repo1.maven.org/maven2/</url> 

        <mirrorOf>central</mirrorOf>

      </mirror> 

      <mirror>

        <id>repo2</id> 

        <mirrorOf>central</mirrorOf> 

        <name>Human Readable Name for this Mirror.</name> 

        <url>http://repo2.maven.org/maven2/</url>

      </mirror> 

      <mirror>

        <id>google-maven-central</id> 

        <name>Google Maven Central</name> 

        <url>https://maven-central.storage.googleapis.com</url> 

        <mirrorOf>central</mirrorOf>

      </mirror> 

    </mirrors>

    <servers>

      <server>

        <id>releases</id> 

        <!-- nexus中的账号密码 --> 

        <username>admin</username> 

        <password>1234</password>

      </server> 

      <server>

        <id>snapshots</id> 

        <!-- nexus中的账号密码 --> 

        <username>admin</username> 

        <password>1234</password>

      </server>

    </servers>

    <!-- 在settings.xml里把这个group加上设置白名单 -->

    <pluginGroups>

      <pluginGroups>

        <pluginGroup>com.spotify</pluginGroup>

      </pluginGroups>

    </pluginGroups>

    注意:如果以上配置中没有加入group白名单,执行 mvn package docker:build 可能会报以下错误:

    gitlab

    docker安装gitlab

    jenkins:

    # 【1】 下载jenkins镜像

    docker pull jenkins/jenkins:lts

    # 【2】 创建并授权安装目录

    sudo mkdir -p /opt/jenkins

    sudo chmod 777 /opt/jenkins

    #docker路径授权

    sudo chmod 777 /var/run/docker.sock

    # 【3】 建立脚本启动jenkins

    #!/bin/bash

    docker stop jenkins;

    docker rm jenkins;

    docker run -d \

    -p 9100:8080 \

    -p 9101:50000 \

    --restart=always \

    --name jenkins \

    -u root \

    -v /etc/localtime:/etc/localtime \

    -v /opt/jenkins/jenkins_home:/var/jenkins_home \

    -v /var/run/docker.sock:/var/run/docker.sock \

    -v  /usr/local/maven/maven3:/usr/local/maven \

    -v /usr/local/maven/repo:/usr/local/maven/repo \

    -v /usr/local/jdk/jdk17:/usr/local/java/jdk \

    -v /usr/local/git/git-2.25.1:/usr/local/git \

    -v /etc/sysconfig/docker:/etc/sysconfig/docker \

    -v /usr/bin/docker-current:/usr/bin/docker \

    --privileged=true \

    jenkins/jenkins

    注意!!!

    如果docker是用yum install 下载的,版本较低,所以docker的执行文件挂载路径是

    -v /usr/bin/docker-current:/usr/bin/docker \

    如果是通过源码安装下载的,版本较高的

    -v /usr/bin/docker:/usr/bin/docker \

    这条在进行安装自定义jar包镜像时有用

    # 【4】 进入配置文件,配置加速

    cd /opt/jenkins/jenkins_home

    vi hudson.model.UpdateCenter.xml

    # 配置地址如下,可拷贝地址粘贴对应位置即可

    <sites>

      <site>

        <id>default</id>

        <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>

      </site>

    </sites>

    # 【5】 登录获取初始化密码路径。登录如:http://ip:port/

    # cat 上一步管理平台上得到的路径,获取初始化的admin登录密码

    docker exec -it jenkins /bin/bash

    cat /var/jenkins_home/secrets/initialAdminPassword

    # 拷贝cat后获取的密码,输入密码登录。

    # 【6】执行安装,选择安装推荐插件。等待安装成功

    5.jenkins软件进行插件安装,全局配置

    jenkins 软件管理

    5.部署springboot项目jar包,以docker镜像的形式进行发布

    笔者的springboot项目是父子结构,即

    |--my-springboot-project

    pom.xml

        |---controller

            pom.xml

        |----service

            pom.xml

        |----dao

            pom.xml

    主要执行结构在controller中,也只要controller的jar包进行镜像的安装

    1).在my-springboot-project下新建Dockerfile文件,无后缀

    # 基础镜像使用java

    FROM openjdk:17.0.2-jdk

    # 指定作者

    MAINTAINER root

    # 将jar包添加到容器中并更名

    ADD controller/target/controller-1.0-SNAPSHOT.jar   myapi.jar

    #设置语言

    ENV LANG en_US.UTF-8

    ENV LANGUAGE en_US:en

    ENV LC_ALL en_US.UTF-8

    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar"," myapi .jar"]

    # 暴露 8080 端口作为微服务

    EXPOSE 8080

    2).在父pom文件中加入nexus配置

    <repositories>

      <repository>

        <id>nexus</id>

        <name>test public</name>

        <layout>default</layout>

        <!-- 复制nexus中的maven-public url -->

        <url>http://36.139.115.199:9300/repository/maven-public/</url>

        <snapshots>

          <enabled>true</enabled>

        </snapshots>

        <releases>

          <enabled>true</enabled>

        </releases>

      </repository>

    </repositories>

    3).配置jenkins中的项目

    调用顶层 Maven 目标:

    clean  install  -U -e -B  -Dmaven.test.skip=true  -Pprod

    执行shell

    #!/bin/sh

    echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"

    echo "开始产生jar包镜像"

    #接收外部参数

    name='myapi'

    # 定义应用版本

    version='1.0-SNAPSHOT'

    #查询容器是否存在,存在则删除

    containerId=`docker ps -a | grep -w ${name}  | awk '{print $1}'`

    if [ "$containerId" !=  "" ] ; then

        #停掉容器

        docker stop $containerId

        #删除容器

        docker rm $containerId

    echo "成功删除容器"

    fi

    #查询镜像是否存在,存在则删除

    imageId=`docker images | grep -w ${name}  | awk '{print $3}'`

    if [ "$imageId" !=  "" ] ; then

        #删除镜像

        docker rmi -f $imageId

    echo "成功删除镜像"

    fi

    # 打包编译docker镜像

    docker build -t ${name} .

    echo "镜像编译成功"

    # docker push ${name}

    echo "镜像推送成功"

    # 启动容器,由于我springboot项目是8080端口

    docker run -itd -p 8080:8080 --restart=always --name ${name}  ${name}

    echo "容器启动成功"

    echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"

    4).编译并解决问题

    在启动编译过程中报错 xxxxlib.10 文件不存在。

    拷贝宿主机中的文件到容器中,步骤

    ①查询宿主机中的该文件 

    find / -name  xxxxlib.10   

    一般为软链接

    ②将软链接实际对象拷贝到docker容器中,一般都是后缀版本不同

    docker cp    xxxxlib. 1.0.8     jenkins:/usr/lib/

    ③ 建立软链接

    进入docker容器

    docker   exec   -it   jenkins   /bin/bash

    ln    -s    xxxxlib. 1.0.8   xxxxlib.10   

    chmod     +x     xxxxlib.10   

    相关文章

      网友评论

          本文标题:[Docker]安装jenkins

          本文链接:https://www.haomeiwen.com/subject/hbvptdtx.html