温馨提示×

温馨提示×

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

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

Docker 中如何部署 Spring Boot 项目

发布时间:2021-07-30 18:14:34 来源:亿速云 阅读:176 作者:Leah 栏目:编程语言

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


一、Maven 插件配置

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

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

<properties>
    <docker.image.prefix>docker</docker.image.prefix>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.2.2</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
</build>
 

你们还在用这个插件吗?

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

Docker 中如何部署 Spring Boot 项目  

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

<build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.13</version>
            <executions>
                <execution>
                    <id>default</id>
                    <goals>
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <repository>javastack/${project.name}</repository>
                <tag>${project.version}</tag>
                <buildArgs>
                    <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
                <dockerfile>src/main/docker/Dockerfile</dockerfile>
            </configuration>
        </plugin>
    </plugins>
</build>
 

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

新插件地址:

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 项目就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

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

AI