From 13545978636cfe93efa60c4d28855feecc5b32d6 Mon Sep 17 00:00:00 2001 From: many2many <6168830@qq.com> Date: Tue, 4 Jun 2024 05:55:58 +0800 Subject: [PATCH] add doc --- docs/guides/spring-boot-docker.md | 91 +++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 docs/guides/spring-boot-docker.md diff --git a/docs/guides/spring-boot-docker.md b/docs/guides/spring-boot-docker.md new file mode 100644 index 0000000..5e76179 --- /dev/null +++ b/docs/guides/spring-boot-docker.md @@ -0,0 +1,91 @@ +在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 gradle gradle +COPY build.gradle . +COPY settings.gradle . + +COPY src src +# 构建应用 +RUN gradle 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 + +volumes: + dbdata: +``` + +这个`docker-compose.yml`文件定义了一个MySQL服务(`db`)和你的Spring Boot应用服务(`app`),并且应用服务依赖于数据库服务。记得根据你的需求调整数据库的环境变量。 + +现在,你可以使用Docker Compose来启动整个服务栈: + +```bash +docker-compose up -d +``` + +这将会创建并启动应用和数据库的容器,`-d`参数表示以后台方式运行服务。 \ No newline at end of file