ComposeはLAMP環境も手軽に作ることができます。今回はApache、MySQL、PHPでLAMP環境を作ります。Composeを使ってWordPressが動作する環境を作る記事を掲載しました。その環境もWordPressが動作するので広く見るとLAMP環境となりますが、WordPressの公式イメージがPHPとApacheの動作環境も含んでいるため、個別にイメージを設定する必要はありませんでした。コンテナを起動すると同時にWordPress環境も作成されるので、WordPressを個別にインストールする必要もないし、WordPressに必要なPHPの環境も同時に作成されます。利点としてはApacheやPHPを個別にイメージ設定する必要がないのもそうですが、WordPressの公式イメージが動作に必要なPHP環境を含んでいるため、別途で必要なPHPライブラリのインストールなども必要ありませんでした。今回は、WordPressの公式イメージを使わない純粋なLAMP環境を作成します。PHPの公式イメージはすべての拡張ライブラリを含んではいないので、必要に応じてインストールしなければなりません。この場合の利点は、このLAMP環境ではいくらでもWordPressをインストールしたり、WordPress以外のLAMP環境で動作するWebアプリをいくらでも作成できることです。今回はApache、MySQL、PHPの動作するLAMP環境を作ります。それぞれのバージョンは以下です。Apache2.4MySQL5.7PHP7.3この環境が動作するのに使用するサブフォルダを(ここでは”docker-lamp”とします)作ります。そこにdocker-compose.ymlファイルを保存します。他にはPHPの設定ファイル(php.ini)とPHPの拡張ライブラリをいくつかインストールするので、イメージをビルドするためのDockerfileをこのフォルダ配下に保存します。全体のフォルダ構成は以下となります。PHPのビルド情報と設定が格納されているフォルダdocker-compose.ymlの内容は以下です。{}MySQLは5.7のイメージをダウンロードし、”db_data”としてデータを永続化しています。phpMyAdminを使ってDBを操作できるようにしています。PHPは拡張ライブラリをインストールするためと、php.iniの設定を変更するためにDockerfileを使ってイメージをビルドしています。mysqlサービスimage:mysql:5.75.7のイメージをダウンロードしてコンテナを実行します。db_data:/var/lib/mysqlデータベースの内容を”db_data”にマウントします。Mac/Windowsやデーモンを再起動したときでもコンテナを自動的に再起動します。'password'rootのパスワードを設定します。mysqlmysqlサービスと依存関係を設定します。することでmysqlが起動したあとでphpMyAdminサービスが起動します。phpmyadmin/phpmyadminphpMyAdminの公式イメージをダウンロードして起動します。mysql使用するデータベースをサービス名で設定します。ここでは”mysql”となります。Mac/Windowsやデーモンを再起動したときでもコンテナを自動的に再起動します。"8080:80"ホスト側のポートとコンテナ側のポートをマッピングします。この場合はホスト側ブラウザで8080ポートでアクセスできるようにマッピングしています。./phpphpフォルダ配下にあるDockerfileを読み込みその内容に従ってイメージをビルドします。iconvPHPの公式イメージ”7.3-apache”を使ってビルドします。起動時にホスト側のphp.iniをコンテナにコピーして使用します。iconv”のライブラリをインストールします。libpng-dev”をインストールしておかないとエラーとなるため先にインストールしています。拡張ライブラリはそれぞれ以下です。文字セット変換LAMP環境にWordPressをインストールすることを想定するとこれだけあればいいかと思います。./htdocs:/var/www/htmlホスト側の”htdocs”ディレクトリとコンテナ側のApacheのWebページ先頭ディレクトリをマウントしています。これでWebページのファイルをhtdocsフォルダに作成すればブラウザで表示できます。Mac/Windowsやデーモンを再起動したときでもコンテナを自動的に再起動します。"80:80"ホスト側のポートとコンテナ側のポートをマッピングします。この場合はホスト側ブラウザでポート番号を指定せずアクセスできるようにマッピングしています。mysqlmysqlサービスと依存関係を設定します。することでmysqlが起動したあとでphp-apacheサービスが起動します。{}mysqlでマウントしているdb_dataをこの設定で永続化しています。することで、コンテナを停止してもデータベースの内容を保持することができます。起動docker-compose.ymlファイルが作成できたらdocker-lampフォルダに移動し、以下のコマンドで起動します。-d最初はイメージとコンテナの作成で少し時間がかかるかと思います。起動できたら以下のコマンドで状態を見てみましょう。...Stateが「Up」になっていれば起動しています。起動できたら、それぞれのコンテナが動作しているか確認してみましょう。ApachePHPMySQLの動作確認となります。Apacheの動作確認です。docker-lampフォルダ配下のhtdocsフォルダに表示確認用のHTMLファイルを作成します。</body></html>ファイル名をindex.htmlで保存したら、ブラウザで「http://localhost/index.html」にアクセスしてみましょう。World!!」が表示されればApacheは動作しています。次にPHPが動作しているか確認しましょう。以下の内容を「info.php」ファイル名でhtdocsフォルダに保存します。<?phpphpinfo();?>ブラウザで「http://localhost/info.php」にアクセスします。このようなPHPの情報が表示できればPHPは動作しています。次にMySQLが動作しているか確認しましょう。mysqlのコンテナでbashを実行します。ps」コマンドでMySQLのコンテナ名を確認してコマンドを入力します。実行するとコマンドプロンプトが「#」に変わるので、そこで以下のコマンドを入力してmysqlへログインします。-pパスワードの入力が求められるので、docker-compose.ymlファイルに設定したrootのパスワードを入力してください。ログインできるとmysqlのプロンプトが表示されます。mysql>バージョンを表示させてみましょう。sec)終了は以下のコマンドです。exit最後にphpMyAdminが動作しているか確認しましょう。ブラウザで「http://localhost:8080」でアクセスしてください。phpMyAdminのログイン画面が表示されれば動作しています。rootでログインできるか確認してください。パスワードは先程と同じくdocker-compose.ymlファイルに設定したパスワードを入力してください。しているコンテナを停止するには以下のコマンドを実行します。stopこの場合はコンテナは停止しますが残っています。0コンテナを削除する場合は以下のコマンドを実行します。downこのコマンドでコンテナを削除しても作成・編集したデータベースは「volumes」で永続化しているので削除されません。データベースも含めて削除したい場合は以下のコマンドを実行します。--volumesまたダウンロードしたイメージを削除する場合は、コンテナの削除後に以下のコマンドを実行します。[イメージID]>最後にDockerでLAMP環境を用意すると、WordPressだけではなくLAMP環境で動作するその他のWebアプリを開発する環境として使うことができます。以前の記事でWordPressを複数設定する例を記載しましたが、あの場合だとそれぞれ違うポート番号を割り当てる必要がありました。作ったLAMP環境にWordPressをインストール方法だとフォルダを作成するだけでいくつでもWordPressをインストールできます。複数のWordPressを同時に扱いた時はこのほうがおすすめです。CodeAidについて。