このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:開発環境コンテナ:PHP+Apache+MriaDB①

🐳 開発環境コンテナ:PHP+Apache+MariaDB①
Docker Composeを使って PHP+Apache+MariaDB の開発環境を構築していきましょう。
この環境を作ることで、PHPのWebアプリケーションをMariaDBと連携させながら動作確認できます。
「開発環境コンテナ:PHP+Apache+MariaDB」は次の2部構成で進めます。
ここでは、コンテナを構築するために必要な Dockerfile と compose.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上で再現できます。
| 要素 | 役割 |
|---|---|
| PHP | Webアプリケーションのプログラミング言語 |
| Apache | WebサーバーとしてHTTPリクエストを処理 |
| MariaDB | データベースサーバー。MySQL互換でオープンソース |
| Docker Compose | それぞれのコンテナを一括で管理・起動するツール |

🧹 作業前のクリーンアップ
環境をリセットしてから作業を始めましょう。
古いコンテナやボリュームが残っていると、思わぬトラブルが起きやすいです。
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このフォルダに、Dockerfile と compose.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 DockerfileDockerfileの中身は以下のように編集します。
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-apache | PHPとApacheが組み込まれたベースイメージを指定 |
| RUN apt-get update | パッケージリストを最新化する。 |
| apt-get install -y libonig-dev | 正規表現を扱うためのライブラリlibonigをインストール |
| docker-php-ext-install pdo_mysql | MariaDB/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サービス
| 項目 | 意味 |
|---|---|
| image | mariadb:10.8 イメージを使用 |
| container_name | mariadb_container という名前でコンテナを作成 |
| environment | DBの初期設定(rootパスワード・DB名・ユーザー名など) |
| volumes | データベースデータを永続化するボリュームを指定 |
この設定により、MariaDBのデータはコンテナを削除しても保持されます。
■ phpサービス
| 項目 | 意味 |
|---|---|
| build | カレントディレクトリのDockerfileからビルド |
| container_name | php-apache_container という名前で作成 |
| depends_on | db(MariaDBコンテナ)が起動してからPHPコンテナを起動する依存関係 |
| ports | ホストの80番ポートをコンテナの80番に接続(ブラウザアクセス用) |
| volumes | ./src ディレクトリをコンテナの /var/www/html にマウント(PHPソース配置) |
■ volumes セクション
| 項目 | 意味 |
|---|---|
| db-data | MariaDBのデータを永続化するためのボリューム領域 |
⚙️ コンテナの起動
準備ができたら、次のコマンドでコンテナを起動します👇
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開発環境の最大の魅力ですね!



