[Docker]安装jenkins

2022-11-09  本文已影响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   

上一篇下一篇

猜你喜欢

热点阅读