java - Spring 配置附加位置作为 docker-compose 中的环境变量

标签 java spring-boot docker-compose

我试图告诉 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 compose 文件,我在其中为 Spring Boot 应用程序定义环境变量。

 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")

它返回dev。当我运行时

System.getenv("APPLICATION_NAME")

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

System.getenv("SPRING_CONFIG_ADDITIONAL-LOCATION")

它返回null

<小时/>

更新

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

最佳答案

您还可以使用以下格式:

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"

引用 -Environment variable for docker compose

关于java - Spring 配置附加位置作为 docker-compose 中的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955586/

相关文章:

java - 我的应用程序正在模拟器上运行并完全正常工作,但在物理设备上崩溃

java - java中的系统输入无法正常工作

python - django.db.utils.OperationalError : (2005, "Unknown MySQL server host ' db'(-2)")

docker - APPDATA 在默认的 docker-compose.override 文件中在哪里初始化

java - if 语句的低效使用 - Android

java - Java的Swing框架是如何制作窗口/框架的?

java - Spring 添加 Cookie

java - 在响应 Java Spring 的正文中发送 JWT token

java - 如何通过spring.factories将SpringBootApp迁移到库?

python - 在 Django 项目中哪里安全地存储 Google_Application_Credentials?