Docker, NodeJs, Redis - Redis работает, но выбрасывает ошибки - PullRequest
0 голосов
/ 11 февраля 2020

Я запускаю Docker со следующим docker -компонентным файлом:

version: "2"
services:
  redis:
    image: "redis"
    command: ["redis-server", "--appendonly", "yes"]
    hostname: redis
  vapp:
    build: .
    command: npm run nodemon-test
    container_name: vapp
    volumes:
    - .:/home/tringuyen/app
    - /home/tringuyen/app/node_modules
    - /abi:/abi
    ports:
    - "3000:3000"
    links:
    - redis:redis
    depends_on:
    - redis

Все работает нормально, я могу убедиться, что Redis работает, хост Redis в NodeJs также обновлено до redis. Однако эта ошибка продолжает выплевываться, кто-нибудь знает, в чем причина и как ее исправить? Спасибо.

vapp         | Uncaught Exception:  { Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
vapp         |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
vapp         |   errno: 'ECONNREFUSED',
vapp         |   code: 'ECONNREFUSED',
vapp         |   syscall: 'connect',
vapp         |   address: '127.0.0.1',
vapp         |   port: 6379 }

1 Ответ

2 голосов
/ 11 февраля 2020

Вам необходимо заменить localhost на redis в вашем приложении nodejs, чтобы ссылаться на сервер базы данных.

Также вам не нужен раздел "ссылка" в вашем docker - compose.yml. (Скоро будет объявлено устаревшим)

Если вы говорите, что уже сделали это, тогда ваш контейнер все еще использует старое изображение. Поэтому попробуйте очистить свою среду, удалив любой контейнер и тома, и убедитесь, что образ перестраивается (docker-compose up --build).

Когда приложение запускается, откройте оболочку в этом контейнере и убедитесь, что файл, в котором вы определяете базу данных имя действительно обновлено.

...