【问题标题】:Environment specific application.properties in springboot Applicationspring boot Application中的环境特定application.properties
【发布时间】:2016-08-08 15:01:55
【问题描述】:

我正在尝试使用 github 和 jenkins 作业来自动化部署代码的过程,以在 AWS 上部署我的 Springboot 应用程序。

我想知道我应该把 application.properties 文件放在哪里,以防我在 Tomcat 上部署一个 war 文件并且不希望这个文件被推送到 github,因为它可能包含一些数据库凭据,不会被暴露.

我应该将单独的 application-prod.properties 文件放在 Tomcat (AWS) 中,以便我的 war 文件独立于这些属性吗?

【问题讨论】:

    标签: amazon-web-services spring-boot


    【解决方案1】:

    查看我的回答here

    简而言之,您将属性外部化,然后传递一个或多个配置文件,这些配置文件将激活一个或多个 Spring 配置类。每个配置类将加载一个或多个属性文件。在你的情况下,如果你只有一个环境,你可以为一个配置文件创建一个配置文件。

    然后,在您的 AWS 实例上,您将单独部署配置文件。在运行时,您需要将活动配置文件传递给您的 Spring Boot 应用程序。您可以通过传递 VM 参数来做到这一点:-Dspring.profiles.active=[your-profile]

    我正在完成在线课程的最后一堂课,该课程展示了如何使用 Thymeleaf、Spring Security、Email 和 Data JPA 从头开始​​创建 Spring Boot 网站,如何使用 Stripe 处理信用卡支付以及如何部署到 AWS .您可以注册您的兴趣here

    【讨论】:

    • 链接已损坏,无法访问网站。
    • 抱歉,我现在修好了
    • 使用 jenkins 使用来自 github 的代码来构建战争,你不认为它需要 application.properties 文件出现在 github repo 上吗?如果没有,我应该将 prod 特定的 application.properties 放在 tomcat(在 aws 中)的什么位置,以便应用程序可以使用它?
    • 至少有几种方法可以做到这一点。您可以将它放在 S3 中,受保护,并让您部署应用程序的 EC2 实例从那里下载它并将其放置在外部位置。您可以加密凭证,将其存储在 github 中,并在 EC2 实例上保存一些东西来解密它。如果您选择 S3 选项,请确保将 S3 角色分配给 EC2 实例,并且您没有在该框中存储任何 AWS 私钥
    【解决方案2】:

    使用spring-cloud-starter-config 代替本地属性怎么样?

    如果使用spring-cloud-start-config,所有配置都应该从您的config-center 加载,而不是在本地读取它们。

    即使您有多个不同的环境,spring-cloud-starter-config 也可以使用不同的profiles 处理它。

    更重要的是,spring-cloud-starter-config 也可以使用本地 environment 变量。

    顺便说一句,如果您使用的是spring-cloud-starter-config,则唯一的本地资源可能是bootstrap.yml

    希望我能帮助你!

    【讨论】:

      猜你喜欢
      • 2018-12-05
      • 2015-11-18
      • 2016-06-08
      • 2021-08-23
      • 2016-11-15
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多