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

标签 docker go redis

我通过容器暴露了 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 变量中:

  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

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

最佳答案

你可以用这样的东西

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/

相关文章:

python - 无法在Ubuntu Server上构建Dockerfile

docker - Kubernetes 构成

Go迁移不会创建外键

json:不支持的类型:func()

tcp - 从服务器读取行时 Redis 错误

Docker 构建退出,退出代码为 : 1

docker - SSH进入Docker Machine实例

mongodb - 使用 MongoDB 和 Golang 通过聚合和查找查找重复项

Spring Session with Redis - server.session.timeout 无效

nosql - Redis 中的命名空间?