使用 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
```
目录
相关文章
|
1月前
|
缓存 Shell 网络安全
将应用程序打包成Docker镜像时可能遇到哪些问题?
将应用程序打包成Docker镜像时可能遇到哪些问题?
199 77
|
1月前
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
84 16
|
1月前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
|
1月前
|
关系型数据库 MySQL Docker
|
3月前
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
110 0
|
3月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
112 0
|
3月前
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
56 0
|
3月前
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
216 0
|
16天前
|
Prometheus 监控 Cloud Native
Spring Boot 可视化监控
本文介绍了如何通过Spring Actuator、Micrometer、Prometheus和Grafana为Spring Boot应用程序添加监控功能。首先创建了一个Spring Boot应用,并配置了Spring Actuator以暴露健康状态和指标接口。接着,利用Micrometer收集应用性能数据,并通过Prometheus抓取这些数据进行存储。最后,使用Grafana将Prometheus中的数据可视化,展示在精美的仪表板上。整个过程简单易行,为Spring Boot应用提供了基本的监控能力,同时也为后续扩展更详细的监控指标奠定了基础。