使用 Spring Boot 构建 Docker 镜像并进行多模式部署

简介: 使用 Spring Boot 构建 Docker 镜像并进行多模式部署

在使用 Spring Boot 构建 Docker 镜像并进行多模式部署(如开发、测试、生产环境)时,通常会涉及到不同的配置文件、环境变量设置以及 Dockerfile 的编写。下面我将详细解释如何实现这些功能。

 

### 1. 使用不同的配置文件

 

Spring Boot 允许通过配置文件来管理不同环境的配置,如 `application.properties`、`application.yml` 等。通常,我们会创建以下几种环境的配置文件:

 

- `application.properties`(或 `application.yml`):通用配置,适用于所有环境。

- `application-dev.properties`(或 `application-dev.yml`):开发环境配置。

- `application-test.properties`(或 `application-test.yml`):测试环境配置。

- `application-prod.properties`(或 `application-prod.yml`):生产环境配置。

 

这些配置文件可以根据需要配置不同的数据库连接、端口号、日志级别等信息。

 

### 2. 使用不同的配置文件激活环境

 

在 Spring Boot 中,可以通过 `spring.profiles.active` 属性来指定当前激活的配置文件。例如,可以通过命令行参数或环境变量来设置:

```bash
java -jar -Dspring.profiles.active=dev your-application.jar
```

### 3. 编写 Dockerfile

 

下面是一个基本的 Spring Boot 应用的 Dockerfile 示例:

```dockerfile

# 使用官方的 OpenJDK 11 作为基础镜像

FROM openjdk:11-jdk-slim

# 将本地的 JAR 文件添加到容器中

COPY target/your-application.jar your-application.jar

# 暴露容器端口

EXPOSE 8080

# 启动 Spring Boot 应用

ENTRYPOINT ["java", "-jar", "/your-application.jar"]
```

### 4. 多模式 Dockerfile 配置

 

为了支持多模式部署,可以使用 Docker 的多阶段构建(multi-stage build)来分别构建不同环境的镜像。例如,可以创建一个专门用于生产环境的 Dockerfile 和一个用于开发环境的 Dockerfile。

 

#### 生产环境 Dockerfile 示例

 

```dockerfile

# 阶段1:构建阶段

FROM maven:3.8.4-openjdk-11-slim AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
 
COPY src ./src
RUN mvn package -DskipTests

# 阶段2:运行阶段

FROM openjdk:11-jre-slim
COPY --from=build /app/target/your-application.jar your-application.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/your-application.jar"]
```

#### 开发环境 Dockerfile 示例

```dockerfile
FROM openjdk:11-jdk-slim
WORKDIR /app
COPY . .
RUN ./mvnw package -DskipTests
EXPOSE 8080
CMD ["java", "-jar", "target/your-application.jar"]
```

### 5. 使用 Docker 构建和运行镜像

 

在构建和运行 Docker 镜像时,需要根据需要选择合适的 Dockerfile,并传递适当的构建参数或环境变量来激活相应的 Spring Boot 配置文件。

 

#### 构建镜像示例

 

```bash

# 构建生产环境镜像

docker build -t your-application:prod -f Dockerfile.prod .

# 构建开发环境镜像

docker build -t your-application:dev -f Dockerfile.dev .
```

#### 运行镜像示例

```bash

# 运行生产环境镜像

docker run -d -p 8080:8080 --name your-app-prod your-application:prod

# 运行开发环境镜像

docker run -d -p 8080:8080 --name your-app-dev your-application:dev
```
青欢
+关注
目录
打赏
0
2
2
0
42
分享
相关文章
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
78 44
|
2月前
|
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
288 76
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
267 17
Spring Boot 两种部署到服务器的方式
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
205 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
50 10
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
87 9
|
2月前
|
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
81 6
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
49 6
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
83 5
|
2月前
|
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
62 5
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等