2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHPのPDOをDockerコンテナ内で使おうとしたところ、"No such file or directory" エラーが発生した話

Posted at

はじめに

docker-composeでPHP用とDB用の2つのコンテナを立てて、PHPのPDOの挙動を確認したところ、 SQLSTATE[HY000] [2002] No such file or directory というエラーが発生してしまったので、その時の解消方法を備忘のために残しておこうと思います。

リポジトリ

結論

結論としては、新規PDOを作成する際のhost名を、docker-compose.ymlで指定したservice名にすればよかっただけでした。

src/index.php(一部)
-$pdo = new PDO('mysql:host=localhost;dbname=homestead;', 'root', 'secret');
+$pdo = new PDO('mysql:host=db;dbname=homestead;', 'root', 'secret');

解説

composeを起動すると、デフォルトで単一のネットワークが生成され、各コンテナはdocker-compose.ymlで指定したservice名でそのネットワークに参加します
そのため、各コンテナから別のコンテナにアクセスする際は、ホスト名としてservice名を使用することができるようになります。

参考: Compose のネットワーク機能 - Docker-docs-ja

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?