为了账号安全,请及时绑定邮箱和手机立即绑定

通过docker连接golang和redis

通过docker连接golang和redis

Go
叮当猫咪 2021-11-22 18:21:47
我正在尝试使用 docker-compose 通过 Docker 连接 golang 和 reds,但我运气不佳。我已经在https://github.com/davidwilde/docker-compose-golang-redis/tree/stackoverflow_question 上发布了我的尝试,并在下面列出了日志。Redis 说它已准备好接受连接,但我使用gopkg.in/redis.v3 的golang 应用程序说不。 ~/workspace/composetest   master ●  docker-compose upStarting composetest_db_1...Starting composetest_web_1......ur kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.db_1  | 1:M 20 Nov 05:58:33.371 * DB loaded from disk: 0.000 secondsdb_1  | 1:M 20 Nov 05:58:33.371 * The server is now ready to accept connections on port 6379web_1 | panic: dial tcp [::1]:6379: getsockopt: connection refusedweb_1 |web_1 | goroutine 1 [running]:web_1 | main.main()web_1 |     /go/src/app/app.go:19 +0x131web_1 |web_1 | goroutine 17 [syscall, locked to thread]:web_1 | runtime.goexit()web_1 |     /usr/local/go/src/runtime/asm_amd64.s:1696 +0x1web_1 | panic: dial tcp [::1]:6379: getsockopt: connection refusedweb_1 |web_1 | goroutine 1 [running]:web_1 | main.main()web_1 |     /go/src/app/app.go:19 +0x131web_1 |web_1 | goroutine 17 [syscall, locked to thread]:web_1 | runtime.goexit()web_1 |     /usr/local/go/src/runtime/asm_amd64.s:1696 +0x1
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

所以我们有两个不同的容器,在这种情况下意味着两个不同的“本地主机”。


client := redis.NewClient(&redis.Options{

    Addr: "localhost:6379",

    Password: "",

    DB: 0,

})

因此,您的应用正在向自己的沙盒容器发出请求,而不是向包含 redis 的“其他”沙盒容器发出请求。


你有两个选择;


在您的撰写文件中提供一个映射,例如 redisdb:db,并传递该信息而不是 localhost。


或者,使用“--net=host”选项为您的容器提供公共网络,而无需更改您的代码。


编辑:错字


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信