Dockerfile 部署 Spring Boot 项目 JAR

在传统的部署过程中,我们通常需要在服务器上安装和配置各种软件和依赖项,以确保我们的应用程序能够正确运行。这个过程有时会非常复杂和耗时。而 Docker 的出现则简化了这个过程,使得我们能够更快速、可靠地部署我们的应用程序。

本文将介绍如何使用 Dockerfile 来部署一个基于 Spring Boot 的项目 JAR 文件。我们将通过一个具体的示例来演示整个过程。

1. 准备 Dockerfile

首先,我们需要创建一个名为 Dockerfile 的文件,并在其中定义我们的 Docker 镜像。

# 基于官方 Java 镜像进行构建
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 将可执行 JAR 文件复制到容器中
COPY target/myproject.jar myproject.jar

# 暴露应用程序的端口
EXPOSE 8080

# 启动应用程序
CMD ["java", "-jar", "myproject.jar"]

上述 Dockerfile 的内容可以分为以下几个部分:

  1. 第一行指定了我们要使用的基础镜像,这里我们选择了 OpenJDK 8。
  2. 第三行设置了容器内的工作目录为 /app
  3. 第五行将本地的 target/myproject.jar 文件复制到容器的 /app 目录。
  4. 第七行指定了容器对外暴露的端口号为 8080。
  5. 最后一行定义了容器启动命令,即运行 java -jar myproject.jar

2. 构建镜像

接下来,我们需要在项目根目录下执行以下命令来构建 Docker 镜像:

docker build -t myproject .

其中,-t myproject 参数用于指定镜像的名称为 myproject

3. 运行容器

构建成功后,我们就可以运行镜像并创建容器了。

docker run -p 8080:8080 myproject

其中,-p 8080:8080 参数用于指定将容器的 8080 端口映射到主机的 8080 端口。

4. 结束运行

当我们需要结束容器的运行时,可以通过以下命令停止和删除容器:

# 查看正在运行的容器
docker ps

# 停止容器
docker stop <CONTAINER_ID>

# 删除容器
docker rm <CONTAINER_ID>

类图

classDiagram
    class Dockerfile {
        - FROM
        - WORKDIR
        - COPY
        - EXPOSE
        - CMD
    }

上述类图展示了 Dockerfile 的主要成员和关系。其中,FROM 用于指定基础镜像,WORKDIR 用于设置工作目录,COPY 用于复制文件,EXPOSE 用于暴露端口,CMD 用于定义启动命令。

序列图

sequenceDiagram
    participant Developer
    participant Docker
    participant Server

    Developer->>Docker: 创建 Dockerfile
    Developer->>Docker: 执行 docker build
    Docker->>Server: 从 Docker Hub 下载基础镜像
    Docker->>Server: 创建新的镜像
    Docker->>Server: 复制应用程序文件到容器中
    Docker->>Server: 暴露端口
    Docker->>Server: 定义启动命令
    Developer->>Docker: 执行 docker run
    Docker->>Server: 创建容器
    Server->>Docker: 返回容器 ID
    Docker->>Developer: 显示容器日志
    Developer->>Docker: 执行 docker stop
    Docker->>Server: 停止容器
    Developer->>Docker: 执行 docker rm
    Docker->>Server: 删除容器

上述序列图展示了开发者使用 Docker 部署 Spring Boot 项目 JAR 的过程。开发者首先创建 Dockerfile,并通过 docker build 命令构建镜像