首页 > 解决方案 > 如何运行 cronjobs 和 rackup

问题描述

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

文件 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 时,只有一项服务正常运行

标签: rubydockersinatraalpine

解决方案


Docker 容器正在运行,而其中的主进程正在运行。因此,如果您想在 docker 容器中运行两项服务,其中一项必须在后台模式下运行。

所以,CMD图层应该如下:

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

推荐阅读