【问题标题】:Java System.getenv does not resolve environment variable defined in docker-composeJava System.getenv 不解析 docker-compose 中定义的环境变量
【发布时间】:2020-01-09 19:05:20
【问题描述】:

我有这个示例 docker-compose.yml:

version: "2"

networks:
  default:
    external:
      name: simple-monitor_zeebe_network

services:
  ods:
    container_name: auto-auction-service
    image: cargeeks/auto-auction-service:SNAPSHOT
    environment:
      - SERVICE_LOG_LEVEL=debug
      - client.broker.contactPoint=172.20.0.6:26500
    ports:
      - "9200:7100"
    networks:
      - default

在我的微服务中,我有这样的代码,它试图解析 client.broker.contactPoint 环境变量。

 String contactPoint = System.getenv("client.broker.contactPoint");
            if (StringUtils.isEmpty(contactPoint)) {
                _logger.info("Environment variable " + ENV_CONTACT_POINT + " is not defined.  Using default " + DEFAULT_CONTACT_POINT);
                contactPoint = DEFAULT_CONTACT_POINT;
            }

当我对上面定义的 docker-compose.yml 文件运行 docker-compose up 时,contactPoint 始终定义为 DEFAULT_CONTACT_POINT。

我在这里做错了什么?

【问题讨论】:

    标签: java docker-compose environment-variables


    【解决方案1】:

    尝试不使用点分隔的变量名。某些环境要么不允许这样做,要么尝试将它们解释为分层引用。在 Docker-compose 文件和代码中都使用下划线。

    【讨论】:

    • 是的,这就是问题所在。 CLIENT_BROKER_CONTACT_POINT 可以代替。
    猜你喜欢
    • 2019-12-18
    • 1970-01-01
    • 2015-06-17
    • 2015-11-08
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    相关资源
    最近更新 更多