SpringBoot(2.3)应用制作Docker镜像的过程

发布时间:2021-10-12 14:01:05 作者:柒染
来源:亿速云 阅读:155

SpringBoot(2.3)应用制作Docker镜像的过程

1. 引言

在现代软件开发中,容器化技术已经成为一种不可或缺的工具。Docker作为最流行的容器化平台之一,能够帮助开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。Spring Boot流行的Java框架,提供了快速构建独立、生产级别的Spring应用程序的能力。本文将详细介绍如何将一个Spring Boot 2.3应用制作成Docker镜像,并部署到Docker容器中。

2. 准备工作

在开始之前,确保你已经具备以下条件:

3. 创建Spring Boot应用

如果你还没有一个Spring Boot应用,可以通过以下步骤快速创建一个简单的Spring Boot应用。

3.1 使用Spring Initializr创建项目

  1. 打开Spring Initializr
  2. 选择项目类型为Maven或Gradle。
  3. 选择Spring Boot版本为2.3.x。
  4. 添加依赖项,例如Spring Web
  5. 点击“Generate”按钮下载项目。

3.2 编写简单的REST控制器

src/main/java/com/example/demo目录下创建一个DemoApplication.java文件,并添加以下代码:

package com.example.demo;

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

@SpringBootApplication
@RestController
public class DemoApplication {

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

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Docker!";
    }
}

3.3 运行应用

在项目根目录下运行以下命令来启动应用:

mvn spring-boot:run

或者使用Gradle:

gradle bootRun

访问http://localhost:8080/hello,你应该会看到“Hello, Docker!”的响应。

4. 构建Spring Boot应用

在将应用打包成Docker镜像之前,首先需要将Spring Boot应用构建成一个可执行的JAR文件。

4.1 使用Maven构建

在项目根目录下运行以下命令:

mvn clean package

构建完成后,你会在target目录下找到一个名为demo-0.0.1-SNAPSHOT.jar的文件。

4.2 使用Gradle构建

在项目根目录下运行以下命令:

gradle build

构建完成后,你会在build/libs目录下找到一个名为demo-0.0.1-SNAPSHOT.jar的文件。

5. 创建Dockerfile

Dockerfile是一个文本文件,包含了一系列指令,用于定义如何构建Docker镜像。接下来,我们将为Spring Boot应用创建一个Dockerfile。

5.1 创建Dockerfile

在项目根目录下创建一个名为Dockerfile的文件,并添加以下内容:

# 使用官方的OpenJDK 8作为基础镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 将构建的JAR文件复制到容器中
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar

# 暴露端口
EXPOSE 8080

# 运行应用
ENTRYPOINT ["java", "-jar", "app.jar"]

5.2 解释Dockerfile

6. 构建Docker镜像

在创建了Dockerfile之后,接下来我们需要使用Docker命令来构建镜像。

6.1 构建镜像

在项目根目录下运行以下命令:

docker build -t demo-app .

6.2 查看镜像

构建完成后,你可以使用以下命令查看本地镜像列表:

docker images

你应该会看到类似以下的输出:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
demo-app            latest              1234567890ab        1 minute ago        123MB

7. 运行Docker容器

在构建了Docker镜像之后,接下来我们可以运行一个容器来启动Spring Boot应用。

7.1 运行容器

使用以下命令运行容器:

docker run -p 8080:8080 demo-app

7.2 访问应用

在浏览器中访问http://localhost:8080/hello,你应该会看到“Hello, Docker!”的响应。

8. 优化Docker镜像

虽然我们已经成功构建并运行了Docker镜像,但我们可以进一步优化镜像的大小和性能。

8.1 使用多阶段构建

多阶段构建是一种优化Docker镜像大小的技术。它允许我们在一个Dockerfile中使用多个FROM指令,每个阶段可以使用不同的基础镜像,并且只有最后一个阶段的内容会被包含在最终的镜像中。

修改Dockerfile如下:

# 第一阶段:构建应用
FROM maven:3.6.3-jdk-8 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests

# 第二阶段:运行应用
FROM openjdk:8-jdk-alpine
WORKDIR /app
COPY --from=build /app/target/demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

8.2 解释多阶段构建

8.3 重新构建镜像

运行以下命令重新构建镜像:

docker build -t demo-app .

8.4 查看镜像大小

使用以下命令查看镜像大小:

docker images

你应该会看到镜像大小有所减小。

9. 使用Docker Compose管理容器

在实际开发中,我们通常需要管理多个容器。Docker Compose是一个工具,允许我们使用YAML文件来定义和运行多个容器的应用。

9.1 创建docker-compose.yml文件

在项目根目录下创建一个名为docker-compose.yml的文件,并添加以下内容:

version: '3'
services:
  app:
    image: demo-app
    build: .
    ports:
      - "8080:8080"

9.2 启动应用

在项目根目录下运行以下命令:

docker-compose up

9.3 停止应用

使用以下命令停止应用:

docker-compose down

10. 总结

通过本文,我们详细介绍了如何将一个Spring Boot 2.3应用制作成Docker镜像,并部署到Docker容器中。我们还探讨了如何优化Docker镜像的大小和性能,以及如何使用Docker Compose来管理多个容器。希望这些内容能够帮助你在实际项目中更好地使用Docker和Spring Boot。

11. 参考资料


作者: [Your Name]
日期: [Date]
版本: 1.0

推荐阅读:
  1. 《SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用》
  2. springboot整合docker如何部署实现两种构建Docker镜像方式

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

springboot docker maven

上一篇:使用Linux的技巧有哪些

下一篇:如何使用JAVA接口传递参数

相关阅读

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

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