【问题标题】:Go backend to redis connection refused after docker compose updocker compose up 后,去后端到 redis 连接被拒绝
【发布时间】:2021-08-29 06:23:56
【问题描述】:

我目前正在尝试将 docker compose 引入我的项目。它包括一个使用 redis 内存数据库的 golang 后端。

version: "3.9"
services:
  frontend:
    ...
  backend:
    build:
      context: ./backend
    ports:
      - "8080:8080"
    environment:
      - NODE_ENV=production
    env_file:
      - ./backend/.env
  redis:
    image: "redis"
    ports:
      - "6379:6379"
FROM golang:1.16-alpine
RUN mkdir -p /usr/src/app
ENV PORT 8080
WORKDIR /usr/src/app
COPY go.mod /usr/src/app
COPY . /usr/src/app
RUN go build -o main .
EXPOSE 8080
CMD [ "./main" ]

构建运行成功,但是启动服务后,go后端立即退出并抛出以下错误:

尝试 ping redis 时出错:拨打 tcp 127.0.0.1:6379:连接:连接被拒绝

此处捕获错误:

_, err = client.Ping(ctx).Result()
if err != nil {
    log.Fatalf("Error trying to ping redis: %v", err)
}

后端docker服务怎么连接不上redis?重要提示:当redis服务运行时,我使用go run *.go手动启动后端,没有错误,后端启动成功。

【问题讨论】:

    标签: docker go redis


    【解决方案1】:

    当您在 docker 容器中运行 Go 应用程序时,localhost IP 127.0.0.1 指的是该容器。您应该使用 Redis 容器的主机名从 Go 容器连接,因此您的连接字符串将是:

    redis://redis
    

    【讨论】:

      【解决方案2】:

      我发现我遇到了同样的问题。简单地改变(在 redis.NewClient(&redis.Options{...}) Addr: "localhost:6379"to Addr: "redis:6379" 工作。

      【讨论】:

        猜你喜欢
        • 2020-09-08
        • 2023-01-04
        • 2019-01-02
        • 1970-01-01
        • 2017-07-10
        • 2016-02-14
        • 1970-01-01
        • 2017-05-09
        • 2021-10-12
        相关资源
        最近更新 更多