我正在尝试使用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,“无法连接”,“ src / main / aerospike / as_cluster.c”,254,错误)
有人可以帮我解决问题吗?
答案 0 :(得分:1)
您可以尝试在docker-compose中创建overlay network并相应地调整aerospike.conf接口地址绑定。 Aerospike回购有一个使用docker swam的示例。
fun updateItems(itemList: List<ItemDto>) {
val readDate = DateUtils.getCurrentDateUTCtoString()
???SCOPE???.launch(Dispatchers.IO) {
for (item in itemList)
item.readDate = readDate
itemDao.updateItems(itemList)
}
}
答案 1 :(得分:1)
针对您的问题,这也应该可以解决您的问题:
@QuintenScheppermans不是默认的网桥,我对网络有点生疏。你能寄一些样品吗?
是的,容器会自动添加到默认网桥网络。但是,Docker不支持默认网桥网络上的自动服务发现。如果希望容器能够按容器名称解析IP地址,则应改用用户定义的网络。
这正是您在这里所做的:
config = {
'hosts':[('aerospike', 3000)],
'policies': {
'timeout': 1000 # milliseconds
}
}
因此,您确实需要配置用户定义的网络。 建议将桥接网络用于单个主机网络(例如您的情况) 建议将重叠网络用于多个主机网络。
您可以使用Ivolmar的答案并将其切换到网桥网络。 如果不需要,则不需要使用docker swarm。