我在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地址)?
还有另一种解决这个问题的方法吗?
你尝试过使用这个房产吗?它不建议用于任何原因的生产用途,但它可能适合您
host.docker.internal