はじめに
Dockerについての解説はしない
DockerでPHP環境が構築できているのが前提
PHPからDBに接続
適当なファイルを作成する
内容を記述
<?php
// Docker環境下ではhostはコンテナ名
const DB_HOST = 'mysql:host=mysql;dbname=udemy_php;charset=utf8';
// userとpassword
const DB_USER = 'php_user';
const DB_PASSWORD = 'password123';
// 例外処理
try {
$pdo = new PDO(DB_HOST, DB_USER, DB_PASSWORD);
echo '接続成功';
} catch(PDOException $e) {
echo '接続失敗' . $e->getMessage() . "\n";
exit();
}
注意点
DB_HOSTのmysql:host=mysql
はコンテナ名を指定している
厳密にいうとコンテナのipアドレスを指定しているのだが、コンテナ名を書けば自動で割り出してくれるらしい
これによりコンテナを立ち上げるたびにipアドレスが変わっても対応せずに済む
XAMPやMAPM環境ではlocalhostと指定するためその方法でやろうとすると詰む
Dockerfileで使用しているImageによってはPDO
がない可能性がある
DockerfileのRUN
にdocker-php-ext-install pdo_mysql pdo_pgsql
を加えてインストールする
php:7.2-apache-stretch
には含まれていないようだが、php:7.4-apache
には含まれている
stretch
には含まれていないのかな?? 確認はしていない