温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Docker如何部署SpringBoot应用

发布时间:2022-03-03 15:11:31 来源:亿速云 阅读:224 作者:小新 栏目:开发技术

这篇文章主要为大家展示了“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

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

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI