docker部署springboot jar包项目

docker部署springboot jar包项目

  • 前提,服务器环境是docker环境,如果服务器没有安装docker,可以先安装docker环境。
    各个环境安装docker:
    Ubuntu上安装Docker:
    ubuntu离线安装docker:
    CentOS7离线安装Docker:
    CentOs7在线安装docker:
    docker安装成功后,执行docker ps命令

一、编译springboot项目生成jar包

  • 将项目jar包上传到服务器安装目录
  • 如果使用idea开发工具,直接点击右侧Maven,clean,install生成jar包
    在这里插入图片描述
  • install编译完成后会在target下生成一个jar包
    在这里插入图片描述
  • 将这个jar包上传到服务器的安装目录

二、创建安装目录

  • /opt/projects/demo-java/target/
cd /opt
mkdir projects
cd projects
# 创建项目目录和日志目录
mkdir demo-java log
cd demo-java
mkdir target
cd /opt/projects/log
mkdir java
  • 将jar包上传到/opt/projects/demo-java/target/目录下
    在这里插入图片描述
  • 项目中配置的日志目录是/opt/project/log,构建成容器后日志目录也是这个
  • 日志配置文件logback-spring.xml
    在这里插入图片描述

三、创建Dockerfile

# 基于哪个镜像
FROM openjdk:8-jdk
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 拷贝文件到容器,ocr-compare-demo-java.jar这里是maven打包后的名字
# target,必须与服务器上创建的目录保持一致
ADD target/ocr-compare-demo-java.jar app.jar
#时区设置
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS="-server  -Xmx512m -Xms128m -Xmn256m -XX:MetaspaceSize=64m"
# 配置容器启动后执行的命令
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
  • 将Dockerfile放在/opt/projects/demo-java目录下,与target同级
    在这里插入图片描述
  • FROM openjdk:8-jdk # 基于openjdk这个镜像来构建,服务器如果没有这个镜像,默认会先拉去这个镜像
  • 查看镜像docker images
    在这里插入图片描述

四、创建启动文件

  • build-demo-java.sh
#!/bin/bash

echo "-----clear container and image start-----"
# 命名容器名称
rep=demo-java
# 如果此容器存在则停止
if docker ps | grep "$rep";then
        docker stop $rep
fi
# 如果此容器存在则删除
if docker ps -a | grep "$rep";then
        docker rm $rep
fi
# 如果此镜像存在则删除
if docker images | grep "$rep";then
        docker rmi $rep
fi
echo "----clear container and image end----"
# 构建镜像
echo "------build docker image start------"
docker build -t $rep /opt/projects/demo-java || ! echo "build new image error" || exit
echo "------build docker image end-------"

echo "----build container start-----"
# 启动容器
docker run -d -p 7070:7070 \
-v /opt/projects/log/java:/opt/project/log \
--restart=always --privileged=true \
-e TZ=Asia/Shanghai \
--name $rep $rep || ! echo "cannot run container:$rep,exit" || exit
echo "-----build container end-----"

# -p 7070:7070 [宿主机映射端口]:[容器端口-jar包项目中配置的端口]
# -v /opt/projects/log/java:/opt/project/log  -v配置容器目录映射到宿主机,[宿主机目录]:[容器目录]
# -e TZ=Asia/Shanghai 给容器设置时区
# --name $rep $rep  容器名称、镜像名称,镜像名称不带版本号时默认latest版本

五、执行启动文件

cd  /opt/projects/
sh sh build-demo-java.sh 

在这里插入图片描述
在这里插入图片描述

  • 查看镜像docker images
    在这里插入图片描述

六、查看部署的容器

# 查看容器
docker ps
# 查看看那日志
docker logs -f --tail 500 demo-java

在这里插入图片描述

  • 查看日志 docker logs -f --tail 500 demo-java
    在这里插入图片描述
  • 启动成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/442170.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为北向网管NCE开发教程(1)闭坑选接口协议

华为北向网管NCE开发教程(1)闭坑选接口协议 华为北向网管NCE开发教程(2)REST接口开发 华为北向网管NCE开发教程(3)CORBA协议开发 本文一是记录自己开发华为北向网管遇到的坑,二是给需要的人&…

Rocky Linux 的安装

1. 为什么用Rocky 因为CentOS不干了,这是CentOS的现状: CentOS Linux 8 在 2021 年底停止更新; CentOS Linux 7 用户较多,这个版本将在 2024 年 6 月 30 日停止支持; 未来社区不会再有 CentOS Linux 的新版本&…

联立方程模型的可识别性的通俗解释

联立方程模型的可识别性,主要的解法是阶条件算法和秩条件算法,数学公式角度的解释就不讲了,参考下面的前人文献。 【计量经济学】联立方程模型-CSDN博客 说一下公式算法背后的通俗原理。 在计量经济模型中,比如 Y23*Xu中&#x…

[java基础揉碎]super关键字

