如何让 docker-compose 容器看到 Redis 主机?

我有这个简单的docker-compose.yml文件:


version: '3.8'

services:

  bot:

    build:

      dockerfile: Dockerfile

      context: .

    links:

      - redis

    depends_on:

      - redis

  redis:

    image: redis:7.0.0-alpine

    ports:

     - "6379:6379"

    environment:

     - REDIS_REPLICATION_MODE=master

    restart: always

    volumes: 

      - cache:/data

    command: redis-server

volumes:

  cache:

    driver: local

这就是bot(在 Go 中)连接到的方式redis:


import "github.com/go-redis/redis/v8"


func setRedisClient() {

  rdb = redis.NewClient(&redis.Options{

    Addr:     "redis:6379",

    Password: "",

    DB:       0,

  })

}

bot文件:


FROM golang:1.18.3-alpine3.16

WORKDIR /go/src/bot-go

COPY . .

RUN go build .

RUN ./bot-go

但是当我跑步时,docker-compose up --build我总是得到:


panic: dial tcp: lookup redis on 192.168.65.5:53: no such host

redis无论我对主机或docker-compose文件进行什么更改,都不会看到主机。


当我将客户端配置为本地时,该应用程序在没有 Docker 的情况下也能正常工作。


我到底做错了什么?


萧十郎
浏览 135回答 1
1回答

临摹微笑

问题是 bot-go 图像永远不会停止构建。在 Dockerfile 中更改RUN ./bot-go为,一切都会正常工作。CMD [ "./bot-go" ]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go