我通过容器暴露了redis:
service_redis 0.0.0.0:6379->6379/tcp
我什至可以通过redis-cli
命令连接到它。但是我实际上不能做的是通过Go代码(也存在于单独的容器btw中)进行连接
这是我的客户的样子:
opts := &redis.Options{
Addr: addr,
Password: pass,
DB: db,
}
cli := redis.NewClient(opts)
fmt.Println(master.Ping().Err())
fmt.Println(slave.Get("REAL_KEY").String())
我尝试将addr
变量放入以下内容:
0.0.0.0:6379
和127.0.0.1:6379
。响应例如:<nil>
get REAL KEY: dial tcp 0.0.0.0:6379: connect: connection refused
service_redis:6379
,具有以下响应:
<nil>
get REAL KEY: dial tcp: lookup service_redis on 169.254.169.254:53: no such host
我该如何解决问题,我做错了什么?
答案 0 :(得分:0)
您可以使用类似的东西
docker-compose.yaml
web:
build: .
working_dir: /go/src
ports:
- "5000:5000"
volumes:
- .:/go/src
links:
- db
db:
image: redis
ports:
- "6379:6379"
它在您的容器之间创建链接,以便它们可以相互通信。
如果您不想使用docker-compose.yaml
,则可以在构建图片时使用--link
标志
答案 1 :(得分:-1)
Kubernetes使发现变得简单。我已经编写了一个redis复制,并通过去redis的读写操作对k8s配置进行了故障转移。 check https://github.com/kubesure/premium