网站运营
位置:首页>> 网站运营>> Docker部署SpringBoot应用的实现步骤

Docker部署SpringBoot应用的实现步骤

作者:花伤情犹在  发布时间:2023-04-14 19:21:32 

标签:Docker,部署,SpringBoot

前言

部署项目时可能会需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。而Docker确巧妙的解决了这些问题,Docker为了解决依赖的兼容问题的,采用了两个手段:

  1. 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包

  2. 将每个应用放到一个隔离容器去运行,避免互相干扰

Docker部署SpringBoot应用的实现步骤

本文将讲解如何使用Docker来部署我们平时用SpringBoot开发的项目:

Docker部署SpringBoot应用的实现步骤

Dockerfile

什么是 Dockerfile?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

Docker部署SpringBoot应用的实现步骤

Dockerfile语法

构建自定义的镜像时,并不需要一个个文件去拷贝,打包。

我们只需要告诉Docker,我们的镜像的组成,需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像。

而描述上述信息的文件就是Dockerfile文件。

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

Docker部署SpringBoot应用的实现步骤

打包SpringBoot项目

准备项目:

项目端口


server.port=8080

在templates文件夹下新建index.html


<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
   <meta charset="UTF-8">
   <title>Docker部署SpringBoot应用</title>
</head>
<body>
<h1>Docker部署SpringBoot应用</h1>
<img src="/static/img/2.jpg" alt="" width="100%">
</body>
</html>

定义主页Controller,跳转到index


@Controller
public class indexController {

@RequestMapping("/")
   public String index(){
       return "index";
   }
}

在本地预览效果:

Docker部署SpringBoot应用的实现步骤

在本地将SpringBoot应用打包成jar

准备maven-compiler-plugin插件


<build>
<!--编译打包后的文件包名-->
<finalName>app</finalName>
<plugins>
<plugin>
<!--GAV坐标(G组织id,A项目id,V版本号)-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<!--配置:
   一般而言,target与source是保持一致的,但是,有时候为了让程序能在其
   他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不
   支持的语法),会存在target不同于source的情况-->
<configuration>
<!--源代码使用的JDK版本-->
<source>1.8</source>
<!-- 需要生成的目标class文件的编译版本 -->
<target>1.8</target>
<!-- 字符集编码,防止中文乱码 -->
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>

maven是个项目管理工具,如果不告诉它代码要使用什么样的jdk版本编译,它就会用编译插maven-compiler-plugin默认的jdk版本来处理,这样就容易出现版本不匹配的问题,以至于可能导致编译不通过的问题。例如代码中要是使用上了Java8的新特性,比如函数式编程,但是maven在编译的时候使用的是Java7,那这一段代码是完全不可能编译成.class文件的。为了避免出现这种情况,在构建maven项目的时候,我习惯性第一步就是配置maven-compiler-plugin插件,指定项目源码的jdk 版本,编译后的 jdk 版本,以及编码方式。

然后执行clean,最后执行package进行项目打包

Docker部署SpringBoot应用的实现步骤

出现BUILD SUCCESS说明打包成功了

Docker部署SpringBoot应用的实现步骤

打包成功后会出现target文件夹,目录下就会有刚刚打包的jar包

Docker部署SpringBoot应用的实现步骤

准备jar包和Dockerfile

复制jar到桌面或自定义位置,在本地创建编写Dockerfile文件(注:名字必须为Dockerfile,去掉后缀名)

Docker部署SpringBoot应用的实现步骤

编写Dockerfile

Dockerfile指令


FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

Dockerfile说明

FROM java:8-alpine:

基于java8构建镜像,默认构建java镜像需要安装配置环境变量,而java:8-alpine这个镜像已经帮我们把前面的步骤都做完了

COPY ./app.jar /tmp/app.jar

复制jar包

ENTRYPOINT java -jar /tmp/app.jar

入口命令

使用工具将jar和Dockerfile上传到服务器

上传位置看个人,我存放的位置:/tmp/docker


cd tmp
mkdir docker

选择上传文件

Docker部署SpringBoot应用的实现步骤

上传到/tmp/docker目录下

Docker部署SpringBoot应用的实现步骤

构建镜像

进入上传文件的目录:cd /tmp/docker,输入ls查看文件

Docker部署SpringBoot应用的实现步骤

输入命令构建镜像


docker build -t test:1.0 .

格式:docker build -t 镜像名称:版本号 Dockerfile所在目录路径

命令说明:

build:docker的二级命令

  • 构建镜像

-t

  • -名称: 一般的镜像名称格式:名称:版本号(test:1.0)

.

  • Dockerfile所在目录,因为我们已经进入了Dockerfile所在的目录,.代表当前目录

可以看到构建镜像的时候会以我们编写Dockerfile的三条命令分为3个步骤执行

Docker部署SpringBoot应用的实现步骤

查看镜像

查看Docker中的镜像命令:


docker images

可以看到我们自定义镜像test

Docker部署SpringBoot应用的实现步骤

创建并运行容器

