Rails,每当和 docker - cron 任务不运行

2024-03-01

我的定时任务来自schedule.rb不适用于 docker 容器,但是crontab -l结果已经包含这一行:

# Begin Whenever generated tasks for: /app/config/schedule.rb
45 19 * * * /bin/bash -l -c 'bundle exec rake stats:cleanup'
45 19 * * * /bin/bash -l -c 'bundle exec rake stats:count'
0 5 * * * /bin/bash -l -c 'bundle exec rake stats:history'
# End Whenever generated tasks for: /app/config/schedule.rb

我可以在容器中手动运行此命令并且它可以工作。好像 cron 没有启动。

Dockerfile:

FROM ruby:2.4.0-slim
RUN apt-get update
RUN apt-get install -qq -y --no-install-recommends build-essential libpq-dev cron postgresql-client
RUN cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ENV LANG C.UTF-8
ENV RAILS_ENV production
ENV INSTALL_PATH /app
RUN mkdir $INSTALL_PATH
RUN touch /log/cron.log
ADD Gemfile Gemfile.lock ./
WORKDIR $INSTALL_PATH
RUN bundle install --binstubs --without development test
COPY . .
RUN bundle exec whenever --update-crontab
RUN service cron start
ENTRYPOINT ["bundle", "exec", "puma"]

在 Dockerfile 中,RUN 命令仅在构建镜像时执行。

如果你想在启动容器时启动 cron,你应该运行cron in CMD。我通过删除修改了你的 DockerfileRUN service cron start并改变你的ENTRYPOINT.

FROM ruby:2.4.0-slim
RUN apt-get update
RUN apt-get install -qq -y --no-install-recommends build-essential libpq-dev cron postgresql-client
RUN cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ENV LANG C.UTF-8
ENV RAILS_ENV production
ENV INSTALL_PATH /app
RUN mkdir $INSTALL_PATH
RUN touch /log/cron.log
ADD Gemfile Gemfile.lock ./
WORKDIR $INSTALL_PATH
RUN bundle install --binstubs --without development test
COPY . .
RUN bundle exec whenever --update-crontab
CMD cron && bundle exec puma

