当前位置: 首页 > 知识库问答 >
问题:

Spring配置附加位置作为泊坞站撰写中的环境变量

公沈浪
2023-03-14

我试图告诉Spring从jar之外的文件中添加属性。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

我有 docker 撰写文件,在其中我为Spring启动应用程序定义环境变量

 sample-service:
    build:
      context: "./sample-service/app"
      dockerfile: Dockerfile
    container_name: sample-service
    restart: always

    mem_limit: 400000000
    env_file: .env
    environment:
      - "SPRING_PROFILE=dev"
      - "APPLICATION_NAME=sample-service"
      - "SPRING_CONFIG_ADDITIONAL-LOCATION=file:/app/sample-service-config.yml"
      - "JAVA_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5006"

    ports:
      - 5006:5006

当我在调试器中时,我执行自定义代码。

System.getenv("SPRING_PROFILE")

它返回开发。当我跑步时

System.getenv("APPLICATION_NAME")

它返回sample-service。当我运行时

System.getenv("SPRING_CONFIG_ADDITIONAL-LOCATION")

它返回null

更新

有人建议docker不支持连字符https://github.com/docker/compose/issues/2370

共有2个答案

仲孙铭
2023-03-14

这太疯狂了...

我更改了启动此Java应用程序的Dockerfile,因此现在可以将其他配置位置作为命令行参数传递。我还添加了bash脚本来启动我的Java应用程序。

Dockerfile文件

ENTRYPOINT ./startJavaApp.sh

启动JavaApp.sh

java -XX:+UseContainerSupport $JAVA_OPTIONS -jar ../sample-service.jar --spring.config.additional-location=file:/app/sample-service-config.yml

看起来将其作为命令行参数传递确实有效。

裴令秋
2023-03-14

您还可以使用以下格式:

env_file: .env
  environment:
    - SPRING_PROFILE=dev
    - APPLICATION_NAME=sample-service
    - SPRING_CONFIG_ADDITIONAL-LOCATION="file:/app/sample-service-config.yml"
    - JAVA_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5006"

REFERENCE-docker compose的环境变量

 类似资料:
  • 我想把9093暴露在码头集装箱外面。当我如下设置暴露于9093的kafka-0端口和KAFKA_ADVERTISED_LISTENERS时,我无法连接到localhost:9093,如以下docker-compose文件所示。 但是,当我换成 和 我可以连接到Kafka经纪人localhost:9092。 如何将外部端口更改为9093以使应用程序连接?我想设置多个经纪商。

  • 对于我的Spring Boot应用程序,我试图使用一个环境变量来保存中的列表(请参见下面的配置)。 我使用配置文件来填充properties bean(参见本spring文档),如下所示 通过使用环境变量,我可以在不更改的情况下更改列表的内容。然而,到目前为止,我所能找到的所有示例都只适用于环境变量只包含单个值,而不是我的示例中的值集合的情况。 编辑: 为了在@vancleff的评论之后澄清,我不

  • 我有一个Spring Boot应用程序,它与DB交互,使用spring data REST提供资源。我想从环境变量中获得配置。下面是我的属性文件。 我的环境变量在图像https://ibb.co/cyxsnc中 我甚至还尝试了下面的配置 注意:如果设置如下所示的值,配置工作正常 我错过了什么?

  • 如果不配置环境变量,每次登录 MySQL 服务器时就必须进入到 MySQL 的 bin 目录下,也就是输入“cd C:\Program Files\MySQL\MySQL Server 5.7\bin”命令后,才能使用 MySQL 等其它命令工具,这样比较麻烦。配置环境变量以后就可以在任意位置执行 MySQL 命令了,本节主要介绍怎样手动配置环境变量。 MySQL 如果不配置环境变量就只能在 my

  • 类型: Object Nuxt.js 让你可以配置在客户端和服务端共享的环境变量。 例如 (nuxt.config.js): module.exports = { env: { baseUrl: process.env.BASE_URL || 'http://localhost:3000' } } 以上配置我们创建了一个 baseUrl 环境变量,如果应用设定了 BASE_URL

  • 问题内容: 我正在通过Docker映像运行Jenkins。 我希望我的Jenkins安装程序提供一些预先配置的环境变量。 有什么方法可以复制一些环境变量,以便在启动詹金斯时,这些变量应该与这些预先配置的环境变量一起提供? TIA。 问题答案: 可用环境变量的列表位于此处:https : //hub.docker.com/_/jenkins/ 更新资料 如果要添加自己的环境变量,则需要构建自己的je