Ioredis с контейнером redis Laradock Время ожидания подключения

У меня есть приложение, построенное на Laravel. Я использую Laradock и пытаюсь использовать контейнер Redis, но у меня проблема с подключением.

С командой:

docker inspect laradock_redis_1

Я вижу это: "IPAddress": "172.22.0.2",

В моем интерфейсе я пытаюсь подключиться к Redis с помощью ioredis:

import Redis from 'ioredis';
const redis = new Redis({
                 port: 6379,
                 host: 172.22.0.2,
                 password: "password"
               });
redis.on('pmessage', function(subscribed, channel, message) {
...
})

Но я не могу подключиться, потому что я получаю эту ошибку:

[ioredis] Необработанное событие ошибки: Ошибка: подключение ETIMEDOUT

Я также пытаюсь изменить ip и порт, например:

port: 6379,
host: 127.0.0.1,

Или изменить порт на docker-compose на 1111, но это пока не работает. Что я делаю не так?


person LorenzoBerti    schedule 28.01.2019    source источник
comment
Спереди вы имеете в виду интерфейс JS (доступный пользователю)? или сервер nodejs? Если сервер nodejs, попробуйте удалить пароль.   -  person Froxz    schedule 28.01.2019
comment
интерфейс, доступный пользователю.   -  person LorenzoBerti    schedule 28.01.2019
comment
Я попытался удалить пароль, но у меня была та же ошибка   -  person LorenzoBerti    schedule 28.01.2019
comment
@Lorezo Lorezo, вам не следует подключаться к Redis из Frondend JS, это нужно делать на стороне сервера nodejs.   -  person Froxz    schedule 29.01.2019


Ответы (1)


Вместо использования IP-адреса контейнера вы можете использовать name of the container или, если вы используете docker-compose.yml, вы можете использовать name of the service вместо IP-адреса. Итак, что-то в этом роде будет работать:

const redis = new Redis({
                 port: 6379,
                 host: laradock_redis_1
               });
person Nikola Gavric    schedule 28.01.2019
comment
спасибо за ответ, но он возвращает ошибку. [ioredis] Необработанное событие ошибки: Ошибка: getaddrinfo ENOTFOUND, а затем [ioredis] Необработанное событие ошибки: Ошибка: подключение ETIMEDOUT - person LorenzoBerti; 28.01.2019