Configurer SMTP dans un conteneur Docker

Lorsque je déploie Discourse via les charts Helm

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

tout fonctionne comme prévu, mais je ne peux pas modifier la configuration des e-mails SMTP dans le conteneur Docker.

Lorsque j’essaie de reproduire ceci, je me connecte au conteneur et exécute

cd /opt/bitnami/discourse/config

dans ce répertoire, je trouve le fichier discourse.conf, mais je ne peux pas le modifier car il indique, par exemple, que vi n’est pas disponible.

Avez-vous des suggestions sur ce que je pourrais faire ?

Vous pouvez demander sur leur forum. Sauf qu’ils l’ont fermé.

Ou vous pouvez faire une installation standard et obtenir de l’aide ici.

Vous pourriez être en mesure de définir des variables d’environnement. Vous pouvez examiner les exemples.

Salut @pfaffman , merci beaucoup pour votre contribution.

Je sais maintenant comment intégrer les variables d’environnement dans le chart Helm de Bitnami.

Compte tenu des identifiants SMTP de mon fournisseur pour les e-mails transactionnels Sendinblue

Savez-vous à quoi ressemblent les variables d’environnement que je dois passer au conteneur Dsicourse ?

Si vous essayez d’utiliser un compte Gmail ordinaire pour envoyer des e-mails, c’est une violation des conditions d’utilisation et cela ne fonctionnera pas (pour plusieurs autres raisons).

Il existe un exemple de variables d’environnement SMTP dans

1 « J'aime »

Salut @pfaffman @Falco

Merci beaucoup pour votre contribution.

Voici à quoi ressemblent mes variables d’environnement

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"

et après cela, le conteneur a démarré. J’ai essayé d’envoyer un e-mail de test à mon compte Gmail depuis le panneau d’administration. Voici ce que j’ai obtenu :

Donc, ça ne fonctionne pas pour le moment.

Voici les journaux du conteneur 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)

Savez-vous ce que je pourrais faire différemment ?

Vous pouvez entrer dans le conteneur en cours d’exécution et exécuter

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

et inspecter l’exception qui sera levée pour obtenir des indices.

1 « J'aime »

Ceci est ce que j’obtiens de la première ligne

bash : erreur de syntaxe près du jeton inattendu `('

Ah, vous devez d’abord accéder à la console Rails. Allez dans le répertoire Discourse et tapez rails c.

1 « J'aime »

Voici ce que j’obtiens alors

root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# rails c
bash: rails: commande introuvable
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

D’accord, j’exécutais maintenant

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)

Aussi, ceci ne fonctionne pas :

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 `('

Est-ce que je fais quelque chose de mal ici ?

Bizarre, cela fonctionne parfaitement sur mon installation :

[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>>

Étant donné que vous utilisez une #installation-non-prise-en-charge empaquetée par Bitnami, il est normal qu’elle soit défectueuse de manière subtile. Nous ne prenons pas en charge de telles installations ici, vous devrez donc contacter leur propre canal de support sur GitHub · Where software is built.

1 « J'aime »

Salut @Falco, merci beaucoup de m’avoir répondu.

Qu’entends-tu par « installations non prises en charge » ? Je suis tout à fait disposé à opter pour des installations plus prises en charge. :slight_smile:

Puis-je toujours tout faire avec un graphique Helm alors ?

Vous ne pouvez pas. Seule l’installation officielle est prise en charge. Voir Discourse peut-il expédier des images Docker fréquentes qui n’ont pas besoin d’être amorcées ?.

J’ai aidé quelqu’un avec une installation K8s la semaine dernière. Il m’a fallu, à moi et à quelques ingénieurs talentueux, plus de 6 heures (mais cela aurait pu être 10, sans compter le temps qu’ils ont passé sans moi) pour la faire fonctionner en utilisant leurs outils.

J’ai envisagé de créer des images qui devraient être lancées à partir d’un diagramme Helm, mais je ne l’ai pas encore fait. Si vous avez un budget, contactez-moi par message privé ou par e-mail et je pourrai peut-être vous aider.

2 « J'aime »