我应该如何在Docker容器中运行thumbd作为服务?

时间:2016-12-15 02:52:50

标签: node.js docker service dockerfile

我想在节点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

1 个答案:

答案 0 :(得分:1)

在它自己的容器中运行thumbd可能最容易,因为它的工作方式没有直接链接到你的应用程序。 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协调在项目中运行多个容器。

如果您真的想在容器中运行多个进程,请使用s6supervisord之类的初始化系统。