首页 > 解决方案 > Nodejs应用程序未在docker-compose中连接Redis

问题描述

我有一个Nodejs连接到Redis实例的应用程序。我正在使用docker-compose设置,并运行docker-compose up. 这是我的docker-compose.yml文件:

# Specify docker-compose version.
version: '3'

# Define the services/containers to be run.
services:

  express:
    build: .
    container_name: node-app
    ports:
      - '8000:8000'
    depends_on:
      - redis-cache

  redis-cache:
    image: redis
    ports:
      - 6379:6379

我的Dockerfile

FROM node:12-alpine

WORKDIR /app

COPY . .

RUN npm ci

EXPOSE 8000

CMD [ “npm”, “start” ] // Also tried CMD [ “node”, “index.js” ]

我收到以下错误:

redis-cache_1  | 1:M 19 Jan 2021 04:23:49.411 * Ready to accept connections
node-app | sh: “start”: unknown operand
node-app exited with code 2

所以,我进入容器并手动运行npm start. Nodejs 启动成功,但连接 Redis 时出现以下错误:

Error: Redis connection to redis-cache:6379 failed - getaddrinfo ENOTFOUND redis-cache
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26) {
  errno: 'ENOTFOUND',
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'redis-cache'
}

也尝试过node index.js,但仍然出现同样的错误。这就是我Redis在我的应用程序中连接到我的实例的方式Nodejs

const client = redis.createClient({host: 'redis-cache', port: 6379});

我已经在StackOverflow以及其他各种网站上尝试了各种答案,但没有一个适合我。请帮忙 !

标签: node.jsdockerredisdocker-compose

解决方案


推荐阅读