【问题标题】:Externalize application configuration for Google Cloud Run为 Google Cloud Run 外部化应用程序配置
【发布时间】:2020-05-28 21:31:53
【问题描述】:

我希望在 Google Cloud Run 上为容器化应用程序外部化应用程序配置。我知道有可用于云运行应用程序的环境变量,我希望有一些东西作为 Cloud Run 的配置服务器。

GCP 是否提供开箱即用的支持?

【问题讨论】:

    标签: spring-boot google-cloud-platform google-cloud-run


    【解决方案1】:

    有两种解决方案:

    1. 如果你的 docker 文件是 "ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/****.jar"]" 那么在云运行的容器参数中使用“-Dspring.profiles.active=dev”。

    2. 如果你的 docker 文件有 "CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/***.jar"]" 你可以通过在云运行容器配置 上的“变量和机密”选项卡中将环境变量设置为 SPRING_PROFILES_ACTIVE 并将值设置为 dev 来实现

    【讨论】:

      【解决方案2】:

      在设置 Cloud Run 部署时,您可以简单地将环境变量注入您的服务:

      由于 Spring Boot 带有 application.properties 机制,您可以轻松地完全从环境变量中覆盖这些值。请记住,语法略有不同:

      application.properties

      • spring.profiles.active=dev

      环境变量

      • SPRING_PROFILES_ACTIVE=dev

      注入的环境变量将优先于在application.properties 文件中定义的变量。

      【讨论】:

      • 容器参数怎么样?你知道如何通过它们吗?
      • @Ady 从技术上讲应该是一回事。将其视为在命令行中设置环境变量。它可以供任何运行使用的东西使用。所以如果你的容器环境需要一些变量,你可以用同样的方式传递它。
      • @Michal,我们在 Cloud Run 中添加了 SPRING_PROFILES_ACTIVE=dev,并且在 application.properties 中添加了 spring.profiles.active=dev,但收到错误“Cloud Run 错误:容器无法启动。无法启动并监听 PORT 环境变量定义的端口。"。我们是否在 Dockerfile 中遗漏了某些内容,我们的 ENTRYPOINT 如下所示“ENTRYPOINT exec java -jar /app.jar”。谢谢
      猜你喜欢
      • 2020-05-29
      • 2021-12-16
      • 2019-10-27
      • 2019-06-24
      • 2022-08-14
      • 2022-11-26
      • 2020-08-19
      • 2019-06-02
      • 2021-10-21
      相关资源
      最近更新 更多