我目前正在尝试将码头组合引入到我的项目中。它包括一个使用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)
}为什么后端码头服务不能连接到redis?注意:当redis服务正在运行,并且我使用go run *.go手动启动后端时,没有错误,后端成功启动。
发布于 2021-06-12 18:38:17
当您在docker容器中运行Go应用程序时,本地主机IP 127.0.0.1指的是这个容器。您应该使用Redis容器的主机名从Go容器连接,因此连接字符串为:
redis://redis发布于 2021-09-02 12:16:12
我发现我也有同样的问题。只需将(在redis.NewClient(&redis.Options{.})Addr: "localhost:6379"中)更改为Addr: "redis:6379"即可。
发布于 2022-11-12 14:53:50
戈朗和瑞迪斯也面临着类似的问题。
version: '3.0'
services:
redisdb:
image: redis:6.0
restart: always
ports:
- "6379:6379"
container_name: redisdb-container
command: ["redis-server", "--bind", "redisdb", "--port", "6379"]
urlshortnerservice:
depends_on:
- redisdb
ports:
- "7777:7777"
restart: always
container_name: url-shortner-container
image: url-shortner-service在redis配置中使用
redisClient := redis.NewClient(&redis.Options{
Addr: "redisdb:6379",
Password: "",
DB: 0,
})https://stackoverflow.com/questions/67951731
复制相似问题