繁体   English   中英

rails docker中的delay_job无法正常工作

[英]delayed_job in rails docker is not working properly

我已将 Rails 应用程序转移到 docker。 除了 rails delay_job 之外,一切正常。 我已经使用 delay_job 发送电子邮件。 我已经通过命令docker-compose run web rake jobs:work开始了我的工作,如图所示,它已成功启动。

在此处输入图片说明

现在,当我尝试在控制台中发送电子邮件时,它显示电子邮件已启动,如上图所示。

我是否必须在 docker-compose.yml 或 Dockerfile 中包含任何行。

我的 Dockerfile 是:

FROM ruby:2.3.6

RUN mkdir -p /railsapp
WORKDIR /railsapp

RUN apt-get update && apt-get install -y nodejs --no-install-recommends
RUN apt-get update && apt-get install -y mysql-client  --no-install-recommends

COPY Gemfile /railsapp/

COPY Gemfile.lock /railsapp/


RUN bundle install

COPY . /railsapp

EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

我的 docker-compose.yml 是:

  version: '3.3'

  services:
    mysql:
      image: mysql
      restart: always
      ports:
        - "3002:3002"
      volumes:
        - /var/lib/mysql
      environment:
        - MYSQL_ROOT_PASSWORD=root
        - MYSQL_DATABASE=dev

    web:
      build: .
      environment:
        - RAILS_ENV=development
      ports:
        - '3000:3000'
      volumes:
        - .:/railsapp
      links:
        - "mysql"
      depends_on:
        - mysql

我对 docker 完全陌生。

我不确定您是如何配置 ActionMailer 的,但是如果您使用的是默认设置,则您可能是通过服务器内置的Mail Transfer Agent发送电子邮件。 在实践中,这意味着 Rails 调用一个名为sendmail的系统命令,该命令接受外发电子邮件并将其放入本地队列中,由名为postfix的服务/守护程序接收。 除非您明确启用它,否则 Postfix 不会在您的 Docker 容器内运行,您的电子邮件也不会发送到任何地方。

您可以在此处查看sendmail的示例: https : //help.dreamhost.com/hc/en-us/articles/216687518-How-do-I-use-Sendmail-

你有两个选择。

1) 在 Delayed Job 容器内启用 Postfix。 这涉及找出要安装的操作系统包以及要运行的守护程序/服务。

2) 切换到外部 SaaS 邮件服务,例如 Sendgrid 或 Mailgun。 这些服务公开了 REST 或 SOAP API,ActionMailer 可以直接调用这些 API 来发送特定的电子邮件。 这消除了托管您自己的 postfix 服务器的需要。 此外,这些第三方服务专门用于正确投递,从而降低您的电子邮件无意中进入收件人垃圾邮件文件夹的风险。 我推荐这种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM