SpringBoot+docker环境变量配置详解

 更新时间:2020年10月22日 11:23:27   作者:xiaoguangtouqiang  
这篇文章主要介绍了SpringBoot+docker环境变量配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

项目中遇到springBoot+docker需要配置不同环境变量的问题,做个简单的总结:

1.开发环境ide中启动项目

可以通过ide的环境变量参数配置,启动之后使用哪个配置,比如

这样就使用application-test.yml中的配置

2.通过gradle打包

可以通过-P参数来指定打包后的jar使用哪种环境来运行,比如

gradlew -Pprod bootWar

打包之后运行会使用prod中的配置;我的项目是jhipster生成出来的,现在需要添加test的环境配置,需求修改下项目的gradle文件,如下所示

添加一种属性配置,这里举例期间使用“aaatest”,这样打包测试环境的时候命令为:

gradlew -Paaatest bootWar

同时需要添加一个profile_test.gradle,可以拷贝一份prod的,然后修改下这个地方即可

def profiles = 'test'

具体的原理其实就是在打包的时候根据打包命令中的参数,判断当前是什么环境,如果是test环境,那么就替换掉application.yml中的#spring.profiles.active#参数为test,具体代码如下所示:

processResources {
  filesMatching('**/application.yml') {
    filter {
      it.replace('#project.version#', version)
    }
    filter {
      it.replace('#spring.profiles.active#', profiles)
    }
  }
}

在application.yml中可以看到这里是有个占位符的

3.docker打包

这里通过docker-compose来把应用打包成docker镜像的,这里可以通过指定环境变量参数

这个参数是会覆盖gradle中参数的,就是说即便你指定了gradlew bootWar -Pprod buildDocker,但是你docker-compose文件中的参数是active,那么docker启动的时候已然会使用test的环境配置;在这个地方也是卡了蛮久的;当然,docker还可以通过修改dockerFile的启动命令

java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=dev -jar rest-api.jar

或者通过docker run命令启动镜像的时候把参数加载进去

docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=dev" --name rest-api dockerImage:latest

到此这篇关于SpringBoot+docker环境变量配置详解的文章就介绍到这了,更多相关SpringBoot docker环境变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JDK的具体安装步骤(带图带解释巨详细)

    JDK的具体安装步骤(带图带解释巨详细)

    Java是一种广泛使用的编程语言,许多应用程序和系统都依赖于它,如果您想进行Java编程或运行Java应用程序,首先需要安装Java开发工具包(JDK),这篇文章主要给大家介绍了关于JDK具体安装步骤的相关资料,文中介绍的方法带图带解释巨详细,需要的朋友可以参考下
    2024-05-05
  • springmvc模式的上传和下载实现解析

    springmvc模式的上传和下载实现解析

    这篇文章主要介绍了springmvc模式下的上传和下载实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java接收前端请求体的多种方式总结

    Java接收前端请求体的多种方式总结

    这篇文章主要给大家介绍了关于Java接收前端请求体的多种方式,文中通过代码介绍的非常详细,对大家学习或者Java具有一定的参考学习价值,需要的朋友可以参考下
    2023-08-08
  • Spring boot基于JPA访问MySQL数据库的实现

    Spring boot基于JPA访问MySQL数据库的实现

    本文主要介绍了Spring boot基于JPA访问MySQL数据库的实现,Spring boot结合Jpa 能够简化创建 JPA 数据访问层和跨存储的持久层功能,用户的持久层Dao接口只需要继承定义好的接口,感兴趣的可以了解一下
    2021-06-06
  • Java HashMap源码深入分析讲解

    Java HashMap源码深入分析讲解

    在java开发中,HashMap是最常用、最常见的集合容器类之一,下面一起温故一下,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 使用@SpringBootTest注解进行单元测试

    使用@SpringBootTest注解进行单元测试

    这篇文章主要介绍了使用@SpringBootTest注解进行单元测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 在java中使用SPI创建可扩展的应用程序操作

    在java中使用SPI创建可扩展的应用程序操作

    这篇文章主要介绍了在java中使用SPI创建可扩展的应用程序操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • spring快速入门实例教程

    spring快速入门实例教程

    这篇文章主要介绍了spring快速入门实例,主要分析了spring的基本配置与控制反转,对于spring的学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • Spring Boot中使用Redis和Lua脚本实现延时队列的方案

    Spring Boot中使用Redis和Lua脚本实现延时队列的方案

    通过使用Redis和Lua脚本,可以在Spring Boot环境中实现一个高效且可靠的延时队列系统,这种方法利用了Redis的有序集合数据结构和Lua脚本的原子性操作来确保任务的正确性和一致性,这篇文章主要介绍了Spring Boot中使用Redis和Lua脚本实现延时队列,需要的朋友可以参考下
    2024-05-05
  • Java纯代码实现导出pdf合并单元格

    Java纯代码实现导出pdf合并单元格

    这篇文章主要为大家详细介绍了Java如何纯代码实现导出pdf与合并单元格功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12

最新评论