2017-05-18 5 views
0

저는 Meteor 컨테이너 인 mgmt-app 컨테이너와 MongoDB 인 mgmt-mongo를 가지고 있습니다. 내 도커 호스트에서 유황 이미지를 사용하는 도커 실행 방법은 무엇입니까?

CONTAINER ID  IMAGE          COMMAND     CREATED    STATUS    PORTS     NAMES 
7b65be4ac454  gitlab-lab:5005/dfc/mongo:latest   "/entrypoint.sh mongo" About an hour ago Up About an hour 27017/tcp    mgmt-mongo 
dff0b3c69c5f  gitlab-lab:5005/dfc/mgmt-docker-gui:lab "/bin/sh -c 'sh $METE" About an hour ago Up 42 minutes  0.0.0.0:80->80/tcp  mgmt-app 

나는 docker run gitlab-lab:5005/dfc/mgmt-docker-gui:lab ls -al

를 실행하려면하지만 난이 오류가 : 오류가 있었다 다음

docker run -e "MONGO_URL=mongodb://mgmt-mongo:27017/meteor" gitlab-lab:5005/dfc/mgmt-docker-gui:lab ls -al 

과 :

=> Starting meteor app on port:80 
/app/programs/server/node_modules/fibers/future.js:280 
         throw(ex); 
         ^
Error: MONGO_URL must be set in environment 

그래서 나는 시도를 :

/app/programs/server/node_modules/fibers/future.js:313 
         throw(ex); 
         ^
MongoError: failed to connect to server [mgmt-mongo:27017] on first connect 

I이 파일이있는 docker-compose up -d을 수행 할 때 때문에 난 정말 이해가 안 :

mgmt-app: 
    image: gitlab-lab:5005/dfc/mgmt-docker-gui:latest 
    container_name: mgmt-app 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 
     - $HOME/.docker:/root/.docker 
     - /home/dockeradm/compose/area:/home/dockeradm/compose/area 
    environment: 
     - ROOT_URL=http://localhost:80 
     - MONGO_URL=mongodb://mgmt-mongo:27017/meteor 
    ports: 
     - 80:80 
    restart: always 

    mgmt-mongo: 
    image: gitlab-lab:5005/dfc/mongo:latest 
    container_name: mgmt-mongo 
    volumes: 
     - mgmt_mongo_data_config:/data/configdb 
     - mgmt_mongo_data_db:/data/db 
    restart: always 

모든 것이 잘 이동합니다.

내 요청에 따라 내 명령을 실행하려면 docker run을 어떻게해야합니까? (명령은 단순한 ls -al이 아니지만 데모에서는 괜찮습니다.)

+0

나에게 DNS 확인 문제처럼 보인다. MONGO_URL 매개 변수를 설정할 때 mgmt-mongo의 IP 주소를 대체 할 수 있습니까? –

+0

@RamanSailopal하지만 '도커 작성'과 함께 작동하는 이유는 무엇입니까? IP 주소가 아니라 이름입니까? 오류는 '서버에 연결하지 못했습니다 ...'이름과 동일합니다. – Jerome

답변

1

으로 컨테이너를 별도로 실행하면 동일한 도커 네트워크에 연결되지 않으므로 mongo 컨테이너가 앱 컨테이너에서 액세스 할 수 없습니다. 이 문제를 해결하려면

  1. 중 하나를 사용하여 mongo 컨테이너에 연결된 것으로 표시해야합니다. 이 작동하지만 더 이상 사용되지 않습니다.
  2. defined docker network 두 컨테이너가 연결될 수 있습니다. 이 더 복잡하지만 권장 아키텍처 대비, docker-compose automatically adds both containers to the same docker network으로

, 그래서 그들은 필요한 추가 구성없이 바로 접속할 수 있습니다

By default Compose sets up a single network for your app. Each container for a service joins the default network and is both reachable by other containers on that network, and discoverable by them at a hostname identical to the container name.

+0

답변 해 주셔서 감사합니다. 작동하도록 노력하겠습니다. – Jerome

관련 문제