ruby - 如何运行 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 时,只有一项服务正常运行
解决方案
Docker 容器正在运行,而其中的主进程正在运行。因此,如果您想在 docker 容器中运行两项服务,其中一项必须在后台模式下运行。
所以,CMD
图层应该如下:
CMD ( crond -f & ) && rackup --host 0.0.0.0 -p 80
推荐阅读
- javascript - Materialize CSS datepicker 在 iPhone X 中选择了错误的年份
- html - VBA - HTML 解析 HTTP 响应
- ajax - 在 JSF 中包含 cdata 块时,ajax 请求出现问题
- hyperledger-fabric - Hyperledger Fabric 多通道多链码
- hashicorp-vault - HashiCorp Vault 错误作为生产运行
- python-3.x - 在 Keras 中预测我的简单训练模型的问题
- python - 为什么 ThreadPoolExecutor 比 for 循环慢?
- python - 使用 Python 创建文件时保留初始 XML 注释
- wordpress - Google Analytics - 跟踪 URL 更改?
- regular-language - 我们如何使用抽水引理证明这种语言是不规则的?