2016-12-15 13 views
0

ノードDockerイメージ内でサービスとしてthumbdを実行したいと思います!現時点で私は私のアプリを起動する前にそれを実行していますが、これは私の役に立たないものです!起動時に他のドッカーのコマンドをブロックすることなく、init.dサービスとして起動するようにDockerfileを設定する方法はありますか?次のようにDockerコンテナ内でサービスとしてthumbdを実行するにはどうすればよいですか?

私Dockerfileは行く:

FROM node:6.2.0 

# Create app directory 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

# Install app dependencies 
COPY package.json /usr/src/app/ 
RUN npm install 

# Thumbd 
RUN npm install -g thumbd 
RUN mkdir -p /var/log/ 
RUN echo "" > /var/log/thumbd.log 
RUN thumbd server --aws_key=<KEY> --aws_secret=<SECRET> --sqs_queue=<QUEUE> --bucket=<BUCKET> --aws_region=us-west-1 --s3_acl=public-read 

# Bundle app source 
COPY . /usr/src/app 

EXPOSE 8080 

CMD npm run build && npm start 

答えて

1

原因、それはあなたのアプリケーションへの直接リンクせずに動作する方法にそれ自身の容器にthumbd実行するために、おそらく最も簡単です。 Dockerはコンテナごとに1つのプロセスのアイデアも押し付けています。

FROM node:6.2.0 

# Thumbd 
RUN set -uex; \ 
    npm install -g thumbd; \ 
    mkdir -p /var/log/; \ 
    touch /var/log/thumbd.log 

CMD thumbd server --aws_key=<KEY> --aws_secret=<SECRET> --sqs_queue=<QUEUE> --bucket=<BUCKET> --aws_region=us-west-1 --s3_acl=public-read 

あなたは、プロジェクト内の複数のコンテナを実行しているオーケストレーションするDocker Composeを使用することができます。

コンテナで複数のプロセスを実際に実行する場合は、s6、おそらくsupervisordなどのinitシステムを使用します。

+0

ええ、私はマルチコンテナenvをセットアップしているはずです。しかし、devのためには余分なコストは必要ないので、複数のサービスを扱う 'supervisord'を設定しました。 – James111

関連する問題