Docker中如何部署SpringBoot项目

这篇文章将为大家详细讲解有关Docker 中如何部署 Spring Boot 项目,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联作为成都网站建设公司,专注网站建设、网站设计,有关企业网站制作方案、改版、费用等问题,行业涉及活动板房等多个领域,已为上千家企业服务,得到了客户的尊重与认可。

一、Maven 插件配置

首先在 Maven pom.xml 配置文件中加入 Docker 的 Maven 插件。

我看网上很多人还在用 docker-maven-plugin 插件:


    docker



    
        
            com.spotify
            docker-maven-plugin
            1.2.2
            
                ${docker.image.prefix}/${project.artifactId}
                src/main/docker
                
                    
                        /
                        ${project.build.directory}
                        ${project.build.finalName}.jar
                    

                

            

        

    


 

你们还在用这个插件吗?

栈长从官方仓库看到,这个插件官方已经不维护了:

Docker 中如何部署 Spring Boot 项目  

所以这个插件我就不推荐大家使用了,而是推荐官方的另外一个插件:dockerfile-maven


    
        
            com.spotify
            dockerfile-maven-plugin
            1.4.13
            
                
                    default
                    
                        build
                        push
                    

                

            

            
                javastack/${project.name}
                ${project.version}
                
                    ${project.build.finalName}.jar
                

                src/main/docker/Dockerfile
            

        

    


 

这个插件使用简单,功能更强大。

新插件地址:

https://github.com/spotify/dockerfile-maven

最新版插件的环境要求:

  • JDK 7+

  • Apache Maven 3.5.2+

这个插件的牛逼之处在于:

1、从插件名称就可以知道,这个插件是基于 Dockerfile 文件进行构建 Docker 项目的,专注 Dockerfile 文件,所以需要一个 Dockerfile 文件,Dockerfile 也是构建 Docker 项目的基石。

2、把 Docker 的构建过程集成到了 Maven 的构建过程之中,如果使用默认的配置,使用 mvn package 命令就能打包成一个 Docker 镜像,使用 mvn deploy 命令就能推送到 Docker 仓库。

3、使我们的构建目标更明确,如我们先使用 mvn dockerfile:build 然后再 mvn dockerfile:tag,然后再 mvn dockerfile:push,也可以满足同时构建再推送的场景,如:mvn dockerfile:build dockerfile:push,这都没问题的。

4、与 Maven 构建集成,我们可以在一个项目中依赖另外一个项目的 Docker 镜像,Maven 将以正确的顺序构建项目。当我们运行涉及多个服务的集成测试用例时,这很有用的。

 

二、Docker 配置

Dockerfile 是创建 Docker 镜像的基本配置文件,本身是一个文本文件。

插件默认加载位置为项目所在根目录,因为我在上面的 Maven 插件配置中指明了路径。所以,在 src/main/docker/ 目录下添加一个 Dockerfile 文件:

# 添加 Java 8 镜像来源
FROM java:8

# 添加参数
ARG JAR_FILE

# 添加 Spring Boot 包
ADD target/${JAR_FILE} app.jar

# 执行启动命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
 

值得说一下的是,上面的 JAR_FILE 参数就是从 Docker Maven 插件中指定的构建参数,这也是这个插件的强大之处,可以翻到文章上面去看一下。

具体的 Dockerfile 文件细节比较多,这里就不展开详细介绍了,后面我再开一篇单独介绍,关注公众号Java技术栈第一时间推送。

 

三、添加测试接口

添加一个测试接口,以便后面部署测试。

package cn.javastack.springboot.docker;

import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 微信公众号:Java技术栈
 */
@RestController
@SpringBootApplication
public class DockerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerApplication.class);
    }

    @GetMapping("/docker/hello")
    public String helloDocker() {
        return "hello docker";
    }

}
 

Spring Boot 基础性的知识和搭建过程就不介绍了,不熟悉的可以关注公众号Java技术栈,在后台回复关键字 "boot" 阅读我之前写的系列教程。

所有 Spring Boot 教程实战源码在下面个仓库:

https://github.com/javastacks/spring-boot-best-practice

本篇所有实战源码到时也会全部同步到上面,大家 Star 一下吧!

 

四、构建 Docker 镜像

配置了 Maven 插件和 Dockerfile 文件后就可以开始构建 Docker 镜像了。

上面也说了,Docker 构建过程已经集成到了 Maven 的构建过程之中,那么可以直接使用 mvn package 就可以同时打包和构建 Docker 镜像了。

在 IDEA 中可以直接点击插件对应的命令运行:

Docker 中如何部署 Spring Boot 项目  
Docker 中如何部署 Spring Boot 项目  

插件会根据 Dockerfile 文件构建,文件中有多少条命令,就分为几个步骤构建,如果没问题就会构建成功。

 

五、IDEA 怎么操作 Docker?

一旦我们创建了 Dockerfile 文件,IDEA 就会自动识别并提示我们创建 Docker 连接,当然,我们也可以调出 Services 面板进行手动创建。

打开 IDEA 中的 Services 面板:

Docker 中如何部署 Spring Boot 项目  

然后点击 Add service > Docker Connection 来添加一个 Docker 连接:

Docker 中如何部署 Spring Boot 项目  

创建完后会自动连接上,点击展开会显示 Docker 本地所有镜像和容器:

Docker 中如何部署 Spring Boot 项目  

如上图所示,就是我们刚构建的镜像。

 

六、创建并运行容器

右击上面的镜像,选择 "Create Container" 菜单来创建并运行一个容器。

Docker 中如何部署 Spring Boot 项目  

填写相应的运行参数,再点击运行按钮,容器即开始运行。

然后在 Build Log 和 Log 面板中可以看到容器运行日志和应用程序运行日志:

Docker 中如何部署 Spring Boot 项目  
Docker 中如何部署 Spring Boot 项目  

项目在 Docker 中运行起来了,然后再访问下上面写的测试接口:

http://localhost:8080/docker/hello

Docker 中如何部署 Spring Boot 项目  

关于Docker 中如何部署 Spring Boot 项目就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网页题目:Docker中如何部署SpringBoot项目
本文地址:http://scyanting.com/article/gcoshg.html