1. 准备工作
1.1 Spring Boot 项目打包
在开始 Docker 摆设之前,起首需要确保 Spring Boot 项目已经打包为可执行的 JAR 文件。
使用 Maven 进行构建:
- mvn clean package -DskipTests
复制代码 或者使用 Gradle 进行构建:
打包完成后,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 .
复制代码 构建完成后,可以使用以下命令查看天生的镜像:
4. 运行 Docker 容器
- docker run -d \
- -p 8080:8080 \
- --name springboot-container \
- springboot-app:1.0.0
复制代码 查抄容器状态:
查看容器日志:
- 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.0
- container_name: springboot-container
- ports:
- - "8080:8080"
- environment:
- - SPRING_PROFILES_ACTIVE=prod
- depends_on:
- - mysql-db
- mysql-db:
- image: mysql:8.0
- container_name: mysql-container
- environment:
- MYSQL_ROOT_PASSWORD: rootpass
- MYSQL_DATABASE: app_db
- MYSQL_USER: app_user
- MYSQL_PASSWORD: userpass
- ports:
- - "3306:3306"
- volumes:
- - mysql-data:/var/lib/mysql
- volumes:
- mysql-data:
复制代码 5.3 启动 Docker Compose
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 构建 JARFROM maven:3.8.6-openjdk-11 AS buildWORKDIR /appCOPY src ./srcCOPY pom.xml .RUN mvn clean package -DskipTests
- # 第二阶段:运行环境FROM openjdk:11-jre-slimCOPY --from=build /app/target/YOUR_PROJECT_NAME.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]
复制代码 8. 验证摆设
访问 http://服务器IP:8080 测试应用接口,或使用以下命令查抄:
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |