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

【Docker入門】PHP+Apache+MySQL+phpMyAdminの開発環境コンテナ②

PHP+Apache+MySQLの開発環境コンテナ①」の続きです。

「PHP+Apache+MySQL+phpMyAdminの開発環境コンテナ」は次の2部に分けて解説しています。

  • PHP+Apache+MySQL+phpMyAdminの開発環境コンテナ①
  • PHP+Apache+MySQL+phpMyAdminの開発環境コンテナ②

 ここでは、データベースに接続するPHPプログラムの作成とWebブラウザから「PHP+Apache」コンテナに接続して、作成したプログラムを実行していきます。また、phpMyAdminコンテナに接続して、MySQLコンテナに接続します。

「Apache+PHP」コンテナとMySQLコンテナとphpMyAdminコンテナの構成

 以下のように「Apache+PHP」コンテナとMySQLコンテナとphpMyAdminコンテナで構成しています。

 MySQLのデータは「db-data」という永続的なボリュームに保存し、「PHP+Apache」コンテナのデータはホストマシンの「./src」ディレクトリにバインドマウントさせています。

PHPプログラムの作成

「src」ディレクトリの中に「index.php」ファイルを作成します。

・「code ./src/index..php」コマンドを実行します。

「src」ディレクトリは、「index..php」を保存時に自動的に作成されます。

PS C:\Users\joeac\Desktop\docker\phpdev3> code ./src/index.php

VS Codeが起動します。

・次のPHPプログラムを入力します。

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

// 待機時間を設定してMySQLサービスが起動するのを待つ
$max_attempts = 10;
$attempt = 0;
while ($attempt < $max_attempts) {
    try {
        // データベースに接続
        $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
        break;
    } catch (PDOException $e) {
        // エラーが発生した場合は数秒待機して再試行する
        sleep(1);
        $attempt++;
    }
}

if ($attempt === $max_attempts) {
    echo "データベース接続エラー: MySQLサービスが起動しませんでした\n";
    exit(1);
}

try {
    // テーブル作成クエリ
    $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";
}
?>

PHP+Apacheコンテナへの接続

・Webブラウザを起動して、URLに「localhost」と入力します。

「データベース接続成功、テーブル作成成功」と表示されます。

エラーが表示される場合は、「index.php」のユーザー名やパスワードなどを確認してみてください。

phpMyAdminコンテナへの接続

・Webブラウザを起動して、URLに「localhost:8080」と入力します。

phpMyAdminのTOPページが表示されます。

・以下の内容を入力して「ログイン」ボタンをクリックします。

ユーザ名・・・test-user
パスワード・・・test-pass

phpMyAdminにログインすると下図の画面が表示されます。

・「test-db」を展開し、「test_table」を展開します。

テーブルのカラムが確認できます。

関連コンテンツ