php - PHP 使用 MailHog 从 docker 容器发送邮件
问题描述
我想用于 Prestahop 的本地开发。为了测试电子邮件,我想使用 MailHog 容器。在 prestahop 容器中使用 docker php 图像。我尝试在 prestashop 容器中安装 sendmail,但看起来在 docker-compose up 后 sendmail 没有安装
我的码头工人撰写
version: '2'
services:
prestashop:
build: ./docker/prestashop
ports:
- 80:80
links:
- mariadb:mariadb
depends_on:
- mariadb
volumes:
- ./docker/common:/scripts
- ./src:/var/www/html
- ./src/modules:/var/www/html/modules
- ./src/themes:/var/www/html/themes
- ./src/override:/var/www/html/override
environment:
- PS_DEV_MODE=1
- DB_SERVER=mariadb
- DB_USER=root
- DB_PASSWD=root
- DB_NAME=prestashop
- PS_INSTALL_AUTO=0
mariadb:
build: ./docker/mariadb
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=prestashop
volumes:
- ./data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mariadb
ports:
- 81:80
environment:
- PMA_HOST=mariadb
- PMA_USER=root
- PMA_PASSWORD=root
mailhog:
container_name: mailhog
image: mailhog/mailhog
restart: always
ports:
- 1025:1025
- 8025:8025
Dockerfile 看起来像
FROM prestashop/prestashop:latest
RUN yes | pecl install xdebug-2.5.5 \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_connect_back=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "file_uploads=On" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "memory_limit=128M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "upload_max_filesize=64M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "post_max_size=64M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "max_execution_time=600" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "max_input_vars=10000" >> /usr/local/etc/php/conf.d/custom.ini \
&& echo "error_reporting-1" >> /usr/local/etc/php/conf.d/custom.ini \
&& echo "display_errors = On" >> /usr/local/etc/php/conf.d/custom.ini \
&& echo "sendmail_path = sendmail -S mailhog:1025" >> /usr/local/etc/php/php.ini
RUN apt-get install - y sendmail
RUN usermod -u 1000 www-data
RUN chown 1000 /var/www -R
这个 docker 容器的正确配置是什么?
解决方案
我用这个解决了这个配置:
Dockerfile:
FROM prestashop/prestashop:1.6.1.16
RUN apt-get update && apt-get install -q -y ssmtp mailutils && rm -rf /var/lib/apt/lists/*
RUN echo "hostname=localhost.localdomain" > /etc/ssmtp/ssmtp.conf
RUN echo "root=root@presta.com" >> /etc/ssmtp/ssmtp.conf
RUN echo "mailhub=mailhog:1025" >> /etc/ssmtp/ssmtp.conf
RUN yes | pecl install xdebug-2.5.5 \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_connect_back=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "file_uploads=On" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "memory_limit=128M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "upload_max_filesize=64M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "post_max_size=64M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "max_execution_time=600" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "max_input_vars=10000" >> /usr/local/etc/php/conf.d/custom.ini \
&& echo "error_reporting-1" >> /usr/local/etc/php/conf.d/custom.ini \
&& echo "display_errors = On" >> /usr/local/etc/php/conf.d/custom.ini \
&& echo "sendmail_path=/usr/sbin/ssmtp -t" >> /usr/local/etc/php/conf.d/php-sendmail.ini
RUN echo "localhost localhost.localdomain" >> /etc/hosts
RUN usermod -u 1000 www-data
RUN chown 1000 /var/www -R
码头工人-compose.yml
version: '3'
services:
mysql:
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=prestashop
volumes:
- ./data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 81:8080
prestashop:
container_name: prestashop
build: ./docker/prestashop
ports:
- 8080:80
links:
- mysql
depends_on:
- mysql
volumes:
- ./:/var/www/html
environment:
- PS_DEV_MODE=1
- DB_SERVER=mysql
- DB_USER=root
- DB_PASSWD=root
- DB_NAME=prestashop
- PS_INSTALL_AUTO=
mailhog:
container_name: mailhog
image: mailhog/mailhog
restart: always
ports:
- 1025:1025
- 8025:8025
推荐阅读
- sap-cloud-sdk - SAP Cloud SDK VDM 生成器是否正确处理 EDMX 注释?
- jquery - jQuery 禁用 preventDefault
- visual-c++ - 从 Visual Studio 2008 升级到 Visual Studio 2019 时单选按钮未正确呈现?
- json - 将 JSON 列表发送到 Spring 控制器会导致 null 值
- python - 我想关联来自不同 DataFrame 的多列
- git - IntelliJ IDEA 中的“Revert Commit”和“Undo Commit”有什么区别?
- python - 有什么方法可以计算python中的平均日期时间并将其可视化吗?
- python - python 3中非常大的数字除法
- python - batch_normalization 中尺寸错误的 beta
- excel - 突出显示属于某个列标题的行的最小值