このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:開発環境コンテナ:PHP+Apache+MriaDB①

🐳 開発環境コンテナ:PHP+Apache+MariaDB①

Docker Composeを使って PHP+Apache+MariaDB の開発環境を構築していきましょう。
 この環境を作ることで、PHPのWebアプリケーションをMariaDBと連携させながら動作確認できます。

「開発環境コンテナ:PHP+Apache+MariaDB」は次の2部構成で進めます。

 ここでは、コンテナを構築するために必要な Dockerfilecompose.yaml の作成方法を中心に解説します。

💡 PHP+Apache+MariaDB構成の概要

 Apacheのイメージを個別に使わない理由は、PHP公式イメージにはApacheがすでに組み込まれているためです。
 Docker Hubには「php:8.0-apache」という便利な統合イメージが公開されており、これを使うと構築がとてもシンプルになります。

構成イメージはこんな感じです👇

🧰 PHP開発環境とは

 PHPはWeb開発で最も広く使われるスクリプト言語のひとつで、動的なWebページやアプリケーションを作るのに最適です。
ApacheはそのPHPを動かすWebサーバーで、MariaDBはデータを保存・検索するデータベースです。

 この3つを組み合わせることで、Webアプリ開発に必要な完全なLAMP環境(Linux + Apache + MariaDB + PHP)をDocker上で再現できます。

要素役割
PHPWebアプリケーションのプログラミング言語
ApacheWebサーバーとしてHTTPリクエストを処理
MariaDBデータベースサーバー。MySQL互換でオープンソース
Docker Composeそれぞれのコンテナを一括で管理・起動するツール

URL:https://www.php.net/

🧹 作業前のクリーンアップ

環境をリセットしてから作業を始めましょう。
古いコンテナやボリュームが残っていると、思わぬトラブルが起きやすいです。

docker system prune -a --volumes

このコマンドは未使用のコンテナ・イメージ・ネットワーク・ボリュームを削除します。

オプション説明
-a使用していないイメージも削除する。
--volumes未使用のボリュームも削除する。

 Docker Desktopを使ってGUIで削除してもOKです。コマンドに不慣れな方にはそちらの方が視覚的で分かりやすいですね。

実行結果

PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all anonymous volumes not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y

📂 ディレクトリの作成

まずは作業用フォルダを作ります。

cd desktop/docker
mkdir phpdev1
cd phpdev1

このフォルダに、Dockerfilecompose.yaml を保存します。

コマンド説明
cd desktop/docker作業ディレクトリに移動する
mkdir phpdev1新しいフォルダを作成する
cd phpdev1作成したフォルダに移動する

実行結果

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir phpdev1

    Directory: C:\Users\joeac\Desktop\docker

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2025/10/23    22:19                phpdev1

PS C:\Users\joeac\Desktop\docker> cd phpdev1
PS C:\Users\joeac\Desktop\docker\phpdev1>

🧱 Dockerfileの作成

VS Codeを使ってDockerfileを作ります。

code Dockerfile

Dockerfileの中身は以下のように編集します。

FROM php:8.0-apache 
RUN apt-get update && \
    apt-get install -y libonig-dev && \
    docker-php-ext-install pdo_mysql

この内容を一つずつ見ていきましょう👇

コマンド説明
FROM php:8.0-apachePHPとApacheが組み込まれたベースイメージを指定
RUN apt-get updateパッケージリストを最新化する。
apt-get install -y libonig-dev正規表現を扱うためのライブラリlibonigをインストール
docker-php-ext-install pdo_mysqlMariaDB/MySQLと接続するためのPDO拡張をPHPに追加

つまりこのDockerfileでは、
 PHP+Apache環境をベースに、データベース連携と正規表現ライブラリを追加インストールしているわけです。

🐬 compose.yaml の作成

続いて、Docker Composeの設定ファイルを作ります。

code compose.yaml

以下のように記述します👇

services:
  db:
    image: mariadb:10.8
    container_name: mariadb_container
    environment:
      MARIADB_ROOT_PASSWORD: root-pass
      MARIADB_DATABASE: test-db
      MARIADB_USER: test-user
      MARIADB_PASSWORD: test-pass
    volumes:
      - db-data:/var/lib/mysql

  php:
    build: .
    container_name: php-apache_container
    depends_on:
      - db
    ports:
      - "80:80"
    volumes:
      - ./src:/var/www/html

volumes:
  db-data:

🧩 各設定の解説

■ dbサービス
項目意味
imagemariadb:10.8 イメージを使用
container_namemariadb_container という名前でコンテナを作成
environmentDBの初期設定(rootパスワード・DB名・ユーザー名など)
volumesデータベースデータを永続化するボリュームを指定

この設定により、MariaDBのデータはコンテナを削除しても保持されます。

■ phpサービス
項目意味
buildカレントディレクトリのDockerfileからビルド
container_namephp-apache_container という名前で作成
depends_ondb(MariaDBコンテナ)が起動してからPHPコンテナを起動する依存関係
portsホストの80番ポートをコンテナの80番に接続(ブラウザアクセス用)
volumes./src ディレクトリをコンテナの /var/www/html にマウント(PHPソース配置)
■ volumes セクション
項目意味
db-dataMariaDBのデータを永続化するためのボリューム領域

⚙️ コンテナの起動

準備ができたら、次のコマンドでコンテナを起動します👇

docker compose up -d

このコマンドは現在のディレクトリ(compose.yamlがある場所)で実行する必要があります。

オプション説明
upコンテナを作成・起動する
-dバックグラウンド(デタッチドモード)で実行する

実行すると、PHP+ApacheコンテナとMariaDBコンテナが自動的に立ち上がります。

🖥️ 実行結果

実行ログの最後に以下のように表示されれば成功です👇

PS C:\Users\joeac\Desktop\docker\phpdev1> docker compose up -d
[+] Running 9/9
 ✔ db Pulled                                                                            14.2s
(省略)
[+] Running 5/5
 ✔ phpdev1-php                     Built                                                 0.0s
 ✔ Network phpdev1_default         Created                                               0.0s
 ✔ Volume phpdev1_db-data          Created                                               0.0s
 ✔ Container mariadb_container     Started                                               0.6s
 ✔ Container php-apache_container  Started                                               0.7s
PS C:\Users\joeac\Desktop\docker\phpdev1>

これで、PHPとMariaDBが連携するWeb開発環境が完成しました!
 ここでは、まだブラウザで http://localhost にアクセスしても、トップページがまだ表示させません。

 この続きでは、PHPプログラムを実際に配置して、MariaDBと接続する処理を作成してトップページを表示させます。
次の記事「開発環境コンテナ:PHP+Apache+MariaDB②」で詳しく紹介します。

まとめ

💬 まとめのひとこと

PHP+Apache+MariaDBのコンテナ構成を作ると、
1つのコマンドでWebサーバーとデータベースを同時に立ち上げられます。
これがDocker開発環境の最大の魅力ですね!