2015-05-22 3 views
3

У меня есть приложение для рельсов с mongodb, в среде разработки. Невозможно подключить mongodb с докером. Может подключаться к локальному mongodb с той же конфигурацией mongoid. Я попытался сменить хост как localhost на 0.0.0.0, но не работал. Что не хватает в настройках?docker-compose mongo rails connection failed

Мое сомнение в том, что монго в Докере не началось или не было привязано. Если я вношу изменения в конфигурацию mongoid для чтения:: ближайший, он говорит, что узлов не найдено.

сообщение об ошибке, Мопед :: Ошибки :: ConnectionFailure в индексе продукта #

Не удалось подключиться к основному узлу для набора реплик #]>

Dockerfile

#FROM ruby:2.2.1-slim 
FROM rails:4.2.1 
MAINTAINER Sandesh Soni, <[email protected]> 
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev 
RUN mkdir /gmv 
WORKDIR /gmv 
# Add db directory to /db 
ADD Gemfile /gmv/Gemfile 
RUN bundle install 
ADD ./database /data/db 
ADD . /gmv 

Докер -compose.yml

web: 
    build: . 
    command: bundle exec rails s -p 3000 -b '0.0.0.0' 
    volumes: 
    - .:/gmv 
    ports: 
    - "3000:3000" 
    links: 
    - db 
db: 
    image: mongo 
    command: "--smallfiles --bind_ip 0.0.0.0 --port 27027 -v" 
    volumes: 
    - data/mongodb:/data/db 
    ports: 
    - "27017:27017" 
+0

Где вы пытаетесь подключиться к экземпляру MongoDB? Если вы хотите подключиться к нему в своем браузере, вам нужно указать URL-адрес хоста Docker ('boot2docker ip'), указав ему правильный порт (' 27027' в вашем случае). Если вы хотите связать его с контейнером 'web', вы можете использовать имя' db' hostname (оно автоматически добавляется Docker в '/ etc/hosts /') или env vars, созданное Docker Compose (что-то похожее на 'YOURAPP_DB_1_PORT_27027_TCP_ADDR' (см. здесь https://docs.docker.com/compose/env/). – linkyndy

+1

Я использую Linux-машину, а не Mac. Я попытался использовать MYAPP_DB_1_PORT_27027_TCP_ADDR, я получаю ошибку Не удалось подключиться к основному узлу для набора реплик # <Мопед :: Кластер: 70197059955820 @seeds = [<Мопед :: Node resolved_address = "127.0.53.53:27017">]> Я использую локальную разработку, поэтому 0.0.0.3000 - это url; разрешенный адрес 127.0.53.53 означает сбой ip. –

ответ

0

На вашей главной машине выполните docker run yourapp env, затем на выходе найдите IP-адрес, относящийся к вашей базе данных. Этот IP-адрес & порт, который необходимо использовать для подключения к базе данных, работающей в контейнере.

Похожий вопрос спросил here

 Смежные вопросы

  • Нет связанных вопросов^_^