gpt4 book ai didi

docker - Docker撰写,内插分配的端口

转载 作者:行者123 更新时间:2023-12-02 18:56:00 25 4
gpt4 key购买 nike

给定以下docker-compose.yml。我想扩展服务kafka,但不分配任何特定端口。环境变量配置应能够通过docker-compose内插上下文分配的端口。那可能吗?

zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092" #I am not assigning a remote port here, leaving that to docker-compose
links:
- zookeeper:zk
environment:
KAFKA_PORT: 9092
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://localhost:9092, PLAINTEXT://localhost:${ASSIGNED_PORT}" # I would like ASSIGNED_PORT here to be the assigned port of docker-compose
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1"
volumes:
- /var/run/docker.sock:/var/run/docker.sock

最佳答案

如果环境变量在运行docker-compose up的上下文中,则配置选项可以包含环境变量。

Compose使用运行docker-compose的shell环境中的变量值。
例如,假设 shell 包含ASSIGNED_PORT=8000,并且您提供以下配置:

kafka:
image: wurstmeister/kafka
ports:
- "${ASSIGNED_PORT}:9092"

使用此配置运行docker-compose时,Compose在 shell 程序中查找 ASSIGNED_PORT环境变量并替换其值。在此示例中,Compose在创建 "8000:9092"容器之前将端口映射解析为 kafka

如果未设置环境变量,则Compose替换为空字符串。在上面的示例中,如果未设置 ASSIGNED_PORT,则端口映射的值为 :9092(这当然是无效的端口映射,并且在尝试创建容器时会导致错误)。
$VARIABLE${VARIABLE}语法均受支持。不支持扩展的 shell 样式功能,例如 ${VARIABLE-default}${VARIABLE/foo/bar}

Docker documentation page上检查

关于docker - Docker撰写,内插分配的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38609344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com