paopao/docs/guides/spring-boot-docker.md
2024-06-04 09:00:34 +08:00

2.1 KiB
Raw Permalink Blame History

在Spring Boot 3中部署使用Gradle构建的应用到Docker的教程如下并在Docker Compose部分增加MySQL服务

1. 添加Docker支持

创建一个名为Dockerfile的文件在项目根目录下,内容为:

# 使用官方的Java运行时作为父镜像
FROM gradle:8.0.0-jdk17 AS build
WORKDIR /app

# 将Gradle的配置文件复制到镜像中
COPY gradlew .
COPY build.gradle .
COPY settings.gradle .

COPY src src
# 构建应用
RUN /app/gradlew bootJar

# 使用官方的Java运行时作为最终的运行环境
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY --from=build /app/build/libs/*.jar app.jar

# 设置应用运行的端口
EXPOSE 8080

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

注意:请确保ENTRYPOINT中的app.jar与实际构建出的jar文件名匹配通常使用bootJar任务生成的jar会带有版本信息。

2. 构建Docker镜像

在包含Dockerfile的项目根目录下执行以下命令构建Docker镜像

docker build -t my-spring-boot-app:3.0 .

3. 运行Docker容器

构建完成后,启动容器:

docker run -p 8080:8080 -t my-spring-boot-app:3.0

4. 使用Docker Compose

创建一个docker-compose.yml文件配置应用服务和MySQL服务

version: '3.8'

services:
  db:
    image: mysql:8.0.30
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    volumes:
      - dbdata:/var/lib/mysql

  app:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      - SPRING_PROFILES_ACTIVE=prod
volumes:
  dbdata:

这个docker-compose.yml文件定义了一个MySQL服务db和你的Spring Boot应用服务app),并且应用服务依赖于数据库服务。记得根据你的需求调整数据库的环境变量。

现在你可以使用Docker Compose来启动整个服务栈

docker-compose up -d

这将会创建并启动应用和数据库的容器,-d参数表示以后台方式运行服务。