安装教程看我这篇Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
因为我们下载的jenkins自带jdk11,所以我们只需要在本机安装
Java Downloads | Oracle,选择后缀为 .tar.gz 的文件,这是linux需要的jdk安装包
[root@localhost local]# tar -zxvf jdk-8u181-linux-x64.tar.gz
# 进入配置文件
[root@localhost local]# vim /etc/profile
# 配置内容
export JAVA_HOME=/usr/local/jdk1.8.0_181 #jdk安装目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
[root@localhost local]# source /etc/profile
java -version
[root@instance-3806mxkl tools]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
You have new mail in /var/spool/mail/root
我推荐maven3.8.4,至于为啥,别问,问就是我同学3.8.5报错了,我3.8.4跑着刚刚好
各个版本下载地址,这个也是官网比官网首页更直观,更好找
这里有个区分 看了我之前教程的小伙伴,可以在/data/jenkins下面创建一个tools的文件夹,把文件放在tools这个文件夹中
没有看我教程的小伙伴也没关系,可以把maven文件放在你挂载的jenkins_home文件夹中
这里的目的是把maven文件放在jenkins中(docker容器中),供jenkins访问,所以放在哪都不重要,重要的是要让jenkins找到maven这个文件
tar -zxf apache-maven-3.8.4-bin.tar.gz
# 修改解压后maven文件夹中的config文件夹中的settings.xml文件
vim apache-maven-3.8.4/conf/settings.xml
内容为
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
vi /etc/profile
#也可以通过图形化的工具,直接修改更方便
#添加的内容 ,路径记得修改为自己解压的路径位置
export MAVEN_HOME=/data/jenkins_home/tools/apache-maven-3.8.4
export PATH=$MAVEN_HOME/bin:$PATH
source /etc/profile
# 命令
mvn -v
[root@instance-3806mxkl tools]# mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /data/jenkins_home/tools/apache-maven-3.8.4
Java version: 1.8.0_121, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_121/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.62.1.el7.x86_64", arch: "amd64", family: "unix"
docker rm -f jenkins
docker run -d -v /data/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock --name jenkins --restart=on-failure -u 0 jenkins/jenkins:lts-jdk11
# 多了个 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock 这个意思就是说把本机的docker给挂载到jenkins容器中,后面我们跑shell脚本会遇见
# 其他的我之前教程有讲,就不加赘述了
docker run -d \
-v /data/jenkins_home:/var/jenkins_home \
-p 8081:8080 \
-p 50000:50000 \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.4 \
--name jenkins \
--restart=on-failure \
-u 0 \
jenkins/jenkins:lts-jdk11
# 这里是我随手打的 \ 注意空格 跑不起的话就 手动去掉 \ 使用空格隔开就行,但多半没问题
# 解释一下 -v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.4 前面是本机刚才配置的maven地址,后面对应挂载的地址
# 其他的我之前教程有讲,就不加赘述了
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
exclude>
excludes>
configuration>
plugin>
plugins>
build>
FROM openjdk:11
MAINTAINER zhao
COPY *.jar /app.jar
CMD ["--server.port=9600"]
EXPOSE 9600
ENTRYPOINT ["java","-jar","/app.jar"]
#!/bin/bash
# 服务名称(jenkins中取的)
SERVER_NAME=test
# 源jar名称,mvn打包之后,target目录下的jar包名称,可以在在 xshell 使用 cd /data/jenkins_home/workspace/你的项目名(jenkins中取的),这个文件夹可以看见gitee中发过来的文件,之后maven打jar包后会在本地的target目录下
JAR_NAME= "School-0.0.1-SNAPSHOT"
# jenkins下的目录
JENKINS_HOME= "/var/jenkins_home/workspace/test"
# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
echo "结束进程完成"
# JENKINS_HOME下的jar包所在目录
cd /var/jenkins_home/workspace/test/target
# 把文件中的Dockerfile放在跟jar包一个位置,方便我们打成镜像
cp /var/jenkins_home/workspace/test/Dockerfile /var/jenkins_home/workspace/test/target
# 修改文件权限 JAR_NAME
chmod 755 School-0.0.1-SNAPSHOT.jar
echo "看看docker能不能用"
docker -v
echo "停止容器"
# 停止容器
docker stop test
echo "删除容器"
# 删除容器
docker rm test
echo "删除镜像"
# 删除镜像
docker rmi test
echo "打包镜像"
# 打包镜像
docker build -t test -f Dockerfile .
echo "运行镜像"
# 运行镜像
docker run -d -p 9999:9600 --name springboot test
我们先看shell脚本(这个要根据自己情况改)
首先我们要先理解这个jenkins是一个docker容器,是与本机隔离的,跑的代码都是在容器中执行的,所以我们之前用maven打包到了 /var/jenkins_home/workspace/test/target 这个位置
使用我们首先要进去这个target文件夹 就是 cd /var/jenkins_home/workspace/test/target
停止容器,删除容器,删除镜像,是为了每次创建的时候,都不占内存,硬盘
要把dockerfile和jar包放在一个好做成镜像(这里不理解的去学docker),使用复制了一份Dockerfile文件到target文件夹内 cp /var/jenkins_home/workspace/test/Dockerfile /var/jenkins_home/workspace/test/target
改一下文件的权限 chmod 755 School-0.0.1-SNAPSHOT.jar
因为在 target 目录下了,而且Dockerfile也拷贝下来了,所以使用Dockerfile打包成镜像 docker build -t test -f Dockerfile .
运行docker镜像,成为容器
我们再看dockerfile文件
Dockerfile文件跟jar包在同一目录 ,扫描target目录下的jar包 复制为 app.jar ,使用 java -jar /app.jar 就可以运行了,并开发端口9600(这个跟springboot开放的端口是一致的)
[root@instance-3806mxkl tools]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest c99994c74125 3 hours ago 692MB
[root@instance-3806mxkl tools]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b2bc65918ade test "java -jar /app.jar …" 3 hours ago Up 3 hours 0.0.0.0:9999->9600/tcp, :::9999->9600/tcp springboot
借鉴了:Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】_掉发的小王的博客-CSDN博客_jenkins打包docker镜像