2014-11-19 3 views
2

나는 도커 컨테이너에서 실행하고 싶은 koa.js 앱을 가지고 있습니다. 이 loa 응용 프로그램은 couchdb를 실행해야하는데, 동일한 컨테이너에서 제공하고 싶습니다. 나는 이것이 최선의 방법은 아니라는 것을 알고 있지만 실제로 그것은 내 사용자가 시작하는 가장 좋은 방법입니다.Node.js 단일 컨테이너에있는 Koa 앱과 CouchDB

Dockerfile :

# DOCKER-VERSION 1.2.0 
FROM centos:centos6 

# Enable EPEL for CouchDB and Node.js 
RUN yum -y update; yum clean all 
RUN yum -y install epel-release; yum clean all 
RUN yum -y install tar 

# Install Node.js and CouchDB 
RUN yum -y install couchdb; yum clean all 
RUN service couchdb start 
RUN yum install -y nodejs 
RUN yum install -y npm 

# Bundle app source 

ADD . . 

# Install app dependencies 

RUN npm install 
RUN npm install -g n 
RUN n 0.11.12 

# Expose port and run 
EXPOSE 8080 
CMD ["npm", "start"] 

잘 작동 응용 프로그램이 시작됩니다하지만 CouchDB를 연결할 수 없습니다. OK와

RUN service couchdb start 

응답 던지, 그래서 작동하는 것 같다,하지만

curl -X GET 127.0.0.1:5984 

응답 koa.js 응용 프로그램에 대한

curl: (7) couldn't connect to host 

같은과 :

error: error stack=Error: connect ECONNREFUSED 
at exports._errnoException (util.js:745:11) 
at Object.afterConnect [as oncomplete] (net.js:995:19), code=ECONNREFUSED, errno=ECONNREFUSED, syscall=connect 

누군가 내가 누락 된 내용이나 내가하는 일을 알고 있습니다. 잘못된거야?

답변

2

이 이미지를 시작할 때 실행되는 유일한 명령은 CMD 줄에있는 명령입니다. 그 전의 모든 행은 읽기 전용의 비 실행 이미지를 작성합니다. 따라서 RUN service couchdb start 라인은 성공적인 것으로 표시 될 때까지 즉석에서 서비스를 시작한 다음 도커가 해당 이미지를 중지하고 저장 한 후 다음 줄로 이동합니다. 서비스의 "실행 중"상태는 유지되지 않습니다.

일반적인 오해이며 내가 처음 시작할 때 잘못되었습니다.

의 세 가지 옵션, 최고 빠른 아직 대부분의 해키되고, 대부분의 작업을하지만, 가장 적절한 것을 마지막으로 :

  1. 당신의 CMD 라인으로 service couchdb start && npm start을 넣습니다.
  2. 는 startup.sh 스크립트를 작성하는 모든 당신이 거기에서 수행하고 CMD 라인
  3. 사용 당신이 물건을 할 수 있도록 설계된 서비스로 그를 호출 할 필요가, supervisord 종종 권장합니다 "실행"할.

이것은 일반적인 문제이기 때문에 "독서에서 서비스 시작"을 검색하는 Google 검색 결과가있는 경우 주제에 대한 자세한 정보가 표시됩니다.

+0

감사합니다. 지금 잘 작동합니다. 사고 서비스는 기본적으로 시작됩니다. 오. – cschaeffler

관련 문제