如何让 docker-compose 容器看到 Redis 主机?
How to get docker-compose container to see Redis host?
我有这个简单的 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
Docker文件:
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 的情况下也能正常工作。
我到底做错了什么?
问题是 bot-go 图像从未停止构建。在 Dockerfile 中将 RUN ./bot-go
更改为 CMD [ "./bot-go" ]
,一切都会正常工作。
我有这个简单的 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
Docker文件:
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 的情况下也能正常工作。
我到底做错了什么?
问题是 bot-go 图像从未停止构建。在 Dockerfile 中将 RUN ./bot-go
更改为 CMD [ "./bot-go" ]
,一切都会正常工作。