我有一个带有golang gin服务器,postgresql和redis的docker化后端。一切都从这个 docker-compose.yaml 文件正确开始:version: '3.9'services: postgresql: image: 'postgres:13.1-alpine' volumes: - data:/var/lib/postgresql/data env_file: - ./env/postgre.env healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 ports: - '5432:5432' server: build: ./server ports: - '8000:8000' volumes: - ./server:/app depends_on: - postgresql redis: image: "redis" ports: - "6379:6379" volumes: - $PWD/redis-data:/var/lib/redisvolumes: data:比我在主函数中初始化 redis:func main() { util.InitializeRedis() (...)// InitializeRedis funcfunc newPool() *redis.Pool { return &redis.Pool{ MaxIdle:3, IdleTimeout:240 * time.Second, DialContext: func(context.Context) (redis.Conn, error) { return redis.Dial("tcp",":6379") }, }}var ( pool *redis.Pool)func InitializeRedis() { flag.Parse() pool = newPool()}它不会提示任何错误,但我无法与池建立连接。进入另一个函数:处理“/redis”进行测试router.GET("/redis", util.ServeHome)ServeHome funcfunc ServeHome(ctx *gin.上下文){conn := pool.Get()defer conn.Close()var p1 struct{ Title string `redis:"title" json:"title"` Author string `redis:"author" json:"author"` Body string `redis:"body" json:"body"`}p1.Title = "Example"p1.Author = "Gary"p1.Body = "Hello"if _, err := conn.Do("HMSET", redis.Args{}.Add("id1").AddFlat(&p1)...); err != nil { log.Fatalf("Error occured with redis HMSEET, %v", err) // Error in console is from here return}(...)当我尝试访问/redis with Insomnia时,它显示:错误:服务器没有返回任何内容(没有标头,没有数据),并且在控制台日志中:redis HMSEET发生错误,请拨tcp:6379:连接被拒绝我找不到任何为我解决这个问题的文章,所以我很感激任何帮助。
1 回答
BIG阳
TA贡献1859条经验 获得超6个赞
由于您使用的是 docker-compose Redis 在 上不可用,而是在 主机名 上可用。:6379redis
我认为您需要将代码更新为以下内容:
redis.Dial("tcp","redis:6379")- 1 回答
- 0 关注
- 265 浏览
添加回答
举报
0/150
提交
取消
