gpt4 book ai didi

ruby-on-rails - Rails docker中的delay_job无法正常工作

转载 作者:行者123 更新时间:2023-12-02 19:33:15 24 4
gpt4 key购买 nike

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

enter image description here

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

我是否必须在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)在“延迟的作业”容器中启用Postfix。这涉及找出要安装的OS软件包以及要运行的守护程序/服务。

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

关于ruby-on-rails - Rails docker中的delay_job无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com