Docker connect邮件捕获器与WordPress

Docker connect邮件捕获器与WordPress,wordpress,docker,docker-compose,mailcatcher,Wordpress,Docker,Docker Compose,Mailcatcher,我想在WordPress容器中设置sendmail_路径,并使用另一个容器提供的sendmail。就我而言,是邮递员 这是我的docker compose: version: '2' services: wordpress: image: wordpress links: - db:mysql - mailhog ports: - 80:80 domai

我想在WordPress容器中设置sendmail_路径,并使用另一个容器提供的sendmail。就我而言,是邮递员

这是我的docker compose:

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容器上执行命令:echo'sendmail\u path=\/usr/local/bin/mailhog sendmail\'>/usr/local/etc/php/conf.d/mail.ini,但实际上它会打印它

这两个必须共享卷吗


另外,我知道我可以将其用作应用程序中的SMTP服务器,但我希望以更自动化的方式处理它。

您没有在WordPress容器中安装MailHog,因此路径/usr/local/bin/MailHog不存在

你要做的是通过sendmail发送电子邮件,这些电子邮件必须被MailHog捕获。为此,必须扩展WordPress Dockerfile:

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 --from=no-reply@docker.dev"' > /usr/local/etc/php/conf.d/mailhog.ini
注意-smtp addr参数的格式必须为:

更改docker-compose.yml以生成Dockerfile

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,并且必须位于运行docker compose的当前目录中。您可以相应地更改路径。如果不需要从主机连接到1025:1025端口条目,则可以删除该条目


现在,mail功能应该可以正常工作。

您没有在WordPress容器中安装MailHog,因此/usr/local/bin/MailHog路径不存在

你要做的是通过sendmail发送电子邮件,这些电子邮件必须被MailHog捕获。为此,必须扩展WordPress Dockerfile:

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 --from=no-reply@docker.dev"' > /usr/local/etc/php/conf.d/mailhog.ini
注意-smtp addr参数的格式必须为:

更改docker-compose.yml以生成Dockerfile

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,并且必须位于运行docker compose的当前目录中。您可以相应地更改路径。如果不需要从主机连接到1025:1025端口条目,则可以删除该条目


现在邮件功能应该可以正常工作。

这看起来非常有希望@Dinacel,但我发现无法实例化邮件功能错误。我已经正确设置了sendmail_路径,并且它在phpinfo中可见。当我ssh到WP容器中并尝试运行mhsendmail时,它没有显示任何内容。您好,我已修复Dockerfile,因为出现了一些错误:usr/local/etc/php/conf.d/mailhog.ini没有起始斜杠以确保绝对路径定义,它是一个输入错误,-smtp addr=mailserver:1025在您的示例中它必须是mailhog,不是我写的mailserver没有正确的主机名不幸的是,它仍然不能与mailhog主机一起工作。我也尝试了localhost,但没有成功。系统日志中没有错误,只是PHPMailer说无法实例化邮件功能。它在这里工作,没有任何其他修改。wordpress dockerfile是否成功构建?您是否更改wordpress的基本配置?是否安装了第三方插件?你能发送你的phpinfo和wordpress错误日志吗?真奇怪。我下次再查。哪个程序将读取/usr/local/etc/php/conf.d/mailhog.ini?我有一个。这看起来很有希望@Dinacel,但我发现无法实例化邮件函数错误。我已经正确设置了sendmail_路径,并且它在phpinfo中可见。当我ssh到WP容器中并尝试运行mhsendmail时,它没有显示任何内容。您好,我已修复Dockerfile,因为出现了一些错误:usr/local/etc/php/conf.d/mailhog.ini没有起始斜杠以确保绝对路径定义,它是一个输入错误,-smtp addr=mailserver:1025在您的示例中它必须是mailhog,不是我写的mailserver没有正确的主机名不幸的是,它仍然不能与mailhog主机一起工作。我也尝试了localhost,但没有成功。系统日志中没有错误,只是PHPMailer说无法实例化邮件功能。它在这里工作,没有任何其他修改。wordpress dockerfile是否成功构建?您是否更改wordpress的基本配置?是否安装了第三方插件?你能发送你的phpinfo和wordpress错误日志吗?真奇怪。我下次再查。哪个程序将读取/usr/local/etc/php/conf.d/mailhog.ini?我有一本书。