我应该怎样在Docker容器中运行大拇指服务?

我想在节点Docker镜像中运行thumbd作为服务! 目前我只是在启动我的应用程序之前运行它,这对我没有用处! 有没有一种方法可以设置我的Dockerfile在启动时将其作为init.d服务运行,而不会阻塞我的其他docker命令?

我的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 

这可能是最简单的运行拇指在自己的容器,因为它的工作方式没有直接链接到您的应用程序。 Docker也喜欢推动每个容器单个进程的想法。

 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编排在项目中运行多个容器。

如果你真的想在一个容器中运行多个进程,可以使用一个init系统,比如s6或者supervisord 。