在 Linux 上使用 Docker 摆设 Spring Boot 项目

打印 上一主题 下一主题

主题 969|帖子 969|积分 2917

1. 准备工作

1.1 Spring Boot 项目打包

在开始 Docker 摆设之前,起首需要确保 Spring Boot 项目已经打包为可执行的 JAR 文件。
使用 Maven 进行构建:
  1. mvn clean package -DskipTests
复制代码
或者使用 Gradle 进行构建:
  1. gradle build -x test
复制代码
打包完成后,JAR 文件通常位于 target/ 目录下(Maven)或 build/libs/ 目录下(Gradle)。
1.2 安装 Docker

如果 Linux 服务器尚未安装 Docker,可以按照以下步骤进行安装:
  1. # 更新软件源
  2. sudo apt-get update
  3. # 安装 Docker
  4. sudo apt-get install docker.io -y
  5. # 启动并设置开机自启
  6. sudo systemctl start docker
  7. sudo systemctl enable docker
  8. # 验证 Docker 是否安装成功
  9. docker --version
复制代码
如果使用 CentOS,可以运行以下命令安装 Docker:
  1. yum install -y docker
  2. yum install -y containerd.io
  3. docker version
复制代码

2. 编写 Dockerfile

在 Spring Boot 项目根目录下创建 Dockerfile 文件,内容如下:
  1. # 使用 OpenJDK 作为基础镜像
  2. FROM openjdk:11-jre-slim
  3. # 设置工作目录
  4. WORKDIR /app
  5. # 复制 JAR 文件到容器中
  6. COPY target/YOUR_PROJECT_NAME.jar app.jar
  7. # 暴露 Spring Boot 端口
  8. EXPOSE 8080
  9. # 设置 JVM 参数(可选)
  10. ENV JAVA_OPTS="-Xmx512m -Xms256m"
  11. # 运行 Spring Boot 应用
  12. ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/app.jar"]
复制代码
将 YOUR_PROJECT_NAME.jar 更换为实际的 JAR 文件名称。

3. 构建 Docker 镜像

进入项目根目录,执行以下命令构建镜像:
  1. docker build -t springboot-app:1.0.0 .
复制代码
构建完成后,可以使用以下命令查看天生的镜像:
  1. docker images
复制代码

4. 运行 Docker 容器

  1. docker run -d \
  2.   -p 8080:8080 \
  3.   --name springboot-container \
  4.   springboot-app:1.0.0
复制代码
查抄容器状态:
  1. docker ps
复制代码
查看容器日志:
  1. docker logs -f springboot-container
复制代码

5. 使用 Docker Compose(可选)

5.1 安装 Docker Compose

  1. sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose
  3. docker-compose --version
复制代码
5.2 编写 docker-compose.yml

如果 Spring Boot 项目需要依靠 MySQL 数据库,可以使用 Docker Compose:
  1. version: '3.8'
  2. services:
  3.   springboot-app:
  4.     image: springboot-app:1.0.0
  5.     container_name: springboot-container
  6.     ports:
  7.       - "8080:8080"
  8.     environment:
  9.       - SPRING_PROFILES_ACTIVE=prod
  10.     depends_on:
  11.       - mysql-db
  12.   mysql-db:
  13.     image: mysql:8.0
  14.     container_name: mysql-container
  15.     environment:
  16.       MYSQL_ROOT_PASSWORD: rootpass
  17.       MYSQL_DATABASE: app_db
  18.       MYSQL_USER: app_user
  19.       MYSQL_PASSWORD: userpass
  20.     ports:
  21.       - "3306:3306"
  22.     volumes:
  23.       - mysql-data:/var/lib/mysql
  24. volumes:
  25.   mysql-data:
复制代码
5.3 启动 Docker Compose

  1. docker-compose up -d
复制代码

6. 常用管理命令

  1. # 停止容器
  2. docker stop springboot-container
  3. # 启动已停止的容器
  4. docker start springboot-container
  5. # 删除容器
  6. docker rm springboot-container
  7. # 删除镜像
  8. docker rmi springboot-app:1.0.0
  9. # 进入容器 Shell
  10. docker exec -it springboot-container /bin/bash
复制代码

7. 高级配置(可选)

7.1 设置时区

在 Dockerfile 中增加:
  1. ENV TZ=Asia/Shanghai
  2. RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
复制代码
7.2 使用多阶段构建减少镜像体积

  1. # 第一阶段:使用 Maven 构建 JARFROM maven:3.8.6-openjdk-11 AS buildWORKDIR /appCOPY src ./srcCOPY pom.xml .RUN mvn clean package -DskipTests
  2. # 第二阶段:运行环境FROM openjdk:11-jre-slimCOPY --from=build /app/target/YOUR_PROJECT_NAME.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]
复制代码

8. 验证摆设

访问 http://服务器IP:8080 测试应用接口,或使用以下命令查抄:
  1. curl http://localhost:8080/health
复制代码

9. 常见问题及办理方案

9.1 端口辩论

如果 8080 端口被占用,可以更换端口,比方 -p 9090:8080。
9.2 JAR 文件路径错误

查抄 Dockerfile 中 COPY 命令的路径,确保 JAR 文件正确复制到容器。
9.3 数据库连接失败

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

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表