侧边栏壁纸
博主头像
MDZZW博主等级

曾经也是帅哥,如今只是肉多

  • 累计撰写 29 篇文章
  • 累计创建 26 个标签
  • 累计收到 7 条评论

Jenkins 通过maven打包后远程通过docker制作镜像

MDZZW
2021-05-27 / 0 评论 / 0 点赞 / 872 阅读 / 883 字
温馨提示:
本文最后更新于 2022-10-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Jenkins 通过maven打包后远程通过docker制作镜像

配置maven方式打包

Jenkins 通过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.

解决方案:tomcat启动报错

下载SSH插件 系统管理 -> 插件管理

可选插件 Publish Over SSH 这里已安装不单独下载了

20210527_17200695.png

配置SSH远程连接 系统管理 -> 系统配置

20210527_1720224.png

20210527_17203756.png

配置任务 构建环境 选中 Send files or execute commands over SSH after the build runs

20210527_17205385.png

修改下加入将日志记录输出

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次构建 查看结果

20210527_17212260.png

20210527_1721373.png

查看日志 成功运行

20210527_17220430.png

查看harbor仓库镜像 版本24

20210527_17222233.png

后续部署
  1. 再配置一台SSH 负责部署

  2. 从harbor 仓库中拉取镜像

  3. 运行镜像 挂载目录 挂载日志 等一些列操作完成自动化操作

    这里省略运行镜像的工作不需要我关注

0

评论区