gpt4 book ai didi

node.js - 使用 docker-compose 时, Node 应用程序无法连接到 Redis

转载 作者:可可西里 更新时间:2023-11-01 11:15:15 27 4
gpt4 key购买 nike

我正在运行 Ubuntu 并尝试为 Node 应用设置开发环境,这是我的 docker-compose.yml:

version: "2"
services:
redis:
image: redis
ports:
- "6381:6379"
volumes:
- /var/lib/thinklog-queue:/data
activity-service:
build:
context: ./activity-service
command: yarn dev
ports:
- "3001:3001"
environment:
REDIS_QUEUE_URL: "redis://redis:6381"
depends_on:
- redis

Node 应用程序的 Dockerfile 如下所示:

FROM node:9
WORKDIR /app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install
COPY . .
EXPOSE 4000
CMD ["yarn", "start"]

我从 env 变量扩展 Redis 连接字符串。

当我在日志中运行 docker-compose build && docker-compose up 时,我从 Node 应用程序得到了这个输出:

activity-service_1 | Error: Redis connection to redis:6381 failed - connect ECONNREFUSED 172.20.0.2:6381

看起来设置是正确的,但是有一些东西阻止了与 Redis 的实习生连接。 (在这个 docker compose 网络中)

从外部连接到这个 Redis 实例,例如其他 shell session 工作正常:

kuno@dell:~/code/THINKLOG/activity-service$ redis-cli -p 6381
127.0.0.1:6381> ping
PONG

我还尝试像这样安装自定义配置(在 docker-compose.yml 中为 Redis 的卷数组添加了新项目):

  - ./redis.conf:/usr/local/etc/redis/redis.conf

已将绑定(bind)行注释掉并将其修改为这样(最后一个地址是 docker-compose 内部使用的地址):

bind 192.168.1.100 10.0.0.1 172.20.0.2

我是否还应该挂载自定义 Redis 配置并将 Redis 配置为允许在 docker 网络内进行连接?

最佳答案

在 url REDIS_QUEUE_URL: "redis://redis:6379" 中将端口更改为 6379 6381 是主机 IP 上的端口而不是 redis 容器端口。

关于node.js - 使用 docker-compose 时, Node 应用程序无法连接到 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50958399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com