2017-01-24 31 views
0

私はRailsとmongoDBを実行しているドッカーコンテナを持っています。 実際に接続する必要のあるリソース(レールアプリケーション)がコンテナ内で実行されているため、mongoの設定で接続用のUnixソケットを使用するように設定しました。
私はこのエラーを取得するmongoシェルに接続しようとするたび:DockerのmongoDBソケットに接続

[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 

は誰が同様にこの問題に実行されました? dockerコンテナ内のmongoDB設定に関するベストプラクティスはありますか?

答えて

1

mongo centricコンテナではない場合、mongoはどのようにインストールされ起動されていますか?

あなたはここに公式の画像を使用していない場合: 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サービスを置いてはいけません。代わりに、公式のものを起動して、あなたの他のコンテナからそれを利用してください。ここにmongoが入っているプロジェクトのdocker-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"