欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 在 Linux 上使用 Docker 部署 Spring Boot 项目

在 Linux 上使用 Docker 部署 Spring Boot 项目

2025/3/18 14:55:14 来源:https://blog.csdn.net/qq_56694800/article/details/146309662  浏览:    关键词:在 Linux 上使用 Docker 部署 Spring Boot 项目

目录

      • 1. 准备工作
        • 1.1 Spring Boot 项目打包
        • 1.2 安装 Docker
      • 2. 编写 Dockerfile
      • 3. 构建 Docker 镜像
      • 4. 运行 Docker 容器
      • 5. 使用 Docker Compose(可选)
        • 5.1 安装 Docker Compose
        • 5.2 编写 `docker-compose.yml`
        • 5.3 启动 Docker Compose
      • 6. 常用管理命令
      • 7. 高级配置(可选)
        • 7.1 设置时区
        • 7.2 使用多阶段构建减少镜像体积
      • 8. 验证部署
      • 9. 常见问题及解决方案
        • 9.1 端口冲突
        • 9.2 JAR 文件路径错误
        • 9.3 数据库连接失败

1. 准备工作

1.1 Spring Boot 项目打包

在开始 Docker 部署之前,首先需要确保 Spring Boot 项目已经打包为可执行的 JAR 文件。

使用 Maven 进行构建:

mvn clean package -DskipTests

或者使用 Gradle 进行构建:

gradle build -x test

打包完成后,JAR 文件通常位于 target/ 目录下(Maven)或 build/libs/ 目录下(Gradle)。

1.2 安装 Docker

如果 Linux 服务器尚未安装 Docker,可以按照以下步骤进行安装:

# 更新软件源
sudo apt-get update# 安装 Docker
sudo apt-get install docker.io -y# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker# 验证 Docker 是否安装成功
docker --version

如果使用 CentOS,可以运行以下命令安装 Docker:

yum install -y docker
yum install -y containerd.io
docker version

2. 编写 Dockerfile

在 Spring Boot 项目根目录下创建 Dockerfile 文件,内容如下:

# 使用 OpenJDK 作为基础镜像
FROM openjdk:11-jre-slim# 设置工作目录
WORKDIR /app# 复制 JAR 文件到容器中
COPY target/YOUR_PROJECT_NAME.jar app.jar# 暴露 Spring Boot 端口
EXPOSE 8080# 设置 JVM 参数(可选)
ENV JAVA_OPTS="-Xmx512m -Xms256m"# 运行 Spring Boot 应用
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/app.jar"]

YOUR_PROJECT_NAME.jar 替换为实际的 JAR 文件名称。


3. 构建 Docker 镜像

进入项目根目录,执行以下命令构建镜像:

docker build -t springboot-app:1.0.0 .

构建完成后,可以使用以下命令查看生成的镜像:

docker images

4. 运行 Docker 容器

docker run -d \-p 8080:8080 \--name springboot-container \springboot-app:1.0.0

检查容器状态:

docker ps

查看容器日志:

docker logs -f springboot-container

5. 使用 Docker Compose(可选)

5.1 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
5.2 编写 docker-compose.yml

如果 Spring Boot 项目需要依赖 MySQL 数据库,可以使用 Docker Compose:

version: '3.8'services:springboot-app:image: springboot-app:1.0.0container_name: springboot-containerports:- "8080:8080"environment:- SPRING_PROFILES_ACTIVE=proddepends_on:- mysql-dbmysql-db:image: mysql:8.0container_name: mysql-containerenvironment:MYSQL_ROOT_PASSWORD: rootpassMYSQL_DATABASE: app_dbMYSQL_USER: app_userMYSQL_PASSWORD: userpassports:- "3306:3306"volumes:- mysql-data:/var/lib/mysqlvolumes:mysql-data:
5.3 启动 Docker Compose
docker-compose up -d

6. 常用管理命令

# 停止容器
docker stop springboot-container# 启动已停止的容器
docker start springboot-container# 删除容器
docker rm springboot-container# 删除镜像
docker rmi springboot-app:1.0.0# 进入容器 Shell
docker exec -it springboot-container /bin/bash

7. 高级配置(可选)

7.1 设置时区

Dockerfile 中增加:

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
7.2 使用多阶段构建减少镜像体积
# 第一阶段:使用 Maven 构建 JAR
FROM maven:3.8.6-openjdk-11 AS build
WORKDIR /app
COPY src ./src
COPY pom.xml .
RUN mvn clean package -DskipTests# 第二阶段:运行环境
FROM openjdk:11-jre-slim
COPY --from=build /app/target/YOUR_PROJECT_NAME.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

8. 验证部署

访问 http://服务器IP:8080 测试应用接口,或使用以下命令检查:

curl http://localhost:8080/health

9. 常见问题及解决方案

9.1 端口冲突

如果 8080 端口被占用,可以更换端口,例如 -p 9090:8080

9.2 JAR 文件路径错误

检查 DockerfileCOPY 命令的路径,确保 JAR 文件正确复制到容器。

9.3 数据库连接失败

application.properties 中,使用 jdbc:mysql://mysql-db:3306/app_db 作为数据库连接 URL,而不是 localhost


通过以上步骤,您可以在 Linux 服务器上顺利部署 Spring Boot 项目,结合 Docker 和 Docker Compose,实现高效的容器化管理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词