Docker使用WordPress连接邮件捕手

问题描述 投票:1回答:1

我想在WordPress的容器中设置一个sendmail_path并使用另一个容器提供的sendmail。在我的情况下它的MailHog。

所以这是我的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容器上执行command: "echo 'sendmail_path = \"/usr/local/bin/mailhog sendmail\"' > /usr/local/etc/php/conf.d/mail.ini",但它实际打印出来...

这两个是否必须共享卷?

PS。我知道我可以将它用作APP中的SMTP服务器,但我想以更自动化的方式处理它。

wordpress docker docker-compose mailcatcher
1个回答
3
投票

你没有在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 [email protected]"' > /usr/local/etc/php/conf.d/mailhog.ini

请注意--smtp-adrr参数:它必须采用<mailhog_hostname>:<mailhog_port>格式。

更改你的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()应该按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.