2016-06-20 2 views
0

우분투 15.10을 사용하는 VPS 시스템에서 두 개의 도킹 장치 컨테이너를 실행하려고하는데이 경우 docker-compose을 사용하고 있습니다. 한 컨테이너는 mongodb 서버이고 다른 컨테이너는 node.js/sails.js로 작성된 내 웹 응용 프로그램을 실행합니다.도커에서 명령 실행하기

docker-compose.yml에 다음과 같이 써서 docker-compose up이 두 컨테이너를 모두 실행합니다. 웹 응용 프로그램 도커 컨테이너에있는 /host 디렉토리에 웹 응용 프로그램을 마운트 중이며 3050:1337 (host : docker) 포트 매핑을 수행하려고합니다. 웹 응용 프로그램을 실행하려면 command 레이블을 사용하고 bash를 사용하여 디렉토리를 변경하고 sails lift 명령을 실행하십시오. 그러나 작동하지 않습니다. 나는 다음과 같은 스크립트가 잘못된 것 같다 :

MongoDB: 
    image: mongo 

MyAPI: 
    image: sailsjs-microservice:dev 
    volumes: 
    - /root/Code/node/My-API:/host 
    command: bash -c "cd /host && sails lift" 
    ports: 
    - "3050:1337" 

나는

+0

흠, API 섹션에 DB에 대한 링크를 추가하는 것을 잊은 것 같습니다. API 서비스는 해당 mongo 인스턴스에 올바르게 연결할 수 있어야합니다. –

답변

1

내가 당신 sailsjs-microservice 컨테이너의 로그를 보지하지만 난 당신이 당신의 몽고 컨테이너에 대한 링크를 추가해야한다고 생각 당신의 도움을 주셔서 감사합니다 당신의 API 컨테이너

한 가지 방법은 당신의 작성 파일이 추가거야해야 할 일 :

MyApi: 
    links: 
    - mongo:mongo 

첫 번째 몽고는 연결하려는 이미지의 이름, 두 번째는, 예를 들어 DB가 될 수 별칭이다 . Docker는 컨테이너의 IP 주소를 환경 변수로 내보내고 /etc/hosts 항목을 추가하여 mongo에 연결하여 서비스의 코드에서 참조 할 수 있도록합니다. 27017 (mongo은 작성 파일에 정의 된 별칭입니다. 27017은 기본 포트입니다).

는 표준 포트 및 URI MongoDB를 같이 사용할 수 있습니다 MongoDB를 해결하기 위해 서비스 안에 지금, 당신은 네트워크에 시도 할 수 있습니다 link environment variables

1
MongoDB: 
    image: mongo 
    networks: 
     - myApi-tier 

MyAPI: 
    image: sailsjs-microservice:dev 
    volumes: 
    - /root/Code/node/My-API:/host 
    command: bash -c "cd /host && sails lift" 
    networks: 
     - myApi-tier 

networks: 
    myApi-tier: 

을 보라.

관련 문제