2017-01-24 157 views
0

我有一個docker容器,其中運行了Rails和mongoDB。 我將mongo配置設置爲使用unix套接字進行連接,因爲真正需要連接的唯一資源(rails應用程序)正在容器中運行。
每當我嘗試連接到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爲中心的容器,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服務。相反,啓動官方並從其他容器中使用它,這裏是一個來自項目的docker-compose.yml,其中有mongo:

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"