Docker connect邮件捕获器与WordPress
我想在WordPress容器中设置sendmail_路径,并使用另一个容器提供的sendmail。就我而言,是邮递员 这是我的docker compose: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
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?我有一本书。