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()应该按照预期工作。