将Spring Boot应用部署到Docker容器的步骤如下:

1. 准备Spring Boot应用

  • 确保应用已配置Maven/Gradle打包插件
  • 执行打包命令生成可执行JAR文件:
    mvn clean package  # Maven项目
    # 或
    gradle bootJar     # Gradle项目
    

  • target/目录获取生成的JAR文件,如myapp-0.0.1-SNAPSHOT.jar

2. 创建Dockerfile

在项目根目录创建Dockerfile文件:

# 使用官方OpenJDK基础镜像
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 复制JAR文件到容器
COPY target/myapp-0.0.1-SNAPSHOT.jar app.jar

# 暴露应用端口(与application.properties中一致)
EXPOSE 8080

# 启动应用
ENTRYPOINT ["java", "-jar", "app.jar"]

3. 构建Docker镜像

docker build -t my-spring-app:1.0 . 

  • -t指定镜像名称和标签
  • 末尾的.表示使用当前目录的Dockerfile

4. 运行Docker容器

docker run -d -p 8080:8080 --name spring-container my-spring-app:1.0

  • -d:后台运行
  • -p 主机端口:容器端口:端口映射
  • --name:指定容器名称

5. 验证部署

# 查看运行中的容器
docker ps

# 查看应用日志
docker logs spring-container

# 测试应用访问
curl http://localhost:8080/api/endpoint

可选优化

  1. 多阶段构建(减小镜像体积):

    FROM maven:3.8.4-openjdk-17 AS build
    COPY . .
    RUN mvn package
    
    FROM openjdk:17-jdk-slim
    COPY --from=build /target/*.jar app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]
    

  2. 环境变量配置

    ENV SPRING_PROFILES_ACTIVE=prod
    

  3. 健康检查

    HEALTHCHECK --interval=30s --timeout=3s \
      CMD curl -f http://localhost:8080/actuator/health || exit 1
    

部署流程示意图

graph LR
A[打包Spring Boot应用] --> B[编写Dockerfile]
B --> C[构建Docker镜像]
C --> D[运行Docker容器]
D --> E[验证服务状态]

注意:生产环境建议使用Docker Compose编排服务,并配置持久化存储和网络设置。

更多推荐