[docker]phpからmysqlにアクセスしたらno such file or directoryが出た話

前提

前提としては、dockerでwebとdbのコンテナをそれぞれ立てて、webコンテナにphpをインストールして、dbコンテナにmysqlをインストールしているとします。

なにが起きた?

$link = mysqli_connect(‘localhost’, $dbUsername, $dbPassword, $dbDatabase);

上記のようにphpからmysqlを利用しようとするとno such file or directoryエラーになって接続できない!

解決方法

docker-composeで定義したservice間での呼び出しは対象のservice名を指定してあげることでアクセス可能です。

今回でいうとdbコンテナのサービス名はmysqlにしているので、localhostの部分をmysqlに書き換えて以下のようにすればいいです。

$link = mysqli_connect(‘mysql’, $dbUsername, $dbPassword, $dbDatabase);

これで無事mysqにアクセスすることができました。

docker-compose.ymlの抜粋

version: '3.8'

services:  
  mysql:
    container_name: mysql
    build:
      context: .
      dockerfile: db/Dockerfile
    ports:
      - "3306:3306"
    volumes:
      - ./db/my.cnf:/etc/mysql/conf.d/my.cnf
    env_file:
      - ../src/.env
    networks:
      - hoge_network

コメント

タイトルとURLをコピーしました