[Docker]安装jenkins

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   

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容