Docker通过环境变量和Springboot的yml配置,实现不同环境的配置信息加载

我们在做代码开发的时候,通常会有开发、测试、生产等环境;不同的环境又会有数据库、redis等不同信息的配置。在Docker 部署Springboot项目时,可以通过如下配置达到我们想要的效果

创建application-feature.yml、application-release.yml、application-master.yml;在三个yml中分别配置不同环境的相关信息。在application.yml中配置spring.profiles.active
在这里插入图片描述
根据上图配置,容器创建的时候,只要环境变量配置spring_profile_active=“master” 则表示启用 application-master.yml的配置信息;具体命令如下
docker run -d -p 18080:8080 --name dockerdemo -e spring_profile_active=“master” dockerdemo

Docker的安装可以浏览 https://blog.csdn.net/weixin_45456679/article/details/120850613

### Spring Boot Docker 部署使用外部 YML 文件 当构建基于 Spring Boot 的应用程序时,有时需要将配置文件与镜像分离以便于管理维护。这可以通过挂载卷的方式实现,从而允许在不同环境中轻松切换配置。 对于 Maven 构建工具而言,POM 文件会继承 `spring-boot-starter-parent` 工程并声明一个或多个“Starters”依赖[^2]。然而,在涉及 Docker 容器化的过程中,则需考虑如何处理这些配置项而不硬编码入镜像内。 #### 创建 Dockerfile 支持外部配置 为了支持从主机加载外部 `.yml` 或者其他类型的属性文件到运行中的容器里,可以在编写 Dockerfile 时不指定任何特定的应用程序参数设置: ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom"] CMD ["-jar","/app.jar"] ``` 这里的关键在于定义了一个名为 `/config/application.yml` 的卷用于存储自定义配置文件,并且通过 `-Dspring.config.location` 参数告知 JVM 去哪里寻找额外的资源配置位置。 #### 修改启动命令以引用外部配置 接着修改 CMD 行来接受来自宿主机上的路径作为输入源之一: ```dockerfile CMD ["java", "-Dspring.profiles.active=prod", "-Dspring.config.location=/config/", "-jar", "/app.jar"] ``` 上述指令意味着如果存在位于 `/config/application-{profile}.yml` 中的内容将会被优先读取而不是默认打包进去的那个版本。 #### 运行带有外部配置的容器实例 最后一步是在实际部署阶段确保正确设置了环境变量以及指定了目标目录下的具体文件名。例如: ```bash docker run \ -v $(pwd)/external-config:/config \ my-springboot-app:latest ``` 此命令假设当前工作区有一个叫做 `external-config` 的子文件夹包含了所有必要的 YAML 设置文档。它会被映射至容器内部的 `/config` 路径之下供 Java 应用访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值