文章目录
- [使用 Docker 部署 Spring Boot 项目流程](#使用 Docker 部署 Spring Boot 项目流程)
-
- [1. 构建 Spring Boot 项目](#1. 构建 Spring Boot 项目)
-
- [使用 Maven 构建项目:](#使用 Maven 构建项目:)
- [使用 Gradle 构建项目:](#使用 Gradle 构建项目:)
- [2. 创建 Dockerfile](#2. 创建 Dockerfile)
-
- [示例 Dockerfile:](#示例 Dockerfile:)
- [3. 构建 Docker 镜像](#3. 构建 Docker 镜像)
- [4. 运行 Docker 容器](#4. 运行 Docker 容器)
- [5. 查看容器日志](#5. 查看容器日志)
- [6. 管理 Docker 容器](#6. 管理 Docker 容器)
- [7. 访问 Spring Boot 应用](#7. 访问 Spring Boot 应用)
- 总结
使用 Docker 部署 Spring Boot 项目流程
Docker 已成为现代软件开发中不可或缺的一部分,尤其是在开发和生产环境中,使用 Docker 可以确保应用的一致性、可移植性以及易于扩展。将 Spring Boot 项目容器化并通过 Docker 部署,不仅可以简化开发与运维流程,还能使应用具备更高的可移植性和可扩展性。本文将详细介绍如何使用 Docker 部署 Spring Boot 项目。
为什么选择 Docker?
Docker 提供了一个标准化的容器环境,允许开发者将应用及其所有依赖打包成一个轻量级的容器,确保应用在任何环境中都能运行。以下是使用 Docker 部署 Spring Boot 项目的几个好处:
- 跨平台支持:无论是开发环境、测试环境,还是生产环境,Docker 确保你的应用以相同的方式运行。
- 简化部署:Docker 镜像将应用及其依赖打包在一起,方便迁移和部署。
- 快速启动和隔离:Docker 容器启动速度非常快,且容器之间相互隔离,避免了资源冲突。
1. 构建 Spring Boot 项目
在开始使用 Docker 部署之前,首先需要构建 Spring Boot 项目并生成可执行的 JAR 文件。如果你还没有构建过 Spring Boot 项目,可以通过以下步骤完成构建。
使用 Maven 构建项目:
bash
mvn clean package
使用 Gradle 构建项目:
bash
./gradlew build
构建完成后,你将在 target
目录下看到生成的 .jar
文件,通常命名为 your-application-name.jar
。
2. 创建 Dockerfile
在项目的根目录下创建一个名为 Dockerfile
的文件,Dockerfile 用来定义如何构建 Docker 镜像。
示例 Dockerfile:
bash
# 使用 OpenJDK 作为基础镜像
FROM openjdk:11-jre-slim
# 将 Spring Boot 构建的 JAR 文件复制到容器中
COPY target/myapp-1.0.0.jar /app/myapp.jar
# 配置容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "/app/myapp.jar"]
# 暴露容器端口(Spring Boot 自定义使用 10010 端口)
EXPOSE 10010
解释:
- FROM openjdk:11-jre-slim:指定基础镜像为 OpenJDK 11 的轻量版本。
- COPY target/myapp-1.0.0.jar /app/myapp.jar :将构建好的 Spring Boot JAR 文件复制到容器内的
/app/myapp.jar
。 - ENTRYPOINT:定义容器启动时执行的命令,这里是运行 JAR 文件。
- EXPOSE 10010:声明容器监听的端口,Spring Boot 自定义使用 10010 端口。
3. 构建 Docker 镜像
在项目的根目录(与 Dockerfile 文件同级)执行以下命令,构建 Docker 镜像:
bash
docker build -t myapp:1.0 .
-t myapp:1.0
:为镜像打上标签(myapp
是镜像名称,1.0
是版本号)。.
:指定当前目录为构建上下文,Docker 会在当前目录查找 Dockerfile。
构建完成后,你可以使用以下命令查看构建的镜像:
bash
docker images
4. 运行 Docker 容器
构建完镜像后,使用以下命令来运行容器:
bash
docker run -d -p 10010:10010 --name myapp-container myapp:1.0
-d
:让容器在后台运行。-p 10010:10010
:将容器的 10010 端口映射到主机的 10010 端口。--name myapp-container
:指定容器的名称为myapp-container
。myapp:1.0
:指定使用的镜像。
通过此命令,Spring Boot 项目将在容器中启动,并且你可以通过 http://localhost:10010
访问该应用。
5. 查看容器日志
容器启动后,可以查看 Spring Boot 应用的日志,确保应用正常启动。
bash
docker logs -f myapp-container
-f
:持续输出日志,类似tail -f
。
6. 管理 Docker 容器
你可以使用以下命令来管理 Docker 容器。
查看正在运行的容器:
bash
docker ps
停止容器:
bash
docker stop myapp-container
删除容器:
bash
docker rm myapp-container
删除镜像:
bash
docker rmi myapp:1.0
7. 访问 Spring Boot 应用
当容器启动完成后,你可以通过浏览器或者其他工具访问应用:
bash
http://localhost:10010
注意
:
项目启动成功,无法访问网站的问题,有可能Linux服务器防火墙没有将10010端口放行,放行命令:
bash
firewall-cmd --zone=public --add-port=10010/tcp --permanent
firewall-cmd --reload #配置完刷新
配置完之后使用firewall-cmd --list-all
验证是否生效,显示如下信息:
总结
通过 Docker 部署 Spring Boot 项目可以极大简化应用的部署和运维流程。Docker 提供了一种隔离且轻量的方式,确保应用在不同环境中的一致性和可移植性。将应用容器化不仅便于管理,还能提高部署的效率。
本文介绍了如何:
- 构建
Spring Boot
项目。 - 创建
Dockerfile
文件来定义容器。 - 构建和运行
Docker
镜像与容器。
随着项目规模的增大,使用 Docker 管理应用程序将变得更加高效,特别是在微服务架构下,Docker 的作用尤为显著。