当前位置: 首页 > news >正文

jenkins部署springboot+Docker项目

文章目录

  • 前言
  • 一、前提准备
  • 二、使用步骤
  • 总结


前言

昨天安装了jenkins并且能够部署springboot项目,今天学习使用jenkins构建docker容器的方式部署springboot项目。


一、前提准备

服务器已经安装好docker,jenkins并且已经启动成功。

二、使用步骤

在gitee上找个springboot工程,拉取到本地,在工程里面新建docker文件夹,新增Dockerfile 文件
在这里插入图片描述
Docker中粘贴以下内容

# jre基础环境
FROM openjdk:8-jre-alpine# 维护者信息
MAINTAINER zhy# 设置环境变量-运行时也可传参进来哈
ENV JAVA_OPTS ""# 添加jar包到容器中 -- tips: xx.jar 和 Dockerfile 在同一级,添加到容器的/home/app.jar 目录下
ADD *.jar /home/app.jar# 对外暴漏的端口号
# [注:EXPOSE指令只是声明容器运行时提供的服务端口,给读者看有哪些端口,在运行时只会开启程序自身的端口!!]
EXPOSE 8080# 以exec格式的CMD指令 -- 可实现优雅停止容器服务
# "sh", "-c" : 可通过exec模式执行shell  =》 获得环境变量
CMD ["sh", "-c", "echo \"****** 运行命令:java -jar ${JAVA_OPTS} /home/app.jar\"   &   java -jar ${JAVA_OPTS} /home/app.jar"]

提交代码到gitee上。
打开jenkins新建任务
在这里插入图片描述
jenkins中添加描述信息
在这里插入图片描述

源码管理粘贴gitee中的项目地址
在这里插入图片描述
选择已有的账号凭证
在这里插入图片描述
没有的话点击下方添加按钮
在这里插入图片描述
输入用户名和密码进行保存
在这里插入图片描述
代码分支和gitee对应
在这里插入图片描述
构建步骤选择执行shell
在这里插入图片描述
shell中粘贴以下命令

# 在工作文件夹下拉取代码后,执行maven 打包
mvn clean install -DskipTests
# 复制打包后的jar到docker目录下
cp target/executor-test-0.0.1-SNAPSHOT.jar docker
#进入到docker目录下
cd docker
# 构建容器镜像
docker build -f Dockerfile -t "springboot:dev" . --no-cache
# 停止之前已经运行的容器
docker ps -a | grep springboot | awk '{print $1}' | xargs -i docker stop {} | xargs -i docker rm {}
# 运行容器
docker run -d -p 8888:8080 --name springboot springboot:dev

保存应用
在这里插入图片描述
立即构建测试运行
在这里插入图片描述
查看控制台日志输出
在这里插入图片描述
构建成功
在这里插入图片描述
浏览器访问接口测试
在这里插入图片描述
查看运行容器

docker ps

在这里插入图片描述
查看容器日志

docker logs -f springboot

进入容器查看 ADD 拷贝的jar包

docker exec -it springboot /bin/bash

提示这个错误说明没有/bin/bash,使用 /bin/sh
在这里插入图片描述

docker exec -it springboot /bin/sh

到 /home 目录下查看
在这里插入图片描述
退出容器

exit

总结

以上就是今天要讲的内容,本文介绍了使用jenkins部署springboot+docker项目。

http://www.dtcms.com/a/274563.html

相关文章:

  • Playwright Python 教程:网页自动化
  • xAI发布Grok4+代码神器Grok4 Code,教你如何在国内升级订阅SuperGrok并使用到Grok4教程
  • 信号量机制
  • 【机器学习】保序回归平滑校准算法
  • 设计模式(结构型)-适配器模式
  • 深度学习入门教程(三)- 线性代数教程
  • 使用you-get命令下载视频/音频/图像
  • Primer Premier 5分子生物学引物设计软件 PCR引物设计工具
  • 【读代码】开源音乐分离工具Spleeter
  • RabbitMQ 之顺序性保障
  • Java大厂面试故事:谢飞机的互联网医疗系统技术面试(Spring Boot、MyBatis、Kafka、Spring Security、AI等)
  • c++——浅拷贝和深拷贝、浅赋值和深赋值
  • 动态组件和插槽
  • mysql 锁介绍
  • 分布式系统高可用性设计-负载均衡与容错机制深度解析
  • 2025年DevSecOps工具全景图:安全左移时代的国产化突围
  • AGX Xavier 搭建360环视教程【二、环境配置】
  • 【JMeter】执行系统命令
  • git restore
  • Java项目中图片加载路径问题解析
  • 多线程Java
  • Leaflet面试题及答案(1-20)
  • 《汇编语言:基于X86处理器》第7章 整数运算(2)
  • Ubuntu 22.04 Server 虚拟机初始化配置与优化指南
  • 用Python制作抖音风格短视频:从图片到精美视频的完整指南
  • docker-compose安装常用中间件
  • AI产品经理面试宝典第7天:核心算法面试题-上
  • VS 按F12 提示cannot navigate to the symbol under the caret
  • JavaSE——Object
  • 【实时Linux实战系列】现有应用迁移到实时环境的步骤