Docker подключить Mail Catcher с WordPress
Я хочу установить sendmail_path
в контейнере WordPress и использовать 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
Я пытался выполнить command: "echo 'sendmail_path = \"/usr/local/bin/mailhog sendmail\"' > /usr/local/etc/php/conf.d/mail.ini"
на контейнере WordPress, но он на самом деле печатает его...
Эти два должны разделить объемы?
PS. Я знаю, что могу использовать его в качестве SMTP-сервера в приложении, но я хочу иметь дело с этим более автоматизированным способом.
1 ответ
У вас не установлен почтовый ящик в контейнере WordPress, путь /usr/local/bin/mailhog
не выходит
То, что вы хотите сделать, это отправка почты через sendmail, и эта почта должна быть перехвачена mailhog. Для этого вы должны расширить dockerfile wordpress:
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
создать свой докер-файл.
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
В этом примере записанный вами файл Docker должен иметь имя "Dockerfile" и находиться в текущем каталоге (где вы запускаете docker-compose). Вы можете изменить путь соответственно. Вы можете удалить запись портов 1025:1025, если вам не нужно подключаться к ней с хоста.
Теперь функция mail() должна работать как положено.