虚拟机相关环境安装可以查考我的这篇文章:https://blog.csdn.net/wuhuayangs/article/details/125295937?spm=1001.2014.3001.5501
安装 Docker 之前查看是否已经安装,可以卸载重新安装。
1、列出当前 Docker 相关的安装包
yum list installed|grep docker
2、如果已经存在,则卸载对应的包
yum -y remove Docker包(比如docker-ce-cli.x86_64 )
3、最后删除 Docker 目录
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
1、检查环境
在 CentOS 7 安装 Docker 要求系统为64位、系统内核版本为 3.10 以上,可以使用以下命令查看
uname -r
yum -y install docker
3、查看当前版本和查看 Docker 是否安装成功
docker version
yum list installed | grep docker
4、查看 Docker 服务状态
systemctl status docker
5、启动 Docker
systemctl start docker
1、搜索 Jenkins 镜像
docker search jenkins
1、Docker 下载 Jenkins
docker pull jenkins/jenkins:lts
3、创建映射目录
我这里映射目录的路径为/data/jenkins_home/,是为了映射镜像容器中/data/jenkins_home文件夹的内容,大家也可以放到别的地方,
mkdir -p /data/jenkins_home
4、修改文件夹的权限
chown -R 1000:1000 /data/jenkins_home/
5、创建并启动 Jenkins 容器
docker run -d --name jenkins -u root -p 11000:8080 -p 11089:8089 --privileged=true -v /data/jenkins_home/:/var/jenkins_home/ -v /usr/local/maven/apache-maven-3.6.3:/usr/local/maven
-v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
通过以下命令进去容器看是否挂载了
docker exec -it 容器ID bash
6、查看启动是否
docker ps -a
7、根据虚拟机 IP + 端口访问
由于我们上面 Docker 配置的是 11000 端口,去访问 11000 端口即可,如果是云服务器,需要开放安全组的 11000 端口
这里需要输入密码,我们根据 /var/jenkins_home/secrets/initialAdminPassword 这个文件路径找到密码,注意这个路径是 Docker 容器中的,所以我们通过如下命令来获取
docker exec 1de90e765dfb(容器ID) cat /var/jenkins_home/secrets/initialAdminPassword
Jenkins 配置 Maven
进入“全局工具配置”,找到“Maven”,MAVEN_HOME 里填 “/usr/local/maven”,这个是挂载的目录
Jenkins 配置 JDK
这里使用 Jenkins 默认自动带的 jdk1.8,使用命令进入容器
docker exec -it 容器ID bash
进入容器后,使用以下命令查看 Jenkins 默认自带的 jdk 路径
echo $JAVA_HOME
获取到 jdk 路径填入如下的 Jenkins 配置中
下面配置拉取gitee 代码需要的凭据,主要填写gitee用户名和账号
在构建的项目中填写拉取的代码地址和选择上面配置好的凭据点击保存就好
这里我们实现的是把当前编译好的 jar 包拷贝到应用服务器去启动,所以我们还需要配置 ssh 免密登录。
从 jenkins 服务器 192.168.2.129 拷贝 jar 包到应用服务器 192.168.2.128 并且启动项目。
1、在 jenkins 机器上使用 root 用户生成秘钥
ssh-keygen -t rsa
进行三次回车
2、运行后会在当前用户的/root目录生成一个.ssh文件夹,如下图
文件描述:
3、通过 scp 把生成的 id_rsa.pub(公钥)内容复制到 192.168.2.128 中的 /root/.ssh/authorized_keys 文件下
scp -p ~/.ssh/id_rsa.pub root@192.168.2.128:/root/.ssh/authorized_keys
这里提示 ” No such file or directory“:没有这样的文件或目录,这里我们先在 2.128 服务器上面创建一个 .ssh 文件夹
cd root/
mkdir .ssh
之后再执行上面的拷贝命令,输入密码执行成功,第一次还没有免密登录需要密码
192.168.2.129:
192.168.2.128:
已经拷贝完成。
5、在 192.168.2.129 服务器上进行免密连接测试
ssh root@192.168.2.128
出来这个提示证明已经免密登录 192.168.2.128 服务器了。
在 192.168.2.129 上面创建一个文件夹 test
cd home/
mkdir test
scp -r test root@192.168.2.128:/home/
192.168.2.128 服务看到文件夹 test 已经拷贝过来了
到此免密登录和拷贝实现成功,接下来就是从 jenkins 中把 jar 包部署到服务器。
1、配置 SSH 连接,在系统管理 --> 系统配置,找到 Publish over SSH
2、创建一个 maven 项目
3、Jenkins 部署配置
启动脚本 test.sh :
#!/bin/bash
echo "部署的目录和项目名称"
DIR="/home/webapps"
projectName="spring-boot2-dockerfile"
echo "切换到启动脚本目录"
cd ${DIR}
BUILD_ID=dontKillMe
echo "停止服务"
sh stop.sh
echo "停止服务"
sh start.sh
echo "success"
在上面命令中还有两个启动脚本 stop.sh 和 start.sh,这里 切换到 /home/webapps 目录下创建脚本
创建启动脚本 start.sh
touch start.sh
vi start.sh
将下面代码粘贴到 start.sh 中
#!/bin/bash
set -e #任何命令出错就退出
set -o pipefail
APP_ID=spring-boot2-dockerfile
APP_DIR="/home/webapps"
nohup java -Dspring.profiles.active=dev -jar ${APP_DIR}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];then
sleep 3
tail -n 10 release_out.log
sleep 5
tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
echo "Application started ok"
exit 0
else
echo "Application started error"
exit 1
fi
创建停止脚本 stop.sh:
touch stop.sh
vi stop.sh
将下面代码粘贴到 stop.sh 中
#!/bin/bash
APP_ID=spring-boot2-dockerfile
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
4、最后构建发布项目
构建成功
通过 tail -f release_out.log 实时查看日志,已经启动成功
以上就是本文的全部内容,希望对大家的学习有所帮助!