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

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

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

開発環境コンテナ:PHP+Apache+MariaDB①」でコンテナ構成を作成しましたね。
 今回はその続きとして、実際に MariaDBデータベースへ接続するPHPプログラム を作成し、Webブラウザから動作を確認してみましょう。

💡 コンテナ構成の確認

今回の環境は、前回構築した以下の2つのコンテナで構成されています。

コンテナ名役割イメージ主なデータの保存先
mariadb_containerデータベース(MariaDB)mariadb:10.8db-data ボリューム(永続化)
php-apache_containerWebサーバー+PHP実行環境php:8.0-apache./src ディレクトリ(バインドマウント)

 MariaDBのデータは db-data ボリュームに永続化され、PHPソースコードはホスト側の ./src ディレクトリと同期しています。
つまり、src フォルダ内のファイルを編集すると、コンテナ内にも即時反映される仕組みです。

🧱 PHPプログラムの作成

次に、MariaDBへ接続するPHPプログラムを作りましょう。
PHP+Apacheコンテナの /var/www/html に対応している src ディレクトリにファイルを作成します。

📂 index.php の作成

コマンドプロンプトまたはPowerShellで以下を実行します。

code ./src/index.php

VS Codeが起動したら、次のプログラムを入力して保存します。

<?php
// データベース接続情報
$host = 'db'; // Docker Composeでのサービス名
$dbname = 'test-db';
$user = 'test-user';
$pass = 'test-pass';

try {
    // データベースに接続
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    
    // テーブル作成クエリ
    $sql = "CREATE TABLE IF NOT EXISTS test_table (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL
    )";
    
    // テーブルを作成
    $pdo->exec($sql);
    
    echo "データベース接続成功、テーブル作成成功\n";
} catch (PDOException $e) {
    // エラーが発生した場合はエラーメッセージを表示
    echo "データベース接続エラー: " . $e->getMessage() . "\n";
}
?>
💬 コード解説
部分説明
$host = 'db';データベースのホスト名を指定します。Docker Composeのservices:で定義されたサービス名がホスト名になります。
$dbname = 'test-db';接続先のデータベース名です(compose.yamlの MARIADB_DATABASE と一致)。
$user = 'test-user';データベースユーザー名(compose.yamlの MARIADB_USER に対応)。
$pass = 'test-pass';データベースパスワード(compose.yamlの MARIADB_PASSWORD に対応)。
new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);PHPのPDO拡張を使ってMariaDBに接続します。
$sql = "CREATE TABLE IF NOT EXISTS ..."テーブルを作成するSQL文。既に存在する場合はスキップします。
$pdo->exec($sql);SQL文を実行します。成功すればテーブルが作成されます。
catch (PDOException $e)例外処理。接続失敗時にエラーメッセージを出力します。

⚙️ PDOとは?

PDO(PHP Data Objects)は、PHPでデータベースに接続するための汎用インターフェースです。
 MySQLやMariaDBのほか、PostgreSQLやSQLiteなど、複数のDBを統一した方法で扱えるのが特徴です。

メソッド説明
new PDO()データベース接続を開始する
exec()SQL文を実行する(結果は返さない)
prepare()SQL文を事前に準備して安全に実行する(プレースホルダー使用可)

🌐 コンテナへの接続と実行

プログラムが完成したら、ブラウザから動作確認をしてみましょう。
コンテナはすでに docker compose up -d で起動済みの状態とします。

💻 ブラウザでアクセス

ブラウザを開いて、次のURLにアクセスします。

http://localhost

🎉 結果の表示

画面に次のメッセージが表示されれば成功です👇

データベース接続成功、テーブル作成成功

このメッセージが出力されたということは、PHPが正常にMariaDBへ接続し、
test_table というテーブルが作成されたことを意味します。

⚠️ トラブル時のチェックポイント

もしエラーが出る場合は、次の点を確認してみてください。

確認項目内容
データベース名compose.yamlMARIADB_DATABASE と一致しているか
ユーザー名・パスワードMARIADB_USER, MARIADB_PASSWORD の設定と一致しているか
コンテナの起動状況docker psmariadb_container が起動しているか
ポートの競合他のWebサービスがポート80を使用していないか

✅ まとめ

ステップ内容
index.phpsrc フォルダに作成
PHPのPDOでMariaDBに接続するコードを記述
http://localhost にアクセスして動作確認
「データベース接続成功」と表示されれば完了!

💬 まとめのひとこと

PHP+Apache+MariaDBの開発環境は、Docker Composeで手軽に構築できます。
WebアプリからDBにアクセスする処理も、コンテナ間通信が自動で設定されるので簡単!
次は、作成したテーブルにデータを挿入したり、取得したりしてみましょう。