作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在 Dev 和 QA 中使用 wurstmeister/Kafka 几个星期了,但在每种情况下我都需要硬编码 KAFKA_ADVERTISED_HOST_NAME
使用 docker-compose
到它所在的盒子的 IP .在测试过程中这不是问题,但现在我正试图将其扩展到生产,它变得有点令人沮丧。
我继续使用docker-compose
在某种程度上手动将 Kafka 和 Zookeper 的三个实例部署到三个单独的云主机上。我已经打开了适当的端口,并在我有限的 Docker 知识中尝试了所有方法来动态分配 KAFKA_ADVERTISED_HOST_NAME
.令我沮丧的是,它总是会产生某种错误。 docker hub 上的 README 提到通过 VIA 动态分配这个变量HOSTNAME_COMMAND, e.g. HOSTNAME_COMMAND: "route -n | awk '/UG[ \t]/{print $$2}'"
这会导致我的应用程序在尝试连接时获得连接被拒绝的响应。但是,手动将 IP 分配给三台主机可以正常工作。我在这里想念什么?!
最佳答案
撰写可以substitute variables into configuration options在运行时。
编写环境变量
设置KAFKA_ADVERTISED_HOST_NAME
容器环境变量到名为 DOCKER_HOST_IP
的局部变量.
whatever:
environment:
KAFKA_ADVERTISED_HOST_NAME: ${DOCKER_HOST_IP}
DOCKER_HOST_IP
每次运行时都需要设置
docker-compose
.您将收到来自
docker-compose
的警告未设置时。
ip route show
将列出默认接口(interface)。
ip address show
会给你IP地址。
default_interface=$(ip ro sh | awk '/^default/{ print $5; exit }')
export DOCKER_HOST_IP=$(ip ad sh $default_interface | awk '/inet /{print $2}' | cut -d/ -f1)
[ -z "$DOCKER_HOST_IP" ] && (echo "No docker host ip address">&2; exit 1 )
echo "$DOCKER_HOST_IP"
docker-machine
您可以通过
machine environment 获取 IP .
DOCKER_HOST_IP=$(docker-machine ip ${DOCKER_MACHINE_NAME})
关于docker - Kafka 与 Docker 动态adverted_host_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35418939/
我是一名优秀的程序员,十分优秀!