最佳实践是减少映像的层数,例如,您应该始终将 RUN apt-get update 与 apt-get install 结合在同一个 RUN 语句中,并在之后清理 apt 文件:rm -rf /var/lib/apt/lists/*

FROM ruby:2.4.0-slim
RUN apt-get update && \
  apt-get install -qq -y --no-install-recommends build-essential libpq-dev cron postgresql-client \
  rm -rf /var/lib/apt/lists/* && \
  cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ENV LANG C.UTF-8
ENV RAILS_ENV production
ENV INSTALL_PATH /app
RUN mkdir $INSTALL_PATH && \
  touch /log/cron.log
ADD Gemfile Gemfile.lock ./
WORKDIR $INSTALL_PATH
RUN bundle install --binstubs --without development test
COPY . .
RUN bundle exec whenever --update-crontab
CMD cron && bundle exec puma
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails,每当和 docker - cron 任务不运行 的相关文章

  • 无法在 Google Cloud Run 上部署 Ubuntu 20.04 Docker 容器

    我正在尝试通过 Google Cloud Run 部署一个基于 Ubuntu 20 04 的简单的基于 Python 的 Docker 容器 我已经成功构建了映像 但是当我尝试部署 Cloud Run 服务时 出现以下错误 省略了项目详细信
  • MONGODB [DEBUG] 游标的cursor.refresh() 7078636577051629992

    更新大型 json 列表时 出现以下错误 2012 04 01T09 34 00 00 00 app run 1 MONGODB DEBUG cursor refresh for cursor 7078636577051629992 201
  • 如何禁用docker容器的root访问权限?

    我们有离岸开发人员 他们希望在本地运行我们的服务器 但出于安全原因 我们不想向他们提供服务器代码 所以一个解决方案是他们运行一个 Docker 容器 这是我们服务器的独立版本 所以他们这边没有复杂的设置 问题在于 始终可以以 root 身份
  • 请求完成时间大于 ActiveRecord 和 View 时间之和

    以下是一些示例请求完成时间 Completed 200 OK in 1054ms Views 10 8ms ActiveRecord 455 6ms Completed 200 OK in 1410ms Views 11 6ms Activ
  • 如何在 Rails 3.2.1 版本中注释 Rails 模型

    我正在尝试遵循一些在线教程来在 Rails 中注释我的模型 然而 似乎所有教程都在谈论过时的注释版本或不正确的安装 这真是一团糟 到目前为止我已经尝试过以下方法 1 在 Gemfile 中添加此内容 gem annotate 2 4 0 2
  • Rails:format.js 或 format.json,或两者?

    可能很明显 但我仍然缺乏基本知识 那么在控制器内部 两者都可以使用 还是总是 Javascript 所以两者是相同的 json and js是两种不同类型的响应 它们在 Rails 中被定义为不同的 MIME 类型 Mime Type re
  • 使用 Fetch 和 FormData API 上传多个文件

    我正在尝试使用本机Fetch https developer mozilla org en US docs Web API Fetch API and FormData https developer mozilla org en US d
  • 预期的 ProductField,出现数组问题

    我有一个 Rails 4 应用程序 它有一个如下所示的 params 块 def store params params require store permit name description user id products attr
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • 使用 Nginx 在 Docker 容器内部署带有路由器的 Angular2

    我正在尝试部署一个使用框架的路由器功能的 Angular 2 但在 docker 容器内使用 nginx 为其提供服务时遇到一些问题 由 angular cli 构建的 Angular 应用程序具有如下文件结构 dist 08c42df75
  • 无法使用 Docker 运行 Strapi

    我正在尝试 Docker 化我的Strapi应用程序 所以首先在项目的根目录中我创建了一个 env文件包含以下内容 HOST 0 0 0 0 PORT 3002 然后 里面backend config server js I have mo
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • Azure Functions 计时器触发器线程安全

    我想知道是否有人知道如果您在 Azure 函数上设置了 Cron 设置 如果其任务执行时间超过 5 分钟 则每 5 分钟运行一次 会发生什么情况 它备份吗 或者我应该实现一个锁定功能 以防止某些东西 例如在循环中 处理先前调用已经处理的数据
  • 在 docker 中将 pgadmin 连接到 postgres

    我有一个docker compose与服务文件python nginx postgres and pgadmin services postgres image postgres 9 6 env file env volumes postg
  • Rails 4:资产未在生产中加载

    我正在尝试将我的应用程序投入生产 但图像和 CSS 资源路径不起作用 这是我目前正在做的事情 图像资源位于 app assets images image jpg 样式表位于 app assets stylesheets style css
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • Heroku 部署错误

    在 Windows 环境中 尝试部署到 Heroku 时出现以下错误 C Ruby lib ruby gems 1 8 gems heroku 1 9 13 lib heroku commands base rb 32 in 没有这样的文件
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • 我需要启用哪些权限才能使 Docker 卷正常工作?

    假设我有一个保存一些数据的 Docker 容器 我希望这些数据能够持续存在 如果容器被停止 删除 升级等 我仍然希望数据位于主机操作系统文件系统上的可访问位置 目前 我的解决方案是创建一个目录 srv service name在我的主机上
  • 浏览器关闭时 Omniauth 会话过期

    在我的 Rails 3 应用程序中 我使用 Omniauth 进行用户身份验证部分 fb twitter 实际上我遵循这个 https github com RailsApps rails3 mongoid omniauth https g

随机推荐

  • 如何避免 gen_l10n/app_localizations.dart 的 lint 问题“依赖于引用的包”[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在我的 Flutter 应用程序上 我遇到了 lint 规则的问题 依赖于引用的包 https dart lang gi
  • Intel TBB 可以在 AMD 处理器上运行吗? [复制]

    这个问题在这里已经有答案了 可能的重复 AMD多核编程 https stackoverflow com questions 1623975 amd multi core programming Is 英特尔TBB http threadin
  • C#:从锁定块调用事件

    我通常听说在调用事件侦听器之前解锁所有锁以避免死锁是一个好主意 然而 自从lock 块可以由 C 中的同一线程重入 是否可以从锁定块调用事件 或者我是否需要复制相关状态数据并在锁定块外部调用事件 如果没有 请举例说明何时从某个对象内调用事件
  • “MutationObserver”上的“观察”:参数 1 不是“Node”类型

    我正在创建一个 Chrome 扩展程序 并尝试在 gMail 撰写框的 发送 按钮旁边包含一个小文本 我正在使用 MutationObserver 来了解撰写框窗口何时出现 我通过观察带有类的元素来做到这一点no因为撰写框元素是作为该元素的
  • 在函数参数之前使用 & 的目的是什么?

    我看到一些函数声明是这样的 function boo var 什么是 性格呢 这是通过引用传递 函数内的变量 指向 与调用上下文中的变量相同的数据 function foo bar bar 1 x 0 foo x echo x 1
  • Codeigniter REST CSV 导入到 mysql

    我想使用 API 在我的控制器上发布 csv 文件 我正在使用 phil sturgeon 的 Codeigniter REST 库 如何在客户端实现将 CSV 导入到我的 REST 服务器 我只是想问一下 因为我找不到任何有关它的文档 这
  • var FOO = FOO || 如何实现Javascript 中的 {} 习惯用法?

    从这个问题来看 var FOO FOO 将变量或空对象分配给该变量 在 Javascript 中意味着什么 https stackoverflow com questions 6439579 what does var foo foo as
  • 如何用单引号插入文本sql server 2005

    我想插入带单引号的文本 例如 john 到 sql server 2005 数据库中的表 正如 Kirtan 指出的那样 使用附加单引号来转义单引号如果您尝试通过 sp executesql 执行动态 sql 这首先不是一个好主意 那么下面
  • 如何从 UITableView 中获取选定的行?

    因此 我编写了这段代码 在我想要选择的行旁边打上复选标记 因为我想要多个选定的行 UITableViewCell cell tableView cellForRowAtIndexPath path if cell accessoryType
  • 为什么 const 左值引用可以引用可变右值引用?

    在 C 11 中 可以使用可变右值引用来初始化 const 左值引用 然后 右值引用的值可以发生变化 产生 const 左值引用的可见突变 这是一个例子 int rval 3 const int lval rval cout lt lt l
  • DbSet 在 EF7 中没有 Find 方法

    我正在尝试创建一个通用存储库来访问我的数据库 在 EF6 中 我能够这样做以获得特定的实体 protected IDbSet
  • R:合并具有相同ID的行[重复]

    这个问题在这里已经有答案了 Edit 我将 Var4 更改为字符串值 因为我的问题对我的数据不够精确 因此由于类型无效 答案失败 对此感到抱歉 这是我的第一个问题 我希望有人可以帮助我 我有以下数据集 ID Date N Date Var1
  • 在列表中查找一个值[重复]

    这个问题在这里已经有答案了 我使用以下命令来检查是否item is in my list if item in my list print Desired item is in list Is if item in my list 在列表中
  • 与 Vuex-ORM 的两种方式数据绑定

    有谁知道使用时在表单中实现双向数据绑定的库或已经描述的模式Vuex ORM https vuex orm github io vuex orm 我找到了几个可以帮助解决 Vuex 问题的库 但还没有专门针对 Vuex ORM 的库 vuex
  • 如何在 Java 中使用 servlet 过滤器来更改传入的 servlet 请求 url?

    如何使用 servlet 过滤器更改传入的 servlet 请求 url http nm java appspot com Check License Dir My App Dir ABC My Obj 123 to http nm jav
  • 使用spring-amqp和rabbitmq实现带退避的非阻塞重试

    我正在寻找一种使用 spring amqp 和 Rabbit MQ 的退避策略来实现重试的好方法 但要求是侦听器不应被阻止 因此可以自由地处理其他消息 我在这里看到了类似的问题 但它不包括 后退 的解决方案 RabbitMQ 和 Sprin
  • Kohana 3 分页

    我真的不知道 Kohana 3 中的分页是如何工作的 Kohana 3 中是否有一个很好的分页示例 Get the total count of articles count this gt profil gt articles gt co
  • 如何检测窗口是否闪烁

    当需要吸引用户注意时 我使用 FlashWindowEx 来闪烁应用程序窗口 窗口标题和任务栏按钮持续闪烁 直到应用程序获得焦点 如何检查应用程序当前是否正在闪烁 即 自从指示其闪烁以来尚未获得焦点 这里有两种可能的解决方案 一种使用 WH
  • 使用退格键删除整个 Spannable

    我有一个聊天应用程序 可以在文本中添加表情符号 我有一个问题EditText场地 表情符号图像显示出来 但如果我按普通键盘上的退格按钮 我要更改为表情符号图片的文本就会显示出来 我必须删除几个字符 直到图片消失 我在用Spannable去做
  • Rails,每当和 docker - cron 任务不运行

    我的定时任务来自schedule rb不适用于 docker 容器 但是crontab l结果已经包含这一行 Begin Whenever generated tasks for app config schedule rb 45 19 b