我正在尝试使用 aerospike docker 容器,python 应用程序也运行相同的 docker 网络。下面是 docker compose 文件。
aerospike:
image: aerospike/aerospike-server
volumes:
- "./aerospikeconfig:/opt/aerospike/etc"
environment:
config-file: /opt/aerospike/etc/aerospike.conf
rtbconsumer:
image: abhinav054/rtb_consumer:trending
depends_on:
- aerospike
- kafka
environment:
CONSUMER_ID: "rtb_aerospike_2"
HOST: "kafka:9092"
TOPIC: "rtb-logs"
AEROSPIKE_HOST: "aerospike:3000"
所以在我的脚本中,我使用下面给定的配置连接 aerospike
config = {
'hosts':[('aerospike', 3000)],
'policies': {
'timeout': 1000 # milliseconds
}
}
我得到的错误是exception.ConnectionError: (-10, 'Failed to connect', 'src/main/aerospike/as_cluster.c', 254, False)
谁能帮我解决这个问题。
请您参考如下方法:
针对您的问题,这也应该解决您的问题:
@QuintenScheppermans ain't the default network bridge, I am a bit rusty on the networking. Can you send some sample.
是的,容器会自动添加到默认的桥接网络中。但是,Docker 不支持默认桥接网络上的自动服务发现。如果您希望容器能够通过容器名称解析 IP 地址,您应该改用用户定义的网络。
这正是您在这里所做的:
config = {
'hosts':[('aerospike', 3000)],
'policies': {
'timeout': 1000 # milliseconds
}
}
所以你确实需要配置一个用户定义的网络。 桥接网络推荐用于单主机网络(就像你的情况一样) 建议将覆盖网络用于多个主机网络。
您可以使用 Ivolmar 的答案并将其切换到桥接网络。 如果您不想要,则不需要使用 docker swarm。
