低価格・高品質・最速のHTMLコーディングはクロノドライブへ

WPイメージを使わないでWP用のdocker環境を立てるときに必要なこと

エンジニアリング部システムソリューション課のひよっこエンジニアKと申します。今回の記事では、WPの開発環境をWPイメージを使わずphp7.2-apacheイメージなどで作ったときに必要となってくるモジュールや設定をご紹介します。

Docker環境基本設定など

 

そもそもなんでWPイメージを使わなかったの?

デプロイ先のルート直下にwordpressを展開したい場合は、dockerの公式WPイメージを使えば問題ありません。今回はルート直下ではなく、下層ディレクトリでwordpressを展開する必要があったため、php7.2-apacheイメージで環境を作ってみました。

 

今回使ったymlファイルのご紹介

今回使ったymlファイルは以下の通りです。今回はwebコンテナの他に、dbコンテナやphpMyAdmin(pma)コンテナ、smtpコンテナを用意し、proxyでドメインを振り分けています。

pmaコンテナを用意しておくとデータベースの確認が楽に済むのでおすすめです。smtpコンテナに関しては、wpでフォームの実装を考えていない場合は特に必要ありません。

 

Docker環境追加設定・モジュールなど

それではここからwebコンテナ用のDockerfileを見ながらDocker環境の追加設定やモジュールなどを見ていきましょう。

 

Dockerfile中身

Dockerfile全貌はこんな感じです。今回は最初に記述したとおりphp7.2-apacheイメージを使用しています。途中途中で表れる追加設定部分について、以下で詳しく説明していきます。

追加設定その1:mod_rewriteの有効設定

Dockerfileの中に、以下の記述があります。

RUN a2enmod rewrite

これはmod_rewriteを有効にする設定です。これを有効にしておかないと、WPをインストールして、中でパーマリンクの設定を変えたとしても、変更が適用されません!意外と忘れがちですが、必ず記述しておきましょう。

 

追加設定その2: phpモジュールのインストール

Dockerfileの中で複数のモジュールをインストールしている箇所があると思います。

実はWP用の環境には必要なモジュールが複数あります。例えばgdなどがないと、画像をアップロードしてもサイズごとの切り出しを行ってくれません(デフォルトで用意されているmediumなどのサイズですら切り出しされない)。

必要なモジュールはWordPress公式リファレンスにまとまっているので、できるだけすべてのモジュールをインストールするように記述しましょう。実は今回私が記述したDockerfileではすべてのモジュールはインストールできていないのですが、どのモジュール不足がなんの不具合を起こすかわからない場合は、基本的にすべてのモジュールをインストールしたほうが良さそうです。

 

(番外編)smtpコンテナを使えるようにするための設定

WPにフォームの導入をしたいとき、ただsmtpコンテナを作って足しただけではsmtpは使えるようになりません。Dockerfileへの追加記述、php.iniの追加、msmtprcファイルの追加が必要です。以下で詳しく説明します。

 

Dockerfileへの追加記述

msmtp-mtaに関してはsendmailコマンドを使うときにパスを通すような役割をしてくれるため、別の場所で設定すれば特にインストールする必要はありません。

 

php.iniの追加

webディレクトリに以下のphp.iniを記述します。上記のDockerfileの追加記述の最後で読み込ませているphp.iniです。

先程msmtp-mtaをインストールしなかった場合は、以下の記述を追加する必要があります。

sendmail_path = /usr/sbin/msmtp -t -i

以下の記述がphp.iniに含まれている場合は、コメントアウト(または消去)してから上記の記述を追加するようにしてください。

sendmail_path = /usr/sbin/sendmail -t -i

 

msmtprcファイルの追加

webディレクトリに以下のmsmtprcファイルも追加します。これもDockerfileでコンテナに読み込ませています。

TLS認証チェックをONにしておくと

sendmail: TLS certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown. sendmail: could not send mail (account default from /etc/msmtprc)

というエラーが出るらしいのでOFFにしてあります。今回構築しているのはローカルの開発環境のため、TLS(SSL)の証明書が信頼できなくても特に問題はありません。そもそもSSLがローカル環境においてはあまり必要ありません。

これでコンテナをビルドし直せばOKです。

参考サイト:

Dockerの公式WordPressイメージを使い、下層ディレクトリにある既存のWordPressを動かす – Docker入門

PHP+msmtpとMailCatcherをDockerで動かす

DockerでWordPress開発環境/MSMTPでGmail経由メール送信

dockerのphp-fpmにGDとExifをインストールする

Dockerで立ち上げたwebサーバでmod_rewriteしたかった話

 

「フロントエンドエンジニアの教科書」を出版しました!HTML・CSS・JavaScript+α 次世代コーダーのための仕事術

HTMLコーダーからフロントエンドエンジニアにステップするために必要な知識と技術を解説。
現場で求められる人材となるためには、何を知っていて、何ができなければいけないのか。
Web制作の最先端にいるクロノドライブだからこそ教えられるノウハウが満載です。

出版社名:ソフトバンククリエイティブ
著者:クロノドライブ

Amazon.co.jp詳細ページへ