问题描述
我的问题:
version: '2'
services:
zookeeper:
container_name: zookeeper
image: debezium/zookeeper:${DEBEZIUM_VERSION}
ports:
- 2181:2181
- 2888:2888
- 3888:3888
kafka:
container_name: kafka
image: debezium/kafka:${DEBEZIUM_VERSION}
ports:
- 9092:9092
links:
- zookeeper
environment:
- ZOOKEEPER_CONNECT=zookeeper:2181
connect:
container_name: connect
image: debezium/connect:${DEBEZIUM_VERSION}
ports:
- 8083:8083
links:
- kafka
environment:
- BOOTSTRAP_SERVERS=kafka:9092
- GROUP_ID=1
- CONfig_STORAGE_TOPIC=my_connect_configs
- OFFSET_STORAGE_TOPIC=my_connect_offsets
- STATUS_STORAGE_TOPIC=my_connect_statuses
这里我想让 connect
容器调用我的本地主机 PostGres
但是它抛出了无法连接到 jdbs:postgresql//localhost:5432/test 错误
那么我该如何设置 connect
的网络以便
- 它可以发现
zookeeper
和kafka
- 它也可以连接到我的本地机器
附注
我尝试在连接中添加 network_mode: host
但它没有发现 kafka 和 zookeeper
解决方法
connect
的 localhost 是 docker 的专用网络,而不是您的计算机 localhost,您的 postgres 显然位于。
您需要使用 network_mode: host
,但当然其他 2 个容器将无法在专用网络上访问。因此,解决方案是对所有容器使用 network_mode: host
,或者将您的 postgres 带到与 docker 容器相同的 docker-compose 文件中,以便它也位于专用网络上