首页 > 编程笔记 > Java笔记 阅读:2

Docker部署Spring Boot项目(新手必看)

在云计算领域,开发者需要具备哪些基本技能?Docker 必是其一,作为一个开源的应用容器引擎,Docker 能够让开发者打包它们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,方便快捷。本节介绍如何使用 Docker 部署 Spring Boot 项目。

Spring Boot项目添加Docker支持

1) 创建Spring Boot项目

创建一个简单的 Spring Boot 项目 spring-boot-starter-docker,并添加相关的依赖和 Controller 等。

项目创建完毕,启动项目,在浏览器访问地址 http://localhost:8080/,验证项目是否创建成功。页面返回“Hello Spring Boot Docker!”,说明 Spring Boot 项目配置正常。

2) 添加Docker支持

在 pom.xml 中添加 Docker 镜像名称:
<properties>
    <docker.image.prefix>springboot</docker.image.prefix>
</properties>
在上面的示例中,配置了镜像的名称为 springboot。

3) 添加Docker构建插件

在 pom.xml 中添加 plugins 构建 Docker 镜像的插件,配置代码如下:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- Docker maven plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</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>
        <!-- Docker maven plugin -->
    </plugins>
</build>
上面的配置为 maven 配置 Docker 构建插件,这样就可以使用 maven 发布 Docker 镜像。通过 ${docker.image.prefix} 引用之前定义的镜像名称。其他参数说明如下:
配置完成之后,在 Idea 右边的 maven 中,可以看到 maven 中已经新添加了 Docker 构建插件,如下图所示。


图 1 新添加的Docker构建插件

至此,我们已经成功在 maven 中配置了 Docker 构建插件。接下来只需要创建好 Dockerfile 文件,就能自动打包发布 Docker 镜像了。

发布Docker镜像

前面在 Spring Boot 项目中添加了 Docker 支持,下一步就是构建、运行 Docker 镜像。

1) 创建Dockerfile文件

在目录 src/main/docker 下创建 Dockerfile 文件,Dockerfile 文件用来说明如何构建镜像。示例代码如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD spring-boot-docker-1.0.jar spring-boot-docker.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar", "/spring-boot-docker.jar"]
这个 Dockerfile 文件很简单,构建 JDK 基础环境,添加 JAR 到镜像中,最后使用 java-jar 命令启动。具体说明如下:
这样 Spring Boot 项目添加 Docker 依赖就完成了。

2) 生成Docker镜像

接下来使用 Dockerfile 生成 Docker 镜像,先将项目 spring-boot-starter-docker 复制到服务器中。需要注意的是,示例测试的服务器为 CentOS,默认安装包为 JDK 和 Docker。

然后,进入项目根目录,使用如下命令生成 Docker 镜像:
mvn package docker:build
在控制台执行上面的命令之后,首次构建可能会比较慢,当看到如下图所示的内容时表明构建成功。


图 2 docker build的运行结果

通过上面的输出信息可以看到,Docker 镜像已经构建成功。使用 docker images 命令查看构建好的镜像,如下图所示。


图 3 Docker镜像列表

3) 运行Docker镜像

上面我们看到的 springboot/spring-boot-docker 镜像就是构建好的 Docker 镜像,接下来运行该镜像,创建并启动应用:
docker run -p 8080:8080 -t springboot/spring-boot-docker
命令执行完成之后,使用 docker ps 查看正在运行的镜像,如下图所示:


图 4 运行中的镜像

通过上面的输出可以看到构建的应用正在运行,使用浏览器访问 http://10.2.1.231:8080/,返回结果为 Hello Spring Boot Docker!,表示系统启动成功,能够正常访问。

相关文章