إعداد SMTP في حاوية Docker

عندما أقوم بنشر Discourse عبر مخططات Helm

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-release bitnami/discourse

تعمل الأمور كما هو مقصود، لكن لا يمكنني تعديل تكوين البريد الإلكتروني SMTP في حاوية Docker.

عندما أحاول تكرار هذا، أدخل الحاوية وأنفذ

cd /opt/bitnami/discourse/config

في هذا الدليل أجد ملف discourse.conf، لكن لا يمكنني تعديله لأنه يقول، على سبيل المثال، أن vi غير متاح.

هل لديك أي اقتراحات حول ما يمكنني فعله؟

يمكنك السؤال في منتداهم. باستثناء أنهم أغلقوه.

أو يمكنك إجراء تثبيت قياسي والحصول على المساعدة هنا.

قد تتمكن من تعيين متغيرات البيئة. يمكنك الاطلاع على الأمثلة.

مرحباً @pfaffman ، شكراً جزيلاً على مساهمتك.

أعرف الآن كيف يمكن إدخال متغيرات البيئة في مخطط helm الخاص بـ Bitnami.

بالنظر إلى بيانات اعتماد SMTP الخاصة بمزودي لرسائل البريد الإلكتروني للمعاملات Sendinblue

هل تعرف كيف تبدو متغيرات البيئة التي يجب أن أمررها إلى حاوية Dsicourse؟

إذا كنت تحاول استخدام حساب Gmail عادي لإرسال بريد، فهذا يعد انتهاكًا لشروط الخدمة ولن يعمل (لعدة أسباب أخرى).

يوجد مثال لمتغيرات بيئة SMTP في

إعجاب واحد (1)

مرحباً @pfaffman @Falco
شكراً جزيلاً على مدخلاتكم.
هذه هي متغيرات البيئة الخاصة بي:

discourse:
  extraEnvVars:
    - name: DISCOURSE_SMTP_ADDRESS
      value: "smtp-relay.sendinblue.com"
    - name: DISCOURSE_SMTP_PORT
      value: "587"
    - name: DISCOURSE_NOTIFICATION_EMAIL
      value: "no-reply@my-domain.com"
    - name: DISCOURSE_SMTP_USER_NAME
      value: "my-email@googlemail.com"
    - name: DISCOURSE_SMTP_PASSWORD
      value: "my-pw"
    - name: DISCOURSE_SMTP_DOMAIN
      value: "my-domain.com"

وبعد ذلك تم تشغيل الحاوية. حاولت إرسال بريد إلكتروني تجريبي إلى حساب Gmail الخاص بي من لوحة الإدارة. هذا ما حصلت عليه:


لذلك، لم يعمل حتى الآن.
هذه هي سجلات حاوية Discourse:

Processing by Admin::UsersController#show as JSON
  Parameters: {"id"=>"1"}
Completed 200 OK in 1978ms (Views: 0.6ms | ActiveRecord: 0.0ms | Allocations: 195416)
Started GET "/groups/search.json" for 10.0.0.50 at 2022-08-10 11:55:05 +0000
Processing by GroupsController#search as JSON
Completed 200 OK in 1189ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 133325)
Started GET "/admin/email.json" for 10.0.0.50 at 2022-08-10 11:55:17 +0000
Processing by Admin::EmailController#index as JSON
Completed 200 OK in 23ms (Views: 1.2ms | ActiveRecord: 0.0ms | Allocations: 864)
Started POST "/admin/email/test" for 10.0.0.50 at 2022-08-10 11:55:20 +0000
Processing by Admin::EmailController#test as */*
  Parameters: {"email_address"=>"test@gmail.com"}
Completed 422 Unprocessable Entity in 20ms (Views: 1.1ms | ActiveRecord: 0.0ms | Allocations: 2037)
Started GET "/about.json" for 10.0.0.47 at 2022-08-10 11:55:46 +0000
Processing by AboutController#index as JSON
Completed 200 OK in 67ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 9503)
Started GET "/site/basic-info.json" for 10.0.0.47 at 2022-08-10 11:55:46 +0000
Processing by SiteController#basic_info as JSON
Completed 200 OK in 254ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 33103)
Started GET "/site/basic-info.json" for 10.0.0.47 at 2022-08-10 11:55:47 +0000
Processing by SiteController#basic_info as JSON
Completed 200 OK in 80ms (Views: 0.8ms | ActiveRecord: 0.0ms | Allocations: 4260)

هل تعرف ما الذي يمكنني فعله بشكل مختلف؟

