2017-02-10 4 views
1

WordPressのコンテナにsendmail_pathを設定し、別のコンテナが提供するsendmailを使用します。私の場合、そのMailHog。DockerはMailPressとメールキャッチャーを接続します

これが私のドッキングウィンドウ-コンです:

version: '2' 
services: 
    wordpress: 
     image: wordpress 
     links: 
      - db:mysql 
      - mailhog 
     ports: 
      - 80:80 
     domainname: foo.com 
     hostname: foo 
     volumes: 
      - ./public:/var/www/html 
     environment: 
      WORDPRESS_DB_PASSWORD: example 
     depends_on: 
      - mailhog 

    mailhog: 
     image: mailhog/mailhog 
     ports: 
      - 1025:1025 
      - 8025:8025 

    db: 
     image: mariadb 
     environment: 
      MYSQL_ROOT_PASSWORD: example 

私はWordPressのコンテナにcommand: "echo 'sendmail_path = \"/usr/local/bin/mailhog sendmail\"' > /usr/local/etc/php/conf.d/mail.ini"を実行しようとしたが、それは実際にそれを印刷し...

これら二つのボリュームを共有することがありますか?

PS。私はAPPでSMTPサーバーとして使うことができますが、より自動化された方法で対処したいと思っています。

答えて

2

メールボックスがWordpressコンテナにインストールされていないため、パス/usr/local/bin/mailhogは終了しません。

あなたがしたいことは、sendmail経由でメールを送信することです。このメールはmailhogでキャッチする必要があります。 --smtp-adrrパラメータ

FROM wordpress 
RUN curl --location --output /usr/local/bin/mhsendmail https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 && \ 
    chmod +x /usr/local/bin/mhsendmail 

RUN echo 'sendmail_path="/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025 [email protected]"' > /usr/local/etc/php/conf.d/mailhog.ini 

注:これを行うには、ワードプレスdockerfileを拡張する必要があり、それが形<mailhog_hostname>:<mailhog_port>でなければなりません。

ドッカーファイルを作成するようにdocker-compose.ymlを変更してください。このexempleで

version: '2' 
services: 
    wordpress: 
     build: 
      context: ./ 
      dockerfile: ./Dockerfile 
     links: 
      - db:mysql 
      - mailhog 
     ports: 
      - 80:80 
     domainname: foo.com 
     hostname: foo 
     volumes: 
      - ./public:/var/www/html 
     environment: 
      WORDPRESS_DB_PASSWORD: example 
     depends_on: 
      - mailhog 

    mailhog: 
     image: mailhog/mailhog 
     ports: 
      - 1025:1025 
      - 8025:8025 

    db: 
     image: mariadb 
     environment: 
      MYSQL_ROOT_PASSWORD: example 

、あなたが書かれているdockerfileは「Dockerfile」と命名されなければならないと(あなたがドッカ-COMPOSEを実行)、カレントディレクトリになければなりません。それに応じてパスを変更することができます。ホストから接続する必要がない場合は、1025:1025ポートのエントリを削除できます。

mail()関数は意図したとおりに動作するはずです。

+0

これは非常に有望な@Dinacelに見えますが、「メール機能をインスタンス化できませんでした」というエラーが発生しています。 sendmail_pathが正しく設定されており、phpinfoに表示されます。私はWPコンテナにsshし、mhsendmailを実行しようとすると何も表示されません。 – Kubitomakita

+0

こんにちは、いくつかのエラーがあったので、私はDockerfileを修正しました: 'usr/local/etc/php/conf.d/mailhog.ini'は絶対パスの定義を確実にするために開始スラッシュを持っていませんでした。 mailboxには正しいホスト名がありませんでした。 – Dinacel

+0

残念ながらメールボックスホストではまだ動作しません。私もlocalhostを試しましたが、運はありませんでした。システムログにエラーはありません。単にPHPMailerが "メール機能をインスタンス化できませんでした"と言います。 – Kubitomakita

関連する問題