2017-01-24 2 views
0

У меня есть контейнер докеров, в котором есть Rails и mongoDB. Я установил конфигурацию mongo для использования сокета unix для соединения, потому что в контейнере работает единственный ресурс, который действительно должен подключиться к нему (приложение rails).
Всякий раз, когда я пытаюсь подключиться к mongo оболочки я получаю эту ошибку:Подключиться к разъему mongoDB в Docker

[main] Error: network error while attempting to run command 'isMaster' on host '127.0.0.1:27017'

Я моя конфигурация MongoDB настроить так:

#mongod.conf - 3.4 
    storage: 
     dbPath: "/var/lib/mongodb" 
     directoryPerDB: true 
     journal: 
      enabled: true 
    systemLog: 
     destination: file 
     path: "/var/log/mongodb/mongodb.log" 
     logAppend: true 
     timeStampFormat: iso8601-utc 
    processManagement: 
     fork: true 
    net: 
     bindIp: 127.0.0.1 
     port: 27017 
     wireObjectCheck: false 
     unixDomainSocket: 
      enabled: true 
    net: 
     ssl: 
     mode: requireSSL 
     PEMKeyFile: /etc/ssl/certs/db/mongodb.pem 


    security: 
     authorization: enabled 

Кто-нибудь еще запустить в этом вопросе, а также ? Существует ли наилучшая практика настройки mongoDB в контейнерах докеров?

ответ

1

Возможно, вам нужно будет указать, какое изображение для докеров вы используете, и если это не контейнер с монго, как монго устанавливается и запускается?

Если вы не используете официальное изображение здесь: https://hub.docker.com/_/mongo/ вы могли бы попробовать добавить приложение к нему для целей отладки

например

FROM mongo 

# System ruby 
RUN apt-get update \ 
&& apt-get install -y --no-install-recommends \ 
curl ruby \ 
&& rm -rf /var/lib/apt/lists/* 

RUN bash -l -c 'ruby -v' 

# Or Get a new version of ruby 
ENV GET_RUBY ruby-2.3.3 

RUN curl -sSL https://get.rvm.io | bash -s stable 
RUN bash -c 'source /etc/profile.d/rvm.sh && rvm install $GET_RUBY && rvm use --default $GET_RUBY' 
RUN bash -l -c 'ruby -v' 
add . /assets 

Кроме того, в качестве наилучшей практики вы не должны иметь службу mongo внутри своего контейнера для приложений. Вместо этого запустите официальный и используйте его из своего другого контейнера, вот проект-доклер-compose.yml из проекта, который я использую, который содержит в нем монго:

version: '2' 
services: 
    db: 
    image: mongo 
    ports: 
     - "27017:27017" 
    web: 
    build: . 
    command: npm start 
    volumes: 
     - .:/meanshop 
    ports: 
     - "7000:7000" 
    depends_on: 
     - db 
    environment: 
     PORT: 7000 
     MONGODB_DB_URL: "mongodb://db/meanshop" 
Смежные вопросы