eureka

【Dockerエラー】php_network_getaddresses: getaddrinfo failed: Name or service not known

1

こんにちは、Dockerの理解が中途半端でビルドする度に疲弊しているしょうみゆです。

DockerでBedrockを使用したWordPress環境開発で上記のエラーにぶちあたりましたので自分のための覚書をします。

環境

Docker version 19.03.8
docker-compose version 1.25.4

エラーの内容

冒頭でもありましたが、Docker composeを使用してRootsのBedrockでWordPress環境を構築していました。

二つめのBedrockのWordPressサイトだったので、docker-compose.ymlのMySQLのコンテナとPHPMyAdminのコンテナ名を変更して、環境変数などの設定をして立ち上げたら、下記のようなエラーがでました。

php_network_getaddresses: getaddrinfo failed: Name or service not known
エラー画面

データベースのホスト名が合っていなかったのが原因だった

結論は上記のとおり、環境変数で設定していたデータベースのホスト名がdocker-compose.ymlで設定したホスト名と異なっていたことが原因でした。

version: "3"
services:
  〜省略〜
  mysqldb:
    image: mysql:${MYSQL_VERSION}
    container_name: mysqldb
    restart: always
    env_file:
      - ".env"
    environment:
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    ports:
      - "8989:3306"
    volumes:
      - "./data/db/mysql:/var/lib/mysql"

docker-compose.ymlで上記のような設定をしていた場合、DBのホスト名がcontainer_nameで設定している名称に合わせるのですが、これがわかっていなくて今回のDB接続エラーになっていました。

# MySQL
MYSQL_VERSION=8.0.21
MYSQL_HOST=mysqldb
MYSQL_DATABASE=test
MYSQL_ROOT_USER=root
MYSQL_ROOT_PASSWORD=root
MYSQL_USER=dev
MYSQL_PASSWORD=dev

ホスト名を合わせたら無事にWordPressのインストール画面が表示されました!

参考にしたサイト

エラー解消で参考にしたサイト

本当に助かりました〜!

今回のDockerやBedrockで使用しているリポジトリや参考サイト

最近はローカル環境のWordPress構築にDocker×Bedrockを使用しています。

Dockerの代わりにTrellis使用版もありますが、今度どちらの環境構築の記事も書こうかなーと思います(多分・・)

1