Cron 使用每当 Rails 和 Docker - 作业未触发

问题描述

尝试在我的应用程序上设置 whenever cron 作业,该作业在 docker 设置上运行,在单独的容器中使用 redis 和 sidekiq,但无法将它们设置为按时间表启动,手动它工作正常.

schedule.rb 文件

env :PATH,ENV['PATH']
set :output,"log/cron.log"

every 1.minutes do
  runner "SampleJob.perform_async"
end

我正在尝试运行的测试作业:

class SampleJob
  include Sidekiq::Worker
  
  def perform(*args)
    p 'Job is running'
  end
end

我的 Dockerfile

FROM ruby:2.7.1

ENV LANG C.UTF-8
ENV NODE_VERSION 12
ENV NODE_ENV production
ENV INSTALL_PATH /home/app/app/current

RUN curl -sL https://deb.nodesource.com/setup_$NODE_VERSION.x | bash -
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

RUN apt-get update -qq
RUN apt-get install -y --no-install-recommends nodejs postgresql-client yarn build-essential vim
RUN apt-get install -y cron

RUN mkdir -p $INSTALL_PATH
workdir $INSTALL_PATH

copY Gemfile Gemfile.lock ./
RUN gem install bundler
RUN bundle install

copY . $INSTALL_PATH

RUN rm -rf tmp

RUN useradd -Ms /bin/bash api -u 1001
RUN chown -R api:api /home/app /usr/local/bundle
USER root

RUN touch /home/app/app/current/log/cron.log
RUN bundle exec whenever --update-crontab --set environment='development' 
CMD cron && bundle exec puma

RUN service cron start 


EXPOSE 3100
CMD rails server -p 3100 -b 0.0.0.0

在我的应用容器内运行 crontab -l 给了我:

# Begin Whenever generated tasks for: /home/app/limpar-api/current/config/schedule.rb at: 2021-05-05 17:42:43 +0000
PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/b
.
. (many path variables)
.

* * * * * /bin/bash -l -c 'cd /home/app/limpar-api/current && bundle exec bin/rails runner -e development '\''SampleJob.perform_async'\'' >> log/cron.log 2>&1'

# End Whenever generated tasks for: /home/app/limpar-api/current/config/schedule.rb at: 2021-05-05 17:42:43 +0000

我可能会从组合中遗漏任何步骤吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...