无法使用Redis连接到单独的Docker容器

时间:2019-05-15 12:19:49

标签: docker go redis

我通过容器暴露了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变量放入以下内容:

  1. 0.0.0.0:6379127.0.0.1:6379。响应例如:
<nil>
get REAL KEY: dial tcp 0.0.0.0:6379: connect: connection refused
  1. service_redis:6379,具有以下响应:

<nil>
get REAL KEY: dial tcp: lookup service_redis on 169.254.169.254:53: no such host

我该如何解决问题,我做错了什么?

2 个答案:

答案 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