继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Springboot应用的Docker容器化部署项目实战

30秒到达战场
关注TA
已关注
手记 443
粉丝 95
获赞 569
概述

本文详细介绍了Spring Boot应用的Docker容器化部署项目实战,从准备开发环境到编写Dockerfile,再到运行Docker容器和部署到云平台,每一步都进行了详细的指导。通过本文,读者可以轻松掌握如何将Spring Boot应用打包成可执行文件并使用Docker进行部署,实现应用快速、一致的部署。

引入Docker与Spring Boot

什么是Docker

Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。Docker 使用 Linux 内核的命名空间和控制组特性来隔离容器内的进程,并通过镜像文件来管理容器的创建过程。Docker 的核心是一个终结点套接字,通过它发送指令来创建和管理容器。Docker 通过 Dockerfile 定义容器的构建步骤和配置,确保应用在不同环境中的一致性。

什么是Spring Boot

Spring Boot 是由 Spring 团队提供的一个用于简化新 Spring 应用初始搭建以及开发过程的框架。Spring Boot 可以独立运行在任何环境中,通过配置文件可以方便地进行各种功能的定制。Spring Boot 的核心是自动配置功能,它能够自动检测并配置应用程序中的依赖项,从而大大减少了开发者需要编写的代码量。Spring Boot 提供了丰富的功能支持,包括数据访问、安全认证、邮件发送等。此外,Spring Boot 还可以与 Spring Cloud 框架结合使用,实现分布式系统的开发。

Docker与Spring Boot结合的好处

Docker 与 Spring Boot 结合使用可以实现应用的快速部署、测试和迁移。具体来说,容器化技术使得应用的部署和运行环境更加一致,降低了不同环境之间的差异对应用的影响。Dockerfile 可以清晰地定义应用的依赖环境,确保应用在不同环境下的行为一致。同时,使用 Docker 部署 Spring Boot 应用可以显著减少部署时间和复杂度,提高开发效率。容器化使得应用更容易进行版本管理和回滚,提高了应用的可维护性和可靠性。

准备开发环境

安装Docker

  1. 访问 Docker 官方网站,下载适合您操作系统的 Docker 版本。
  2. 安装 Docker,安装过程中可能需要管理员权限。
  3. 安装完成后,启动 Docker 服务。
  4. 验证 Docker 安装是否成功,可以通过命令 docker --version 查看 Docker 版本信息。

安装Java开发环境

  1. 访问 Oracle 官方网站下载 JDK(Java Development Kit),或使用 OpenJDK。
  2. 安装 JDK 或 OpenJDK。
  3. 配置环境变量,确保 Java 安装路径已添加到 PATH 环境变量中。
  4. 验证 Java 安装是否成功,可以通过命令 java -version 查看 Java 版本信息。

