我正在运行Ubuntu,并尝试为节点应用设置开发环境,这是我的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
和节点应用程序的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
时,我从节点应用程序获得以下输出:
activity-service_1 |错误:Redis与Redis的连接:6381失败- 连接ECONNREFUSED 172.20.0.2:6381
似乎设置正确,但是有一些东西阻止了到Redis的内部连接。 (在该Docker组成网络内部)
从外部到此Redis实例的连接,例如其他shell会话工作正常:
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
已注释掉绑定行并对其进行修改(如下所示)(最后一个地址是docker-compose在内部使用的地址):
bind 192.168.1.100 10.0.0.1 172.20.0.2
我还应该安装自定义Redis配置并将Redis配置为允许docker网络内的连接吗?
答案 0 :(得分:1)
在url REDIS_QUEUE_URL: "redis://redis:6379"
中将端口更改为6379,6381是主机IP上的端口,而不是redis容器端口。