super关键字: 基本介绍 super代表父类的引用,用于访问父类的属性、方法、构造器 super给编程带来的便利/细节 1.调用父类的构造器的好处(分工明确,父类属性由父类初始化,子类的属性由子类初始化) 2.当子类中有和父类中的成员(属性和方法)重…

Springer旗下SCI,16天见刊!稳定检索13年,质量稳定

毕业推荐 SCIE: • 计算机类,6.5-7.0,JCR1区,中科院2区 • 2个月19天录用,6天见刊,36天检索 SCI&EI(CCF-C类) • 算法类,2.0-3.0,JCR3区&#xff0c…

数字孪生的大方向趋势及未来

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 数字孪生的大方向趋势及未来 一、引言 数字孪生(Digital Twin&#xff09…

高级语言讲义2016计专(仅高级语言部分)

1.斐波那契序列的第n项可以表示成以下形式&#xff0c;编写一个非递归函数&#xff0c;返回该数列的第n项的数值 #include <stdio.h>int func(int n) {if(n1||n2)return 1;int p1,q1,num;for(int i3; i<n; i) {numpq;qp;pnum;}return num; } 2.在MXN的二维数组A中&am…

Win11 没有网络bug

1.问题描述 没有网络&#xff0c;dns一直是固定的&#xff0c;但是dns已经是自动获取了(MAC地址随机) 2.解决办法 1.首先&#xff0c;删除所有网络的手动dns配置,控制中心那个dns管理没有用,在设置中删除网络,不然问题还会出现 - 2.然后&#xff0c;进入注册表\HKEY_LOCAL_MACH…

数据结构之栈详解(C语言手撕)

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

汉服|高校汉服租赁网站|基于Springboot的高校汉服租赁网站设计与实现(源码+数据库+文档)

高校汉服租赁网站目录 目录 基于Springboot的高校汉服租赁网站设计与实现 一、前言 二、系统设计 三、系统功能设计 1、汉服信息管理 2、汉服租赁管理 3、公告管理 4、公告类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选…

滤波器:工作原理和分类及应用领域?|深圳比创达电子EMC

滤波器在电子领域中扮演着重要的角色&#xff0c;用于处理信号、抑制噪声以及滤除干扰。本文将详细介绍滤波器的工作原理、分类以及在各个应用领域中的具体应用。 一、滤波器的定义和作用 滤波器是一种电子设备&#xff0c;用于选择性地通过或阻塞特定频率范围内的信号。其主…

目标检测5:采用yolov8, RK3568上推理实时视频流

上一个效果图&#xff0c;海康球机对着电脑屏幕拍&#xff0c;清晰度不好。 RK3568接取RTSP视频流&#xff0c;通过解码&#xff0c;推理&#xff0c;编码&#xff0c;最终并把结果推出RTSP视频流。 RK3568 推理 数据集采用coco的80个种类集&#xff0c;通过从yovo8.pt&#x…

【Python】新手入门:什么是变量?如何在Python中声明变量?变量有哪些使用方式?

【Python】新手入门&#xff1a;什么是变量&#xff1f;如何在Python中声明变量&#xff1f;变量有哪些使用方式&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【…

【Java】:JDK、JRE、和JVM之间的关系

Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译&#xff0c;编译后生成的 .class 文件是由字节码组成的与平台无关、面向JVM的文件。最后启动Java虚拟机来运行 .class 文件&#xff0c;此时JVM会将字节码转换成平台能够理解的形式来运行。 JDK与JRE简…

EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测

EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测 目录 EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.GCN基于图卷积神经网络的数据分类预测 Matlab2023 2.多输入单输出的分类预测&#xf…

Matlab

文章目录 fopen (打开文件)fread (读取文件)sizeAprecisionmachinefmt fwrite (将数据写入二进制文件)语法 fprintf (将数据写入文本文件&#xff09;语法格式操作符转换字符标志特殊字符 zeros (创建全零数组)语法 for 循环语句length (最大数组维度的长度)caseif, elseif, el…

C++的面向诗篇:类的叙事与对象的旋律

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 一、面向对象的定义 学习C语言时&#xff0c;我们就经常听说C语言是面向过程的&#xff0c;…

Webpack常用配置及作用

一 、 二、 三、 四、 五、 六、 七、 八、

大载重无人机基础技术,研发一款50KG负重六旋翼无人机技术及成本分析

六旋翼无人机是一种多旋翼无人机&#xff0c;具有六个旋翼&#xff0c;通常呈“X”形布局。它采用电动串列式结构&#xff0c;具有垂直起降、悬停、前飞、后飞、侧飞、俯仰、翻滚等多种飞行动作的能力。六旋翼无人机通常被用于航拍、农业植保、环境监测、地形测绘等领域。 六旋…

WordPress建站入门教程:如何选择和设置固定链接结构?

我们成功搭建好WordPress网站后&#xff0c;发布的文章对应的URL地址默认是使用“日期和名称型”&#xff0c;即是网站域名跟着的是年月日&#xff0c;最后是文章标题&#xff0c;如http://www.yigujin.com/2024/03/06/免费响应式WordPress博客主题JianYue/ 为了让我们的文章U…