文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Docker如何部署SpringBoot应用

2023-06-25 17:33

关注

这篇文章主要为大家展示了“Docker如何部署SpringBoot应用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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><h2>Docker部署SpringBoot应用</h2><img src="/static/img/2.jpg" alt="" width="100%"></body></html>

定义主页Controller,跳转到index

@Controllerpublic 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-alpineCOPY ./app.jar /tmp/app.jarENTRYPOINT 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 tmpmkdir 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

.

可以看到构建镜像的时候会以我们编写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

-p端口映射

-d

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应用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