我想在节点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
答案 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协调在项目中运行多个容器。
如果您真的想在容器中运行多个进程,请使用s6或supervisord之类的初始化系统。