在Spring Boot 3中部署使用Gradle构建的应用到Docker的教程如下,并在Docker Compose部分增加MySQL服务: ### 1. 添加Docker支持 创建一个名为`Dockerfile`的文件在项目根目录下,内容为: ```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镜像: ```bash docker build -t my-spring-boot-app:3.0 . ``` ### 3. 运行Docker容器 构建完成后,启动容器: ```bash docker run -p 8080:8080 -t my-spring-boot-app:3.0 ``` ### 4. 使用Docker Compose 创建一个`docker-compose.yml`文件,配置应用服务和MySQL服务: ```yaml 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来启动整个服务栈: ```bash docker-compose up -d ``` 这将会创建并启动应用和数据库的容器,`-d`参数表示以后台方式运行服务。