我通过容器暴露了 redis:
service_redis 0.0.0.0:6379->6379/tcp
我什至可以通过 redis-cli
命令连接到它。但我实际上不能做的是通过 Go 代码连接到(它也存在于一个单独的容器中,顺便说一句)
这是我的客户的样子:
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
我该如何解决这个问题,我做错了什么?
最佳答案
你可以用这样的东西
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
标志
关于docker - 无法使用 Redis 连接到单独的 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56149231/