Jenkins 通过maven打包后远程通过docker制作镜像
配置maven方式打包
docker配置制造镜像
#1.制造镜像的服务器配置 Jenkins 上传文件的目录
mkdir -p /app/program/rein/app/test
#2.在test 目录下编写 Dockerfile 制作镜像
cd /app/program/rein/app/test
#3. 下面的Dockerfile 配置
# 本人比较懒就不执行配置tomcat了用现成的 这里的tomcat:8.5 是从docker官方仓库下下载下来的
FROM tomcat:8.5
# 官方标准:邮箱 电话 这里留下邮箱就够了哈哈
MAINTAINER md_zzw@163.com
#定义替换的文件路径
ENV WORK_PATH /usr/local/tomcat/bin
ENV WORK_CONF_PATH /usr/local/tomcat/conf
#定义替换的文件名 这里替换的原因是要配置些环境变量 方法不唯一哈
ENV CATALINA_NAME catalina.sh
#定义替换的文件名 这里替换的原因是tomcat 8.5有漏洞 这个问题的根本原因是jar包冲突,继承关系刚好相反,故造成tomcat启动的循环依赖问题,导致堆栈溢出 解决方案: 参考 https://mdzzw.cn/blog/7 tomcat启动报错
ENV CATALINA_PROPERTIES_NAME catalina.properties
#删除文件
RUN rm $WORK_PATH/$CATALINA_NAME
RUN rm $WORK_CONF_PATH/$CATALINA_PROPERTIES_NAME
#将修改的文件复制过去
COPY ./$CATALINA_NAME $WORK_PATH/
COPY ./$CATALINA_PROPERTIES_NAME $WORK_CONF_PATH/
#将替换的文件设置下权限 比较懒直接最大权限 哈哈骚气
RUN chmod 777 $WORK_PATH/$CATALINA_NAME
RUN chmod 777 $WORK_CONF_PATH/$CATALINA_PROPERTIES_NAME
#将test 目录下 war包放入tomcat镜像中 /usr/local/tomcat/webapps/ 是这里官方镜像指定目录
COPY ./reins.war /usr/local/tomcat/webapps/
#镜像访问端口
EXPOSE 8080
#启动镜像
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
如tomcat8.5制作的镜像启动报错如下
Unable to complete the scan for annotations for web application [] due to a StackOverflowError. Possible
root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies.
下载SSH插件 系统管理 -> 插件管理
可选插件 Publish Over SSH 这里已安装不单独下载了
配置SSH远程连接 系统管理 -> 系统配置
配置任务 构建环境 选中 Send files or execute commands over SSH after the build runs
修改下加入将日志记录输出
sh /app/program/rein/app/test/pushImage/pushImage.sh ${JOB_NAME} ${BUILD_NUMBER} | tee log.txt
编写pushImages.sh 将制作的镜像 push 进 harbor仓库
#1.进入配置的路径下创建目录
cd /app/program/rein/app/test
mkdir pushImage
# vim pushImage/pushImage.sh
#!bin/bash
# ${1}: PROJECT_NAME ${2} BUILD_NUMBER
# 参数1 Jenkins 任务名
# 参数2 Jenkins 构建次数
rm -rf /app/program/rein/app/test/[war包]
cp /app/program/rein/app/test/${1}/${2}/[war包] /app/program/rein/app/test/
echo '进入目录'
cd /app/program/rein/app/test/
docker build -t [harbor域名]/[harbor创建的项目名]/[镜像名]:${2} .
echo '构建镜像成功'
docker login --username=[harbor分配的账号] --password=[密码] [harbor仓库地址]
echo '登录成功'
docker push [harbor域名]/[harbor创建的项目名]/[镜像名]:${2}
echo '镜像push成功'
docker rmi [harbor域名]/[harbor创建的项目名]/[镜像名]:${2}
echo '删除本地镜像成功'
通过Jenkins 第24次构建 查看结果
查看日志 成功运行
查看harbor仓库镜像 版本24
后续部署
-
再配置一台SSH 负责部署
-
从harbor 仓库中拉取镜像
-
运行镜像 挂载目录 挂载日志 等一些列操作完成自动化操作
这里省略运行镜像的工作不需要我关注
评论区