2017-01-24 3 views
0

레일 및 mongoDB가 실행중인 도커 컨테이너가 있습니다. 정말로 연결해야하는 유일한 리소스 (레일 앱)가 컨테이너에서 실행되기 때문에 연결에 유닉스 소켓을 사용하도록 mongo 구성을 설정했습니다.Docker에서 mongoDB 소켓에 연결

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

내 MongoDB의 구성은 다음과 같이 설정 한 : 나는 mongo 쉘에 연결을 시도 할 때마다
나는이 오류가

#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 서비스를 설치해서는 안됩니다. 대신, 공식 하나를 발사하고 다른 컨테이너에서 활용하십시오. 여기에 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" 
관련 문제