DockerでXAMPPやMAMPと同じローカル開発環境を構築する方法を徹底解説(docker-compose-lamp)
みなさんこんにちは!エンジニアの高澤です!
今回はdocker-compose-lamp(Docker)でXAMPPと同じローカル環境を構築する方法について解説していきたいと思います。
今やローカルでの開発環境を構築するのに主流でかつモダンなツールはDockerといっても過言ではありません。ただ、もちろんXAMPPやMAMPをお使いの方もたくさんいらっしゃるかと思います。
ただ、ご自身の開発メンバーとのチーム開発や会社などのさまざまな事情でXAMPPなどをPCにインストールできないことがあるかと思います。
そんな時に便利なのがDockerです。Dockerはコマンドひとつで簡単に開発環境を作れる優れもので、OSごとの違いによる問題解決や、チーム開発でのメンバーごとに同等の開発環境を再現できたりとさまざまなメリットがあります。
筆者も前まではMAMPを中心に使っていた時期がありましたら、今じゃこのDocker(docker-compose-lamp含め)しか使っていません。
また、初心者の方にはDockerって難しいのではないか?と思っていらっしゃる方もいるかもしれませんが、まったく難しくありません。ご安心ください。
当記事ではdocker-compose-lampとは何か?やメリット・デメリット、XAMPPやMAMPとの比較、使い方などをわかりやすく解説し、お仕事ですぐに使えるように構成いたしました。
よろしければぜひご活用ください。
目次
docker-compose-lampとは
docker-compose-lamp
とは、LAMP(Linux, Apache, MySQL, PHP)スタックの開発環境を簡単にセットアップするための Docker Composeテンプレートを提供するリポジトリのことをいいます。
つまり、Docker(Docker Compose)でXAMPPやMAMPと同じ開発環境を作れるツールのことをいいます。
docker-compose-lampはDockerという技術によって構成され、さらにDocker Composeという仕組みによって利用できるようになっております。
docker-compose-lamp
を利用することで、Docker Composeコマンドを実行するだけで非常に簡単にXAMPPやMAMPと同等のローカルの開発環境を構築することができます。
docker-compose-lampで構築した開発環境では主に以下の内容が利用できます。
- PHP
- Apache
- MySQL
- phpMyAdmin
Docker Compose を使ってコマンド一つで、上記の内容でLAMP環境を簡単に構築することができてしまいます。
そのため、XAMPPやMAMPをわざわざPCへインストールする必要がなく、またセキュリティ的に会社の決まりでXAMPPなどの外部アプリケーションをPCへインストールすることが許可されていないなどの場合にも、docker-compose-lampを利用すれば問題なく利用することが可能です。
このdocker-compose-lampリポジトリは、GitHub 上のhttps://github.com/sprintcube/docker-compose-lampで公開されています。
URLにアクセスしていただくと、下図のようにGitHubページが表示されるかと思います。
https://github.com/sprintcube/docker-compose-lamp
上記ページからdocker-compose-lampのファイルをダウンロードして利用してもいいですし、この後解説する手順にあるGitのcloneコマンドで利用する場合は特に上記ページを閲覧する必要はありません。
ただ、英語ベースではありますがdocker-compose-lampに関する説明書きがあり、こちらのページは公式なので最新情報を追えるので定期的にチェックしていただくか、この先何かでつまづいたら確認してみることをおすすめいたします。
docker-compose-lampで開発環境を構築する方法
それでは早速、docker-compose-lampで開発環境を構築する方法について解説していきたいと思います。
構築の流れとしては以下の通りです。
- Gitをインストール
- Dockerをインストール(Docker Desktop)
- docker-compose-lampをクローン
- .envファイルを作成
- Docker Composeを起動
それぞれ解説いたします。
Gitをインストール
まずはGitをインストールしてください。
Gitとは、ソフトウェア開発において広く使用される分散型バージョン管理システムです。
ファイルやソースコードの変更履歴を記録・追跡し、過去のバージョンに戻すことや、複数人での共同開発を円滑に進めることができます。
Gitの特徴は、その軽量性と高速性、そして分散型である点です。これにより、リモートリポジトリ(例えばGitHubやGitLab)とローカル環境の双方で作業が可能になります。
また、ブランチ機能を活用すれば、新機能の開発やバグ修正を並行して進め、必要に応じて簡単に統合できます。さらに、オープンソースであるため無料で利用でき、Windows、macOS、Linuxといったさまざまなプラットフォームに対応しています。
Gitを使うことで、効率的かつ安全なコード管理が実現します。
GitをPCにインストールできたら、次はDocker(Docker Desktop)をPCにインストールしていきます。
Dockerをインストール(Docker Desktop)
次に、Dockerをインストールして、ご自身のPCでDockerやDocker Composeのコマンドを実行できる環境を作っていきます。
当記事では、Dockerのインストール方法としてDocker Desktopを利用いたします。
Docker Desktopとは、PCにインストールするだけでDocker環境を導入できる最も簡単でメジャーなデスクトップアプリです。
このDocker Desktopをインストールするには、こちらのDocker Desktop公式サイトからインストーラーをダウンロードして導入してください。
ページを開いていただきましたら、「Docker Desktopをダウンロードする」ボタンをクリックしていただき、自分のOSに適した項目をクリックしてインストーラーをダウンロードします。
インストーラーを実行して案内に従ってインストールを進めます。インストール完了後、Docker Desktopを起動します。
Docker Desktopを起動したら、もうDockerのコマンドなどを利用することができます。
ターミナルまたはコマンドプロンプトを開き、以下のコマンドを実行してDockerが正しく動作しているか確認します。
docker --version
無事バージョンが表示されたら導入完了です。
Dockerのインストール方法については以下の記事で詳しく解説しておりますので、必要であればご確認ください。
docker-compose-lampをクローン
docker-compose-lampは、LAMP環境を簡単にセットアップするためのプロジェクトテンプレートです。これをGitのクローンで取得します。
ターミナルまたはコマンドプロンプトを開いていただき、作業フォルダを作成していきます。
まずはデスクトップへ移動してください。
cd desktop
docker-compose-lampリポジトリをクローンします。
git clone https://github.com/sprintcube/docker-compose-lamp.git
クローンで作成されたプロジェクトフォルダ「docker-compose-lamp」にカレントディレクトリを移動します。
cd docker-compose-lamp
ここまで進めていただけましたら、docker-compse-lampファイル内に以下の内容でファイルが作成されているのが確認できるかと思います。
次に.envファイルを作成していきますので、カレントディレクトリはこのままにしておいてください。
.envファイルを作成
次は、.envファイルを作成します。
.env
ファイルは環境設定用のファイルです。このファイルを作ることで、必要な設定を簡単に管理できます。
現在のプロジェクトフォルダ内(docker-compose-lampフォルダ内)で以下のコマンドを実行して.env
ファイルを作成します。
cp example.env .env
これで下図のように、隠しファイルなので少し見えづらいですが、「.env」ファイルが作成されているのが確認できるかと思います。
ここまでで、docker-compose-lampのセットアップは完了です!あとはコマンドで起動するだけでLAMP環境を作成できます。
Docker Composeを起動
最後に、セットアップが完了したので、Docker Composeを使ってLAMP環境を起動します。
現在のプロジェクトフォルダ内(docker-compose-lampフォルダ内)で以下のコマンドを実行してください。
docker-compose up -d
上記コマンドの「-d」
オプションはバックグラウンドで起動するためのものです。
初回の実行時は必要なイメージがダウンロードされるため、数分かかることがあります。
もし処理が完了したらターミナル(もしくはコマンドプロンプト)にて下図のように処理の完了が表示されます。
処理が完了したら、無事LAMP環境が使えるようになっております。お疲れ様でした!
また、もし起動中のコンテナを確認したい場合は以下のコマンドを実行することで現在実行中のコンテナを確認することができます。
docker-compose ps
上記コマンドを実行すると、下図のように現在実行中のコマンドの一覧が表示されます。
上記のように、「NAME」列に「lamp-mysql8」「lamp-php83」「lamp-phpmyadmin」「lamp-redis」が確認できたら、無事AMP環境が実行中となります。
構築した開発環境を確認する方法
LAMP開発環境の構築と実行ができたら、動作確認をしてみましょう。
開発作業で利用するwwwディレクトリ
まずは、開発作業で利用するwwwディレクトリを確認する場合は以下に示すURLをブラウザからアクセスしてください。
上図のように、トップページが表示されるかと思います。
こちらのトップページは、下図のdocker-compose-lampファイルの「www」ファイル内にある「index.php」になります。
「www」ディレクトリ内の中身は下図になります。
ちなみに上図の階層は以下のパスになります。
docker-compose-lamp/www/
実際にLAMP環境にてアプリケーション開発やサイト開発(WordPress等)をする場合はこの「www」内にてファイルを作成したりして作業を行います。
この階層にあるデフォルトのPHPファイルやassetsフォルダは削除してしまっても問題ございません。
ちなみにWordPress開発を行う際は、この「www」ディレクトリにダウンロードしたWordPress本体ファルを配置し、セットアップを行います。
phpMyAdminのデータベース操作画面
次にXAMPPやMAMP、レンタルサーバーにてお馴染みのphpMyAdminの操作画面ページを確認する場合は以下に示すURLをブラウザからアクセスしてください。
http://localhost:8080(ポートを8080で設定した場合)
phpMyAdminの操作画面ページでは、データベースやテーブル、データなどの作成が画面操作で行うことができる開発者にはお馴染みのツールです。
ちなみに「8080」のポートは、docker-compose-lampファイル内のdocker-compose.ymlファイルにて変更できますので、必要であればご自身の状況に適したポートに変更してください。
phpinfo(PHPメタ情報)確認ページ
これまたお馴染みのPHPメタ情報を確認するためのページであるphpinfoページを確認する場合は以下に示すURLをブラウザからアクセスしてください。
このphpinfoページから、現在の開発環境のPHPバージョンやWebサーバー情報などを確認することが可能です。
phpinfo.php
は、PHPの設定情報や環境情報を確認するための便利なPHPファイルです。通常、開発者がPHPが正しく動作しているかを確認したり、インストールされているモジュールや設定値を調べたりする目的で使用されます。
何か困った時があればこちらの情報が役立つことが多いにあります。
構築したLAMP環境のファイル構成
docker-compose-lampで構築したLAMP環境のファイル構成を解説いたします。
docker-compose-lamp
のディレクトリには、以下の主要なファイルがあります。
docker-compose.yml | Docker Composeの設定ファイル。各サービス(Apache, MySQL, PHPなど)の構成が記述されています。 |
config/ | ApacheやMySQLの設定ファイルが含まれるディレクトリ。 |
www/ | Webサーバーのルートディレクトリ(Apacheが読み込むファイルを配置)。 |
.env | 環境変数を定義するファイル。 |
開発作業において主に使用するのは「www/」になるかと思います。
PHPファイルやWordPressファイルなどを設置する場所(作業場所)
PHPファイルやWordPressファイルなどを設置する場所は以下の階層になります。
docker-compose-lamp/www/
# www/の中にPHPファイルやWordPress本体ファイルなどを設置してセットアップする
下図でいうところの、一番下の「www」です。
「www」内に、PHPファイルやJavaScriptファイル、画像ファイルなどのアセットなどを配置させることによって、Webサイトやアプリケーションの構築作業を行うことができます。
ちなみにdocker-compose-lampを利用すれば、WordPress環境も簡単に構築できます。
www/
ディレクトリにWordPress本体ファイルを配置し、.env
ファイルやdocker-compose.yml
を適切に設定すれば、手軽にカスタマイズされたLAMP環境を利用できます。
WordPressの運用後もphpMyAdminやログファイルを活用して問題を解決できるよう準備しておきましょう。
作業後に必要な対応(コンテナの停止など)
docker-compose-lampで構築したLAMP環境にて開発作業が終わったら、作業終わりにやるべきことがあります。それはコンテナの停止です。
ブラウザで http://localhost
にアクセスしてApacheが動作していることを確認します。
上図のように表示されていれば、Apacheが動作していることがわかります。動作したままだとPCのリソースなどを無駄に使ってしまうので、作業後はコンテナを停止するようにします。
停止する場合は、以下のコマンドを実行します。
docker-compose down
実行したら、以下のように処理が行われたことが確認できます。
ここまでで、docker-compose-lampでの開発作業のライフサイクルは終わりになります。
次にまたLAMP環境で開発作業を行う時は、これまで解説した内容と同じように、作成したdocker-compose-lampファイルにカレントディレクトリを移動していただき、「docker compose up -d」を実行してください。
DockerとXAMPP・MAMPのメリット・デメリット
ここでは、XAMPPやMAMP、docker-compose-lampを利用するメリット・デメリットについて解説いたします。
もしかしたら当記事を読んでいる方はdocker-compose-lampを導入すべきか、XAMPPやMAMPを導入すべきか悩んでいる方が多いかと思います。
ここではそれぞれのメリット・デメリットを解説し、会社やご自身のプロジェクトにおいて導入すべきかの判断材料になるように構成して解説いたしました。
よろしければぜひご確認ください。
DockerとXAMPP・MAMPのメリット
まずはDocker(docker-compose-lamp)のメリットについて解説いたします。
そもそもDockerの専門用語(コンテナ、イメージ、ボリューム、マウントなど)がでてくるため、事前にご確認いただくことをおすすめします。
まずはDockerのメリットですが、結論から言ってしまえば以下の内容がそもそもDocker(docker-compose-lamp)を利用するメリットです。わかりやすいように表にまとめました。
メリット | 内容 |
---|---|
環境の再現性が抜群 | Dockerでは、環境設定をコード化(Dockerfileやdocker-compose.yml)できるため、同じ環境を他のマシンでも簡単に再現できます。これにより、開発者全員が同じ条件で作業を行えるため、「自分の環境では動いたのに、他の環境では動かない」といった問題を防げます。 |
インストール不要 | XAMPPやMAMPのようにPCに直接インストールする必要がなく、Dockerをインストールしていればコンテナを起動するだけで必要な環境が整います。これにより、会社のセキュリティポリシーや権限の制約でソフトウェアをインストールできない場合にも柔軟に対応できます。 |
OS非依存 | DockerはホストOSが異なってもコンテナ内で同じ動作を保証します。例えば、Windows、macOS、Linuxの各OS間であっても、Dockerコンテナは同じ動作環境を提供できるため、チーム開発において非常に有効です。 |
柔軟なカスタマイズ | Dockerでは、必要なバージョンのソフトウェアを指定して構築できます。例えば、PHP 7.4の環境が必要なプロジェクトと、PHP 8.1が必要なプロジェクトを別々のコンテナで動かすことができます。これにより、複数のプロジェクトを並行して管理することが容易になります。 |
セキュリティと隔離性 | Dockerでは、必要なバージョンのソフトウェアを指定して構築できます。例えば、PHP 7.4の環境が必要なプロジェクトと、PHP 8.1が必要なプロジェクトを別々のコンテナで動かすことができます。これにより、複数のプロジェクトを並行して管理することが容易になります。 |
迅速なセットアップ | Dockerイメージを用意しておけば、新しい開発者がプロジェクトに参加する際でも、数分で環境をセットアップすることができます。これにより、オンボーディングの効率化が図れます。 |
本番環境と統一 | 開発環境をDockerで構築しておけば、本番環境でも同じDockerイメージを使用することで環境の差異を最小限に抑えることができます。本番環境でのトラブルを減らし、デプロイも効率化できます。 |
次に、XAMPPやMAMPを利用するメリットは以下になります。
メリット | 内容 |
---|---|
シンプルで初心者向け | ダウンロードしてインストールするだけで、Apache、MySQL、PHPの開発環境をすぐに利用可能。 設定がGUIで行えるため、コマンドの知識が不要。 |
ローカル開発に特化 | 単純なプロジェクトや学習目的に最適。 特にWordPressやPHPスクリプトのテストには便利。 |
軽量で手間がかからない | 複雑な設定や依存関係を意識せずに使える。 |
XAMPPやMAMPはPCにインストールするだけで自動的にLAMP環境(Linux, Apache, MySQL, PHP)を用意することができ、非常に手軽でかつシンプルです。
ただ、何か会社のセキュリティ的な事情でXAMPPやMAMPをPCにインストールできなかったり、他のマシンやチームメンバーの環境に再現するのが難しかったり、OSごとに設定が異なるなど、色々と問題が発生する可能性があります。
そんな時に大活躍するのがDockerです。
Dockerはコンテナ型の仮想化技術を利用して、必要なソフトウェア環境を軽量なコンテナとして構築・実行することができます。
DockerとXAMPP・MAMPのデメリット
次にDockerとXAMPP・MAMPのデメリットについても触れておきたいと思います。
DockerとXAMPP・MAMPのデメリットを知っておくのも、開発環境構築の手段を検討する上で大事な判断材料になります。
まずDokerのデメリットは以下になります。
デメリット | 内容 |
---|---|
学習コストが高い | Dockerの基本操作や設定、Docker Composeの理解には時間が必要。 |
リソースの消費 | ローカル開発で多数のコンテナを起動するとPCのリソースを圧迫する。 |
デバッグの難しさ | コンテナ内部での問題やネットワーク関連のトラブルが発生すると、解決が難しい場合がある。 |
設定が複雑になりがち | 初心者には設定ファイルやイメージの管理が負担になる可能性がある。 |
本番環境での運用にはさらに知識が必要 | Kubernetesなどのツールと組み合わせる際に学習が必要。 |
上記に対してXAMPPやMAMPを利用するデメリットは以下になります。
デメリット | 内容 |
---|---|
環境の移植性が低い | 他のマシンやチームメンバーの環境に再現するのが難しい。 OSごとに設定が異なる。 |
拡張性の限界 | 複雑なマイクロサービスや最新の技術(例: RedisやMongoDB)の導入が面倒。 |
本番運用には不向き | 本番環境の設定に近づけることが難しいため、開発と運用環境で不一致が生じやすい。 |
一部の操作が手動 | サーバーの起動・停止や複数プロジェクトの管理が煩雑になる場合がある。 |
このように、DockerはXAMPPやMAMPでは解決が難しい課題を克服し、現代の開発現場において不可欠なツールとして活躍しています。特にチーム開発や環境の移植性が重要なプロジェクトでは、その柔軟性と効率性が大きなメリットとなります。
このように、筆者の所感としては、XAMPPやMAMPは完全初心者向けでチーム開発ではなく個人で学習などの用途で使用する方向け、Dockerはチーム開発はもちろん個人でも開発を効率化させたりするなどの用途で使用する方向け、といったところでしょうか。
ちなみにDockerの学習コストが高いと書きましたが、エンジニアがDockerをローカル環境での開発で使用するための学習であればそこまで難しくないと思います。
実際に学習していただけるとわかりますが、とても簡単なコマンドを数点覚えて、ちょっとした仕組みさえわかってしまえば初心者でも一週間もあれば全然使いこなせるようになります。
Dockerよりの内容になってしまいましたがおすすめなのは事実なので、よろしければ参考にしていただければと思います。
まとめ
今回は、Dockerを使ったローカル開発環境の構築方法として、docker-compose-lamp
を活用する手順を解説しました。
現在、ローカル開発環境を構築する際に主流でモダンなツールとしてDockerを選ぶ開発者が増えています。その理由は、OSごとの違いを吸収したり、チーム全体で統一された環境を手軽に再現できるなど、非常に多くのメリットがあるためです。
XAMPPやMAMPを使う方も多いかもしれませんが、Dockerを使えば、PCに直接ツールをインストールする必要がなくなり、セキュリティや管理の観点からも優れた選択肢となります。筆者自身もかつてはMAMPを使っていましたが、Dockerを導入してからはその便利さと効率性から手放せなくなりました。
Dockerは一見難しそうに見えるかもしれませんが、実際にはコマンドひとつで簡単に環境を構築でき、初心者でもすぐに使い始められるツールです。本記事を参考に、ぜひDockerを使った開発環境構築にチャレンジしてみてください。これが、よりスムーズで効率的な開発の第一歩になるはずです。
ご自身のプロジェクトやチーム開発で役立つ情報になれば幸いです。
お気軽に皆さんのご要望をお聞かせください!
どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!
例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など