يمكنك الدخول إلى الحاوية قيد التشغيل وتنفيذ

message = TestMailer.send_test("test@gmail.com")
Email::Sender.new(message, :test_message).send

والتحقق من الاستثناء الذي سيتم طرحه للحصول على أدلة.

إعجاب واحد (1)

هذا ما حصلت عليه من السطر الأول

bash: syntax error near unexpected token `('

أوه، تحتاج إلى الدخول إلى وحدة تحكم rails أولاً. انتقل إلى دليل Discourse وأدخل rails c.

إعجاب واحد (1)

هذا ما أحصل عليه إذن

root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# rails c
bash: rails: command not found
root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# ls
Brewfile         Gemfile.lock  adminjs  config.ru                  docs                 lefthook.yml  package.json             plugins  test            yarn.lock
CONTRIBUTING.md  LICENSE.txt   app      d                          images               lib           passenger.3000.pid.lock  public   tmp
COPYRIGHT.md     README.md     bin      db                         install-imagemagick  licenses      passenger.8080.pid       script   translator.yml
Gemfile          Rakefile      config   discourse.sublime-project  jsapp                log           passenger.8080.pid.lock  spec     vendor

حسنًا، كنت أقوم بالتشغيل الآن

RAILS_ENV=production bundle exec rails c

irb(main):002:0> message = TestMailer.send_test("test@gmail.com")
Traceback (most recent call last):
        2: from app/mailers/test_mailer.rb:7:in `send_test'
        1: from lib/email/build_email_helper.rb:8:in `build_email'
ArgumentError (:arguments expected to be an Array of individual string args)

أيضًا، هذا لا يعمل هنا:

root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# RAILS_ENV=production bundle exec rails c message = TestMailer.send_test("test@gmail.com")
bash: syntax error near unexpected token `('

هل أفعل شيئًا خاطئًا هنا؟

غريب، هذا يعمل بشكل جيد على تثبيتي:

[5] pry(main)> message = TestMailer.send_test("test@gmail.com")
  TranslationOverride Exists? (0.8ms)  SELECT 1 AS one FROM "translation_overrides" WHERE "translation_overrides"."locale" = 'en' AND "translation_overrides"."translation_key" = 'test_mailer.subject_template' LIMIT 1
  (0.2ms)  SELECT "translation_overrides"."translation_key", "translation_overrides"."value" FROM "translation_overrides" WHERE "translation_overrides"."locale" = 'en'
TestMailer#send_test: processed outbound mail in 259.9ms
=> #<Mail::Message:212740, Multipart:false, Headers:<From: "Discourse" <noreply@unconfigured.discourse.org>>, <Reply-To: "Discourse" <noreply@unconfigured.discourse.org>>, <To: test@gmail.com>, <Subject: [Discourse] Email Deliverability Test>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <X-Auto-Response-Suppress: All>, <Auto-Submitted: auto-generated>>

نظرًا لأنك تستخدم تثبيتًا غير مدعوم (unsupported-install) تم تجميعه بواسطة Bitnami، فمن المتوقع أن يكون معطلاً بطرق دقيقة. نحن لا ندعم مثل هذه التثبيتات هنا، لذا ستحتاج إلى التواصل مع قناة الدعم الخاصة بهم على GitHub · Where software is built.

إعجاب واحد (1)

مرحباً @Falco، شكراً جزيلاً على ردك.

ماذا تقصد بالتثبيتات غير المدعومة؟ يسعدني استخدام المزيد من التثبيتات المدعومة. :slight_smile:

هل لا يزال بإمكاني إنجاز كل شيء باستخدام مخطط Helm؟

لا يمكنك. يتم دعم التثبيت الرسمي فقط. انظر هل يمكن لـ Discourse شحن صور Docker متكررة لا تحتاج إلى تهيئة؟.

لقد ساعدت شخصًا ما في تثبيت K8s الأسبوع الماضي. استغرق الأمر مني ومن عدد قليل من المهندسين الموهوبين أكثر من 6 ساعات (ولكن ربما كانت 10، دون احتساب الوقت الذي قضوه بدوني) لتشغيله باستخدام أدواتهم.

لقد فكرت في إنشاء صور يجب تشغيلها من مخطط helm، لكنني لم أفعل ذلك بعد. إذا كانت لديك ميزانية، فيرجى الاتصال بي عبر رسالة خاصة أو البريد الإلكتروني وقد أتمكن من المساعدة.

إعجابَين (2)