本次部署前提
1、搭建好jenkins,搭建文档地址:https://blog.csdn.net/baidu_38432732/article/details/80499898
2、搭建好gitlab,搭建文档地址:https://blog.csdn.net/baidu_38432732/article/details/90371731
3、私有仓库的搭建文档(本文档没有登录账号和密码的私有镜像库):
1)没有登录账号和密码:https://blog.csdn.net/baidu_38432732/article/details/90405049
2)有登陆账号和密码:https://blog.csdn.net/baidu_38432732/article/details/95737742
jenkins构建部署思路:
在jenkins主机上编写docker制作镜像并将镜像上传到私有库的脚本,然后在jenkins里调用jenkins主机上脚本,接着就在目标主机pull镜像并启动镜像
一、配置jenkins
1、安装和gitlab有关的插件
2、置jenkins和gitlab密钥对
首先我们配置ssh密钥对,让jenkins和gitlab通信无需密码,直接用密钥认证
在linux终端
ssh-keygen -t rsa #一路回车 会在/root/ 生成.ssh/目录 里边有rsa rsa.pub 两个文件
点OK。
3、把.ssh目录的另一个rsa.pub放到这
先点右上角头像-settings,出现如图点ssh密钥
4、构建git+maven项目,
调用jenkins服务器上的脚本
远程主机上执行的脚本
二、gitlab上的配置
1、查看配置时所需的url值
2、配置webhook
点击add webhook时我们出现一下报错
解决办法
用管理员账号登录
然后重新加入
补充相关的脚本
脚本一:
制作镜像脚本以及将镜像上传到我们的私有库上(ip是私有库地址,此脚本的必须和Dockerfile在同一级目录,或者我们将docker build -t mall-admin:vtest . 中的最后那个点改成Dockerfile的路径)
#!/bin/bash
rm *.jar
cp 项目路径/target/mall-admin*.jar mall-admin.jar #把jir包拷贝到我们脚本执行的目录下(也可以自定义路径,自定义路径时,注意jar包和dockerfile路径都要写绝对路径)
docker build -t mall-admin:$1 . # 制作镜像
docker tag mall-admin:vtest ip:5000/mall-admin:$1 # 镜像做tar标记
docker push ip:5000/mall-admin:vtest # 将镜像上传致我们的镜像库,一般都是私有镜像库
Dockerfile:
FROM java:8
VOLUME /app
COPY mall-admin*.jar mall-admin.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN bash -c "touch /mall-admin.jar"
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./uranedom","-jar","-Dspring.profiles.active=docker-linux", "-Duser.timezone=GMT+08", "/mall-admin.jar"]
2、在目标服务器上的启动脚本
docker stop mall-task # 停止原来的容器
docker rm mall-task # 删除容器,线上环境不建议操作
docker rmi ip:5000/mall-task:$2 删除镜像
docker run --name mall-task -v /config/application_task.yml:/application_task.yml -v /var/log/task:/var/logs -e spring.config.location=/application_task.yml -d -p 8090:8090 ip:5000/mall-task:$1 #挂载式启动