问题描述
尝试在我的应用程序上设置 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 (将#修改为@)