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

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.xdnf.cn/news/15090.html

相关文章:

  • 数据结构:栈、队列、链表
  • OpenCV实现感知哈希(Perceptual Hash)算法的类cv::img_hash::PHash
  • 亿级流量下的缓存架构设计:Redis+Caffeine多级缓存实战
  • C#中的设计模式:构建更加优雅的代码
  • 深入探究编程拷贝
  • 【Spring Boot】Spring Boot 4.0 的颠覆性AI特性全景解析,结合智能编码实战案例、底层架构革新及Prompt工程手册
  • Vue 表单开发优化实践:如何优雅地合并 `data()` 与 `resetForm()` 中的重复对象
  • 两台电脑通过网线直连形成局域网,共享一台wifi网络实现上网
  • 排序算法(一):冒泡排序
  • nginx 负载均衡配置(加解决重复登录问题)
  • 没有管理员权限,在服务器安装使用 Jupyter + R 内核
  • 【Linux仓库】命令行参数与环境变量【进程·伍】
  • 如何通过多点监控提升公网 IP 的稳定性和访问可用性
  • 全球化 2.0 | 印尼金融科技公司通过云轴科技ZStack实现VMware替代
  • 业务建模如何让金融数字化转型 “轻” 装上
  • rom定制系列------红米note10 5G版camellia原生安卓14批量线刷 miui安卓11修改型号root版
  • C语言:20250711笔记
  • 动态规划初步(完全背包)
  • T16IZ遥控器教程__遥控器与无人机对频
  • 线性回归原理推导与应用(十):逻辑回归多分类实战
  • 视频人脸处理——人脸面部动作提取
  • Spring Boot主从数据库完全教程 - 从零到精通
  • ubuntu22默认安装firefox使用snap安装还老打不开解决办法
  • Unity Demo——3D平台跳跃游戏笔记
  • IDE 关联 Git 操作
  • Flutter、Vue 3 和 React 在 UI 布局比较
  • windows下安装 redis
  • 代账行业数字化破局:从“知道”到“做到”,三步走稳赢!
  • 【Java】【力扣】102.二叉树层序遍历
  • 【TCP/IP】18. 因特网服务质量