2016-03-01 3 views
1

Я пишу небольшое приложение на основе микросервисов, и в нем у меня есть экземпляр redis, который может использовать какой-либо рубиновый код/​​контейнеры для использования через Resque. В настоящее время в моем Docker композе я связывая таким образом:Правильный способ связывания redis с контейнерами-док-станциями синатра

redis: 
    image: redis:latest 
    ports: 
    - '6379:6379' 
ruby_worker: 
    image: my_user/my_image:latest 
    links: 
    - redis:db 

Это прекрасно работает (я только назвать его: дб сейчас причиной того, что это пример, который я нашел при поиске ссылок).
В моем рубинового коде, я должен настроить мой Resque Redis сервер, как:

Resque.redis = ENV['DB_PORT_6379_TCP_ADDR'] + ':6379' 

Но это просто не кажется правильным. Это зависит от этого точного имени redis, и если мне пришлось развернуть другой экземпляр redis (например, как я это делал во время игры с облаком докеров сегодня), он не находит сервер redis. Всего у меня есть 3 контейнера (до сих пор), подключающихся к этому redis для resque. Маленький синатральный фронт и 2 работника. Я не очень люблю рельсов и никогда не использовал resque до 3 дней назад. Так жаль, если я пропустил некоторые из основ.

Есть ли лучший способ подключиться к моему экземпляру redis в моем ruby-коде? Есть ли способ передать имя redis в моей докере? Сейчас мой спасательный-веб-контейнер сконфигурирован, как показано ниже, и это, кажется, работает нормально:

resque: 
    image: ennexa/resque-web 
    links: 
    - redis:redisserver 
    ports: 
    - "5678:5678" 
    command: "-r redis://redisserver:6379" 

ответ

0

Не использовать эти переменные окружения ссылок, они являются устаревшим, и они не существуют в определенном пользователе сети больше.

Хорошим способом для этого было бы сначала по умолчанию присвоить имя hostname redis. Вы всегда можете использовать любой сервис, чтобы иметь такое имя, поэтому вам почти не нужно менять его по умолчанию. Например:

links: 
    - someservice:redis 

Чтобы изменить настройки по умолчанию, вы можете создать несколько приложений конкретный ENV вар как REDIS_HOSTNAME и установите его из раздела среды (но опять же, это почти никогда не требуется):

environment: 
    REDIS_HOSTNAME=foo 
Смежные вопросы