开发者

Docker部署SpringBoot项目教程(完整版)

目录
  • 背景
  • 目标
  • 1. 准备工作
    • 安装FinalShell(远程服务器连接工具)
    • 安装 docker
    • 配置日志存储路径
    • 配置 Spring Boot 日志
  • 2. 使用 IntelliJ IDEA 构建 Spring Boot 项目
    • 打包 Spring Boot 项目
    • 生成的 JAR 文件
  • 3. 创建 Dockerfile
    • 4.(关键的一步)将文件上传到服务器
      • 5. 构建 Docker 镜像
        • 6. 运行 Docker 容器
          • 7. 验证部署访问 Spring Boot 应用
            • 结论

              背景

              在微服务架构的背景下,Spring Boot 已经成为了许多项目的首选开发框架。随着容器化技术的兴起,Docker 为应用的部署、管理提供了强大且灵活的方式。

              本文将演示如何将一个本地开发的 Spring Boot 项目,通过 Docker 容器部署到 linux 服务器上,并将日志文件挂载到宿主机上,以便于后期的日志管理和排查问题。

              目标

              • 使用 Docker 部署 Spring Boot 项目。
              • 日志文件挂载到宿主机,以便后期查看和管理。
              • 通过 本地 IntelliJ IDEA 构建项目,然后上传到服务器。

              1. 准备工作

              安装FinalShell(远程服务器连接工具)

              Docker部署SpringBoot项目教程(完整版)

              安装 Docker

              确保你的服务器上已经安装 Dockeandroidr。你可以通过以下命令来检查 Docker 是否安装:

              docker --version

              Docker部署SpringBoot项目教程(完整版)

              如果没有安装 Docker,可以参考官方文档进行安装

              配置日志存储路径

              在部署 Spring Boot 项目时,我们需要指定日志文件的存储路径。为了让容器中的日志能够被宿主机访问并持久化,我们将 日志文件挂载到宿主机

              假设我们在宿主机上创建一个日志文件存储目录 /usr/app2/learn-server-app-logs

              mkdir -p /usr/app2/learn-server-app-logs
              chmod -R 755 /usr/app2/learn-server-app-logs

              配置 Spring Boot 日志

              在你的 logback-spring.XML 配置文件中,确保日志文件输出路径指向容器内的 /app/logs 路径,并且在启动时将该目录挂载到宿主机:

              <property name="LOG_HOME" value="log/logs" />
              <appender name="FILE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
                  <File>${LOG_HOME}/springboot-app.log</File>
                  <!-- 配置滚动策略 -->
              </appender>

              确保日志文件的路径使用相对路径(如 log/logs),Docker 会将此目录挂载到宿主机指定的目录。

              2. 使用 IntelliJ IDEA 构建 Spring Boot 项目

              首先,我们需要将 Spring Boot 项目打包为一个可执行的 JAR 文件。

              打包 Spring Boot 项目

              IntelliJ IDEA 中,你可以通过以下步骤来构建项目:

              打开项目,在Maven菜单栏中双击package进行打包。

              Docker部署SpringBoot项目教程(完整版)

              出现BUILD SUCCESS打包成功

              Docker部署SpringBoot项目教程(完整版)

              生成的 JAR 文件

              构建完成后,你的 JAR 文件将在 target/ 目录中,假设文件名为 learn-server.jar

              Docker部署SpringBoot项目教程(完整版)

              3. 创建 Dockerfile

              为了将 Spring Boot 项目打包到 Docker 容器中,我们需要编写一个 DockerfileDockerfile 是一个简单的脚本,它包含了构建 Docker 镜像所需的所有命令。

              创建一个名为 Dockerfile 的文件:

              # 选择基础镜像
              FROM openjdk:11-jre-slim
              # 设置工作目录
              WORKDIR /app
              # 复制构建后的 JAR 文件到容器中
              COPY learn-server.jar app.jar
              # 暴露应用程序端口
              EXPOSE 10010
              # 设置容器启动时执行的命令,启动 Spring Boot 应用并传递参数
              ENTRYPOINT ["Java", "-jar", "app.jar", "--server.port=10010", "--spring.profiles.active=prod"]

              4.(关键的一步)将文件上传到服务器

              learn-server.jarDockerfile文件上传到服务器上,使用FinalShell时直接从本地磁盘将这两个文件拖拽到/usr/app2目录,FinalShell`会自动上传。

              Docker部署SpringBoot项目教程(完整版)

              5. 构建 Docker 镜像

              使用下面的命令http://www.devze.com在项目目录下构建 Docker 镜像:

              docker build -t springboot-app .

              注意:要在你上传jar包的同级目录下执行

              Docker部署SpringBoot项目教程(完整版)

              该命令将会根据 Dockerfile 构建出一个名为 springboot-app 的 Docker 镜像。

              构建成功如图所示:

              Docker部署SpringBoot项目教程(完整版)

              6. 运行 Docker 容器

              使用以下命令启动容器,并将日志文件挂载到宿主机的 /phpusr/app2/learn-server-app-logs 目录:

              docker run -d -p 10010:10010 --name learn-server-app -v /usr/app2/learn-server-app-logs:/app/log/logs springboot-app
              • -p 10010:10010:将容器的 10010 端口映射到python宿主机的 10010 端口。
              • --name learn-server-app:给容器指定一个名称。
              • -v /usr/app2/learn-server-app-logs:/app/log/logs:将宿主机上的 /usr/app2/learn-server-app-logs 目录挂载到容器中的 /app/log/logs 目录。

              Docker部署SpringBoot项目教程(完整版)

              使用docker logs learn-server-app查看启动日志

              启动成功

              Docker部署SpringBoot项目教程(完整版)

              7. 验证部署访问 Spring Boot 应用

              在浏览器中访问 http://<服务器IP>:10010,你应该能够看到 Spring Boot 应用正常启动。

              Docker部署SpringBoot项目教程(完整版)

              查看日志

              所有生成的日志文件将被保存在宿主机上的 /usr/app2/learn-server-app-logs 目录中编程,方便后期查看和管理。

              tail -200f /usr/app2/learn-server-app-logs/pro-server-info.log

              Docker部署SpringBoot项目教程(完整版)

              结论

              通过 Docker 部署 Spring Boot 项目并将日志挂载到宿主机是一个非常实用的方案,尤其是在生产环境中。它不仅简化了部署过程,还可以更好地管理应用的日志。通过将日志文件存储在宿主机上,我们可以方便地查看和管理日志,避免了容器重启后丢失日志的风险。

              以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

              0

              上一篇:

              下一篇:

              精彩评论

              暂无评论...
              验证码 换一张
              取 消

              最新开发

              开发排行榜