我正在使用base.env作为我的多个docker服务的env_file。在这个base.env中,我有一部分环境变量在整个文件中重复。例如,对于三个不同的环境变量,端口和IP相同。 我想在环境变量中指定这些变量,然后重复使用这些变量来填充其他环境变量。
这是base.env:
### Kafka
# kafka's port is 9092 by default in the docker-compose file
KAFKA_PORT_NUMBER=9092
KAFKA_TOPIC=some-topic
KAFKA_IP=kafka
KAFKA_CONN: //$KAFKA_IP:$KAFKA_PORT_NUMBER/$KAFKA_TOPIC
# kafka topic that is to be created. Note that ':1:3' should remain the same.
KAFKA_CREATE_TOPICS=$KAFKA_TOPIC:1:3
# the url for connecting to kafka
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://$KAFKA_IP:$KAFKA_PORT_NUMBER
我尝试写作
KAFKA_CONN: //$${KAFKA_IP}:$${KAFKA_PORT_NUMBER}/$${KAFKA_TOPIC}
在docker-compose.yml中相应服务的环境部分中,但这将被解释为容器中的文字字符串。
有没有一种方法可以执行我想要的base.env文件? 谢谢您的帮助!
答案 0 :(得分:2)
答案 1 :(得分:0)
由于env_file不能作为bash命令运行,因此无法执行此操作。这意味着不会创建该变量,然后将其串联到它出现的下一个变量中。这些值将像在env_file中一样被读入。
答案 2 :(得分:0)
我知道我参加聚会有点晚了,但是我有同样的问题,我找到了解决方法。有一个名为env-cmd的软件包,它允许您将.js文件用作.env文件。该文件仅需要导出一个对象,其键为环境变量名称,而值则为值。现在,您可以在导出环境变量之前运行javascript,从而使用环境变量设置其他变量。