docker - 如何在包括 localhost 机器的 docker 容器之间进行通信
问题描述
我的问题 :
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
- 它也可以连接到我的本地主机机器
PS我尝试添加 network_mode: host
连接,但没有发现kafka和zookeeper
解决方案
localhost forconnect
是 docker 的专用网络,而不是你的计算机 localhost 显然是你的 postgres 所在的位置。
您需要使用network_mode: host
,但当然其他 2 个容器将无法在专用网络上访问。所以解决方案是要么network_mode: host
用于所有容器,要么将你的 postgres 带到与 docker 容器相同的 docker-compose 文件中,以便它也在专用网络上
推荐阅读
- python - 从 Plex 的“最近添加”部分中删除视频
- docker - 在 Docker 中将 Node-Red 连接到 Mariadb
- machine-learning - 如何使用 PyTorch 计算 Monte Carlo Dropout 神经网络的不确定性?
- django - 平分的 Git 提交
- python - 函数不计算首字母
- reactjs - 我尝试让 webpack 在我的 create-react-app 中工作,但我收到了这个巨大的错误
- apache-flink - Flink - 如何在状态中聚合
- django - 如何从一个页面获取输入并将它们发送到 django 中的另一个页面
- django - 如何将 CustomUser 模型保存到另一个模型数据
- php - Laravel 7 上 Mailtrap 的值 null 问题的偏移量