Webアプリケーションの開発環境として広く使われている「LAMP環境」。LAMPとは、Linux、Apache、MySQL、PHPの頭文字をとったもので、サーバーサイド開発の基礎ともいえる構成です。従来は各ソフトウェアをローカルにインストールして構築していましたが、Dockerを使えば、より簡単に、より柔軟に環境を構築することができます。
今回は、Docker Composeを使ってLAMP環境を構築する手順を解説します。
なぜDockerで構築するのか?
Dockerの最大の利点は、環境の再現性とポータビリティです。
開発者同士で同じ環境を簡単に共有できるだけでなく、本番環境に近い構成をローカルでも再現することができます。特にLAMPのように複数のサービスが関わる環境では、Docker Composeのようなツールが威力を発揮します。
必要なディレクトリ構成
まず、以下のようなディレクトリを用意しましょう。
lamp-docker/
├── docker-compose.yml
├── web/
│ └── Dockerfile
├── html/
│ └── index.php
この構成で、ApacheとPHPをそれぞれ別のコンテナで管理し、MySQLはdocker-compose.ymlで設定します。
docker-compose.yml の設定
version: '3.8'
services:
web:
build: ./web
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
depends_on:
- db
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: sampledb
MYSQL_USER: user
MYSQL_PASSWORD: userpass
ports:
- "3306:3306"
この設定では、Apacheが8080ポートで外部に公開され、PHPコンテナと連携してWebページを表示します。MySQLは環境変数で初期設定され、アプリケーションからすぐに接続できる状態になります。
webのDockerfile
web/Dockerfile
FROM php:7.4-apache
RUN docker-php-ext-install mysqli
動作確認
htmlディレクトリに index.php
を以下のように記述して、動作を確認してみましょう。
<?php
phpinfo();
?>
ターミナルで以下のコマンドを実行してコンテナを立ち上げます。
docker-compose up --build
ブラウザで http://localhost:8080
にアクセスし、PHPの情報画面が表示されれば成功です!

続けてhtmlディレクトリに db-test.php
を作成しMySQLとの接続もテストしてみましょう。
<?php
$host = 'db';
$user = 'user';
$password = 'userpass';
$dbname = 'sampledb';
$conn = new mysqli($host, $user, $password, $dbname);
if ($conn->connect_error) {
die("❌ MySQL接続失敗: " . $conn->connect_error);
}
echo "✅ MySQL接続成功!<br>";
$result = $conn->query("SHOW TABLES");
echo "<h3>📋 現在のテーブル一覧:</h3>";
while ($row = $result->fetch_array()) {
echo $row[0] . "<br>";
}
$conn->close();
?>
http://localhost:8080/db-test.php
にアクセスし以下のように表示されていたら成功です。

まとめ
LAMP環境をDockerで構築することで、開発効率が大きく向上します。
コンテナごとに役割を分離することで保守性も高まり、チーム開発にも適しています。Dockerに慣れていない方でも、今回のように docker-compose.yml
を用意するだけで手軽に環境構築が可能です。ぜひ一度試してみてください!