我有这个样本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。我在这里做错了什么?
最佳答案
尝试不使用点分隔的变量名。某些环境不允许这样做,或者尝试将其解释为层次结构引用。在Docker-compose文件和代码中都使用下划线。
关于java - Java System.getenv无法解析docker-compose中定义的环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59670572/