运行Docker镜像命令:


docker run --name springboot -p 8080:8080 -d test:1.0

命令说明:

docker run: docker二级命令

  • 创建并运行容器

--name

  • 定义容器名称,后面跟上容器名称(springboot)

-p端口映射

  • 左边端口为Linux的端口 ,右边为容器的端口号

  • 将linux端口映射在容器端口号上,这样访问linux端口等于访问容器端口号

-d

  • 后台运行容器 ,否则退出之后容器就会停止运行

test:1.0–>镜像名称

  • 选择自定义镜像test 的1.0版本来创建容器

创建并运行容器成功!

Docker部署SpringBoot应用的实现步骤

查看正在运行的镜像

正在运行的镜像命令


docker ps

Docker部署SpringBoot应用的实现步骤

浏览器访问服务器的8080端口

Docker部署SpringBoot应用的实现步骤

手机访问:

Docker部署SpringBoot应用的实现步骤

查看日志

查看容器日志命令


docker logs -f springboot

说明:

查看容器日志但是不是实时更新,想要查看新的日志还需要重复运行


docker logs + 容器名称

实时更新日志


docker logs -f + 容器名称

Docker部署SpringBoot应用的实现步骤

Docker部署SpringBoot应用教程结束!

来源:https://blog.csdn.net/qq_31762741/article/details/121453707

0
投稿

猜你喜欢

  • 昨天在CnBeta上有人投递了一篇文章称其在浏览全球仅有的几个PR=10的网站时,其中有一个垃圾站点的PR=10(025yc.com),结果
  • 一、按照网上的教程,安装Ubuntu 18.04还是会安装不上去,有同学就有疑问了,明明按教程来做,就是不成功报错如下:二、执行命令时加入s
  • centOS 7如何安装docker?本文给出详细的步骤。首先准备一台linux系统。Docker需要一个64位系统的系统,内核的版本必须大
  • 1 VMware网卡VMware默认情况下会安装三个网卡,如下图示(点击最上方编辑-->虚拟网络编辑器)。VMnet0:“桥接网络”
  • 中华人民共和国建立以来,共进行了13次阅兵,其中重大的周年阅兵分别是1949,1959,1984,1999年。各种国产先进装备推陈出新,向世
  • 实际上,没有一个人敢说谁是真正的优化高手,因为做SEO这块没有谁敢说他是高手,只能说是经验。每一个人的经验不同所有方法也不同,其实目的只有一
  • 在网站上显示访问者的评论,是提高访问者参与度的方法之一。 此外,你还可以推荐在网站上推荐一些精彩评论,并给出评论者的网站链接。 下面我们就为
  • 不算前言的前言好像已经很久没有写过安全方面的文章了,所谓安全圈子里面,大家也许认为玄猫消失了,不过,我想,作为骇客的玄猫也许从来没有出现过吧
  • WebP(发音:weppy)是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式,派生自影像编码格式VP8,被认为是WebM多媒体格
  • SQL注入漏洞曾经是Web应用程序的噩梦,CMS、BBS、Blog无一不曾受其害。SQL注入的原理以往在Web应用程序访问数据库时一般是采取
  • 做为站长最不希望的事情我想就是自己的网站搬来搬去的,空间今天换东家,明天换西家的,除了工作量上的麻烦不说,但但从SEO的角度来来考虑感觉也是
  • 通过论坛、留言板和讨论组来将你的AdSense收入最大化!在第8章,我们讨论了如何通过博客来创造收入,不过博客当然不是互联网上唯一的内容,也
  • 全球有数以亿计的PC用户,每天打开电脑首先看到的就是Windows启动画面。从1985年到2009年,在这将近25年的时间里面,Window
  • 网上流传了很多个版本的Google Adsense低价广告过滤清单,并且也有很多发布者就在使用这个名单。从技术角度上讲,过滤单价广告不能提高
  • 自从seo大师丘仕达把挖土豆和163邮箱和其他的单页面站成功的优化后,就引发了SEO界的强烈反响,众多的追随者和后来者前仆后继的学习SEO,
  • 本文介绍了virtualbox中ubuntu和windows共享文件夹设置,具体如下:系统平台:win8.1、virtualbox4.3.8
  • 小广告主现在获得了对在线广告产生巨大影响的机会。ContextWeb(一家文本广告)公司于10月17日发布了最新ADSDAQ广告交换平台。A
  • 不要耍小聪明,自己点广告绝对危险,Google这么大的公司,有钱有技术在支持,不要认为我们开发个小软件就能骗过Google,不是不封~~是时
  • 快播的出现,已经成为互联网在线点播的一种新的标准。在网络视频点播日渐强大的今天,快播以其高清晰的点播资源,流畅的播放速度,赢得了众多影视发烧
  • SEO网站排名优化成为网络营销中不可忽视的力量,SEO成功制胜点在于链接。链接的初衷,目的很单纯,链接多半是为了用来介绍其它连接给访问者,所
手机版 网站运营 asp之家 www.aspxhome.com