在Docker中连接到mongoDB套接字

我有一个docker容器,其中运行Rails和mongoDB。 我将mongoconfiguration设置为使用unix套接字进行连接,因为真正需要连接的唯一资源(rails应用程序)正在容器中运行。
每当我尝试连接到mongo shell我得到这个错误:

[main]错误:尝试在主机“127.0.0.1:27017”上运行命令“isMaster”时出现networking错误

我有我的mongoDBconfiguration像这样设置:

 #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容器中有没有mongoDBconfiguration的最佳做法?

你可能需要先给你使用哪个docker镜像,如果它不是一个以mongo为中心的容器,mongo是如何安装和启动的?

如果您在这里没有使用官方映像: https : //hub.docker.com/_mongo/您可能会尝试添加您的应用程序以进行debugging

例如

 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"