在使用Docker搭建WordPress时,无法发送电子邮件
请问有什么困扰吗?
在使用EC2实例上的Docker(docker-compose)构建WordPress时,无法通过Wordpress进行电子邮件发送,用于进行设置更改或查询。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:5.6
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
由于Docker的WordPress镜像中不包含邮件发送功能(sendmail),因此无法发送邮件。
解决
以下是一种方法,可以安装sendmail来发送邮件,而不使用SMTP服务器。
FROM wordpress:5.6
# sendmailをインストール
RUN apt-get update \
&& apt-get install -y --no-install-recommends sendmail \
&& rm -rf /var/lib/apt/lists/*
# sendmailをphpで使うための設定
RUN echo "sendmail_path=sendmail -t -i" >> /usr/local/etc/php/conf.d/sendmail.ini
# エントリポイントとして使用するスクリプトを作成
RUN echo '#!/bin/bash' >> /usr/local/bin/docker-entrypoint-wrapper.sh \
&& echo 'set -euo pipefail' >> /usr/local/bin/docker-entrypoint-wrapper.sh
# 1. /etc/hostsにコンテナホスト名のlocalhostエントリを作成
RUN echo 'echo "127.0.0.1 $(hostname) localhost localhost.localdomain" >> /etc/hosts' >> /usr/local/bin/docker-entrypoint-wrapper.sh
# 2. sendmailの再起動
RUN echo 'service sendmail restart' >> /usr/local/bin/docker-entrypoint-wrapper.sh
# 3. docker-entrypoint.shを呼ぶ
RUN echo 'exec docker-entrypoint.sh "$@"' >> /usr/local/bin/docker-entrypoint-wrapper.sh \
&& chmod +x /usr/local/bin/docker-entrypoint-wrapper.sh
ENTRYPOINT ["docker-entrypoint-wrapper.sh"]
CMD ["apache2-foreground"]
请提供上述参考代码的中文原生释义。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
build:
context: .
dockerfile: ./Dockerfile
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}