Docker连接邮件捕获器与WordPress

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

所以这是我的docker组成:

 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。 我知道我可以使用它作为应用程序中的SMTP服务器,但我想以更自动的方式处理它。

您没有在wordpress容器中安装mailhog,path/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-adrr参数:它必须采用<mailhog_hostname>:<mailhog_port>

更改您docker-compose.yml来构build您的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的位置)。 您可以相应地更改path。 如果您不需要从主机连接到1025:1025端口条目,则可以将其删除。

现在函数mail()应该按照预期工作。