创建Spring Boot项目

  1. 访问 Spring Initializr 网站(https://start.spring.io/)。
  2. 选择 Maven 项目类型,语言为 Java。
  3. 输入项目基本信息:GroupArtifact,选择 Java 版本,添加依赖(例如:Web, Thymeleaf, JPA, H2)。
  4. 点击 Generate 生成项目压缩包。
  5. 解压压缩包到本地文件夹。
  6. 使用 IDE(如 IntelliJ IDEA 或 Eclipse)打开解压后的项目,确保 pom.xml 文件中的依赖项正确配置。
将Spring Boot应用打包成可执行文件

使用Maven或Gradle打包Spring Boot应用

Spring Boot 应用可以使用 Maven 或 Gradle 进行打包。本例中以 Maven 为例。

  1. 打开 pom.xml 文件,确保包含以下依赖项:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.0</version>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  2. 打包应用:

    mvn clean package
  3. target 目录下生成的 JAR 文件即为打包好的 Spring Boot 应用。

使用Gradle打包Spring Boot应用

  1. 打开 build.gradle 文件,确保包含以下依赖项:

    plugins {
        id 'org.springframework.boot' version '2.7.0'
        id 'io.spring.dependency-management' version '1.0.11.RELEASE'
        id 'java'
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
        implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
        implementation 'com.h2database:h2'
    }
  2. 打包应用:

    ./gradlew bootJar
  3. build/libs 目录下生成的 JAR 文件即为打包好的 Spring Boot 应用。

验证打包后的应用可以正常运行

  1. 使用命令运行打包好的 JAR 文件:

    java -jar target/your-app.jar
  2. 访问 http://localhost:8080 查看应用是否正常运行。例如,若使用 Thymeleaf 和 H2 数据库,你可以访问 /h2-console 查看 H2 控制台。
编写Dockerfile

解释Dockerfile的结构

Dockerfile 是一个构建 Docker 镜像的文本文件。它由一系列命令组成,每个命令都对应 Docker 的一个步骤。Docker 使用这些命令来构建镜像并运行容器。Dockerfile 的基本结构如下:

  1. 基础镜像:使用 FROM 指定基础镜像。例如 FROM openjdk:11-jre-slim
  2. 环境变量:使用 ENV 设置环境变量,例如 ENV APP_NAME=your-app
  3. 工作目录:使用 WORKDIR 指定工作目录,例如 WORKDIR /app
  4. 文件复制:使用 COPY 将文件复制到镜像中,例如 COPY target/your-app.jar /app/app.jar
  5. 运行命令:使用 CMD 指定容器启动时运行的命令,例如 CMD ["java", "-jar", "app.jar"]

编写适用于Spring Boot应用的Dockerfile示例

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

# 使用官方的openjdk基础镜像
FROM openjdk:11-jre-slim

# 设置环境变量
ENV APP_NAME=your-app

# 设置工作目录
WORKDIR /app

# 将应用的jar文件复制到镜像中
COPY target/your-app.jar /app/app.jar

# 容器启动时执行的命令
CMD ["java", "-jar", "app.jar"]

构建Docker镜像

  1. 在项目根目录下运行以下命令构建 Docker 镜像:
    docker build -t your-app:latest .
  2. 使用 docker images 命令查看构建好的镜像。
运行Docker容器

使用命令运行Docker容器

  1. 运行 Docker 容器:
    docker run -p 8080:8080 -e SPRING_PROFILES_ACTIVE=prod -t your-app:latest
  2. 查看容器运行情况:
    docker ps

设置端口映射和环境变量

  1. 使用 -p 参数将容器内的端口映射到主机端口,例如 -p 8080:8080
  2. 使用 -e 参数设置环境变量,例如 -e SPRING_PROFILES_ACTIVE=prod

访问并测试容器中的Spring Boot应用

  1. 在浏览器中访问 http://localhost:8080,查看应用是否正常运行。
  2. 使用 docker logs <container_id> 查看容器日志,确保应用启动无误。
部署到云平台

选择云平台(如阿里云、腾讯云等)

选择一个云平台进行部署。例如阿里云、腾讯云等。各云平台提供 Docker 镜像仓库和容器服务,可以方便地将本地 Docker 镜像推送到云端,并部署容器化的应用。

将本地Docker镜像推送到云平台镜像仓库

  1. 登录到云平台的容器服务,创建一个新的镜像仓库。
  2. 使用 Docker 命令将本地镜像推送到云平台仓库:
    docker tag your-app:latest registry.cn-hangzhou.aliyuncs.com/your-repo/your-app:latest
    docker push registry.cn-hangzhou.aliyuncs.com/your-repo/your-app:latest

使用云平台部署容器化的Spring Boot应用

  1. 在云平台控制台上创建一个新的服务实例。
  2. 配置服务实例使用之前推送的 Docker 镜像。
  3. 设置服务实例的运行配置,例如容器端口映射、环境变量等。
  4. 启动服务实例,访问云平台提供的访问地址测试应用是否正常运行。
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP