アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

LAMP環境をDockerで構築してみよう!

Featured image of the post

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の情報画面が表示されれば成功です!

Image in a image block

続けて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にアクセスし以下のように表示されていたら成功です。

Image in a image block

まとめ

LAMP環境をDockerで構築することで、開発効率が大きく向上します。

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

あなたを爆速で成長させるメンタリングプログラムはこちらから↓↓

RUNTEQ(ランテック) - 実践型Webエンジニア養成プログラミングスクールの入会