我在docker容器中使用kafka。 其中一个要求是kafka可供本机在主机上运行的生产者使用。 这就是我将KAFKA_ADVERTISED_HOST_NAME设置为主机IP的原因。
我的docker-compose.yml看起来像这样:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.1.10
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERES: PLAINTEXT://localhost:9092
volumes:
- /var/run/docker.sock:/var/run/docker.sock
它有效。
问题是,我希望能够在其他机器上使用这个docker-compose文件,我不知道他们的IP可能是什么。
尝试将ip更改为像'kafka'这样的名称导致它对主机不可用(尽管仍然可以从其他容器中获得)。
有没有办法在docker-compose文件中使用主机IP而不“硬编码”它(以便它在不同的机器上是不同的IP地址)?
还有另一种方法可以解决这个问题吗?
答案 0 :(得分:0)
您尝试使用该物业吗?无论出于何种原因,都不建议用于生产用途,但是它可能对您有用
host.docker.internal