如何 运行 cronjobs 和 rackup

How to run cronjobs and rackup

我的问题是 运行 ruby sinatra 的 cron 和 rackup 服务在 docker。

文件 cronjobs * * * * * cd /app && rake parser >> cron.log 2>&1

文件 Dockerfile


RUN apk update && apk upgrade
RUN apk add --update build-base \ 
mariadb-dev bash dcron

RUN gem install bundler 

WORKDIR /app
COPY Gemfile .
RUN bundle install && bundle clean
COPY .  /app
COPY cronjobs /etc/crontabs/root

EXPOSE 80

CMD crond -f && rackup --host 0.0.0.0 -p 80

当 运行 docker 只有一项服务可用时

Docker 容器是 运行ning 而它里面的主进程是 运行ning。因此,如果您想 运行 在 docker 容器中使用两项服务,其中一项必须 运行 处于后台模式。

所以,CMD层应该是这样的:

CMD ( crond -f & ) && rackup --host 0.0.0.0 -p 80