Docker 已成为现代软件开发中不可或缺的一部分,尤其是在开发和生产环境中,使用 Docker 可以确保应用的一致性、可移植性以及易于扩展。将 Spring Boot 项目容器化并通过 Docker 部署,不仅可以简化开发与运维流程,还能使应用具备更高的可移植性和可扩展性。本文将详细介绍如何使用 Docker 部署 Spring Boot 项目。
为什么选择 Docker?
Docker 提供了一个标准化的容器环境,允许开发者将应用及其所有依赖打包成一个轻量级的容器,确保应用在任何环境中都能运行。以下是使用 Docker 部署 Spring Boot 项目的几个好处:
在开始使用 Docker 部署之前,首先需要构建 Spring Boot 项目并生成可执行的 JAR 文件。如果你还没有构建过 Spring Boot 项目,可以通过以下步骤完成构建。
mvn clean package
./gradlew build
构建完成后,你将在 target
目录下看到生成的 .jar
文件,通常命名为 your-application-name.jar
。
在项目的根目录下创建一个名为 Dockerfile
的文件,Dockerfile 用来定义如何构建 Docker 镜像。
# 使用 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
/app/myapp.jar
。在项目的根目录(与 Dockerfile 文件同级)执行以下命令,构建 Docker 镜像:
docker build -t myapp:1.0 .
-t myapp:1.0
:为镜像打上标签(myapp
是镜像名称,1.0
是版本号)。.
:指定当前目录为构建上下文,Docker 会在当前目录查找 Dockerfile。构建完成后,你可以使用以下命令查看构建的镜像:
docker images
构建完镜像后,使用以下命令来运行容器:
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
访问该应用。
容器启动后,可以查看 Spring Boot 应用的日志,确保应用正常启动。
docker logs -f myapp-container
-f
:持续输出日志,类似 tail -f
。你可以使用以下命令来管理 Docker 容器。
docker ps
docker stop myapp-container
docker rm myapp-container
docker rmi myapp:1.0
当容器启动完成后,你可以通过浏览器或者其他工具访问应用:
http://localhost:10010
注意
:
项目启动成功,无法访问网站的问题,有可能Linux服务器防火墙没有将10010端口放行,放行命令:
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 的作用尤为显著。