Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

paboo's avatar
Level 1

laravel SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

i create evinroment docker in my project anything ok but laravel cant connect to mysql please help me resolve it.

this is my docker-compose.yml


version: '3'

volumes:
  db:
    driver: local

networks:
  test:
    driver: bridge

services:
  app:
    build:
      context: ./docker/php_fpm
      args:
        - TZ=Asia/Tokyo
    volumes:
      - ./:/var/www
    links:
      - db
      - cache

  web:
    build:
      context: ./docker/nginx
    image: nginx:stable
    volumes:
      - .:/var/www
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
      - ./docker/nginx/server.crt:/etc/nginx/server.crt
      - ./docker/nginx/server.key:/etc/nginx/server.key
    environment:
      - TZ=Asia/Tokyo
    ports:
      - 443:443
      - 8080:80
    depends_on:
      - app
    links:
      - app
    networks:
      - test

  db:
    image: mysql:8.0
    environment:
      - MYSQL_DATABASE=dev_matching
      - MYSQL_USER=app_user
      - MYSQL_PASSWORD=qcQ53aaF+S1x
      - MYSQL_ROOT_PASSWORD=L+p5aBRxbkKV
      - TZ=Asia/Tokyo
    volumes:
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./docker/mysql/init:/docker-entrypoint-initdb.d
      - ./docker/mysql/logs:/var/log/mysql
      - ./docker/mysql/data:/var/lib/mysql
    ports:
      - 3306:3306
    networks:
      - test

  cache:
    image: redis:5.0.6
    ports:
      - 6379:6379

  watch:
    build:
      context: .
      dockerfile: ./docker/node/Dockerfile
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules

  mail:
    build:
      context: ./docker/mail
    ports:
      - 1025:1025
      - 1080:1080


and this is my issue



   Illuminate\Database\QueryException  : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from information_schema.tables where table_schema = dev_matching and table_name = migrations and table_type = 'BASE TABLE')

  at /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
    665|         // If an exception occurs when attempting to run a query, we'll format the error
    666|         // message to include the bindings with SQL, which will make this exception a
    667|         // lot more helpful to the developer instead of just the database's errors.
    668|         catch (Exception $e) {
  > 669|             throw new QueryException(
    670|                 $query, $this->prepareBindings($bindings), $e
    671|             );
    672|         }
    673| 

  Exception trace:

  1   Doctrine\DBAL\Driver\PDO\Exception::("SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known")
      /home/ket/Desktop/gcode/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php:18

  2   Doctrine\DBAL\Driver\PDO\Exception::new(Object(PDOException))
      /home/ket/Desktop/gcode/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:42

  3   PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known")
      /home/ket/Desktop/gcode/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:38

  4   PDO::__construct("mysql:host=db;port=3306;dbname=dev_matching", "app_user", "qcQ53aaF+S1x", [])
      /home/ket/Desktop/gcode/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:38

  5   Doctrine\DBAL\Driver\PDOConnection::__construct("mysql:host=db;port=3306;dbname=dev_matching", "app_user", "qcQ53aaF+S1x", [])
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:67

  6   Illuminate\Database\Connectors\Connector::createPdoConnection("mysql:host=db;port=3306;dbname=dev_matching", "app_user", "qcQ53aaF+S1x", [])
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:46

  7   Illuminate\Database\Connectors\Connector::createConnection("mysql:host=db;port=3306;dbname=dev_matching", [])
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:24

  8   Illuminate\Database\Connectors\MySqlConnector::connect()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:182

  9   Illuminate\Database\Connectors\ConnectionFactory::Illuminate\Database\Connectors\{closure}()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:924

  10  call_user_func(Object(Closure))
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:924

  11  Illuminate\Database\Connection::getPdo()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:959

  12  Illuminate\Database\Connection::getReadPdo()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:404

  13  Illuminate\Database\Connection::getPdoForSelect()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:330

  14  Illuminate\Database\Connection::Illuminate\Database\{closure}("select * from information_schema.tables where table_schema = ? and table_name = ? and table_type = 'BASE TABLE'")
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:662

  15  Illuminate\Database\Connection::runQueryCallback("select * from information_schema.tables where table_schema = ? and table_name = ? and table_type = 'BASE TABLE'", Object(Closure))
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:629

  16  Illuminate\Database\Connection::run("select * from information_schema.tables where table_schema = ? and table_name = ? and table_type = 'BASE TABLE'", Object(Closure))
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Connection.php:338

  17  Illuminate\Database\Connection::select("select * from information_schema.tables where table_schema = ? and table_name = ? and table_type = 'BASE TABLE'")
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:18

  18  Illuminate\Database\Schema\MySqlBuilder::hasTable("migrations")
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php:169

  19  Illuminate\Database\Migrations\DatabaseMigrationRepository::repositoryExists()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:590

  20  Illuminate\Database\Migrations\Migrator::repositoryExists()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:91

  21  Illuminate\Database\Console\Migrations\MigrateCommand::prepareDatabase()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:63

  22  Illuminate\Database\Console\Migrations\MigrateCommand::handle()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36

  23  Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Container/Util.php:37

  24  Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93

  25  Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Object(Closure))
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:37

  26  Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), [])
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Container/Container.php:590

  27  Illuminate\Container\Container::call()
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Console/Command.php:134

  28  Illuminate\Console\Command::execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /home/ket/Desktop/gcode/vendor/symfony/console/Command/Command.php:255

  29  Symfony\Component\Console\Command\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Console/Command.php:121

  30  Illuminate\Console\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /home/ket/Desktop/gcode/vendor/symfony/console/Application.php:1009

  31  Symfony\Component\Console\Application::doRunCommand(Object(Illuminate\Database\Console\Migrations\MigrateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /home/ket/Desktop/gcode/vendor/symfony/console/Application.php:273

  32  Symfony\Component\Console\Application::doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /home/ket/Desktop/gcode/vendor/symfony/console/Application.php:149

  33  Symfony\Component\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Console/Application.php:93

  34  Illuminate\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /home/ket/Desktop/gcode/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:131

  35  Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /home/ket/Desktop/gcode/artisan:37


and docker container



CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                                            NAMES
b4e7a09d2219   gcode_app     "docker-php-entrypoi…"   32 minutes ago   Up 32 minutes   9000/tcp                                         gcode_app_1
618ebff1f58a   gcode_mail    "mailcatcher -f --ip…"   32 minutes ago   Up 32 minutes   0.0.0.0:1025->1025/tcp, 0.0.0.0:1080->1080/tcp   gcode_mail_1
64e1c9b0add3   gcode_watch   "docker-entrypoint.s…"   32 minutes ago   Up 32 minutes                                                    gcode_watch_1
188a27915a20   redis:5.0.6   "docker-entrypoint.s…"   32 minutes ago   Up 32 minutes   0.0.0.0:6379->6379/tcp                           gcode_cache_1
199a9bda881b   mysql:8.0     "docker-entrypoint.s…"   32 minutes ago   Up 32 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp                gcode_db_1

in my .env file


DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_USER=app_user
DB_PASS=qcQ53aaF+S1x

thanks for help bros

0 likes
10 replies
Sinnbeck's avatar

Try adding your php container to the test network

app:
    build:
      context: ./docker/php_fpm
      args:
        - TZ=Asia/Tokyo
    volumes:
      - ./:/var/www
    links:
      - db
      - cache
    networks:
      - test
1 like
paboo's avatar
Level 1

@sinnbeck it's not working Sir

 Doctrine\DBAL\Driver\PDOConnection::__construct("mysql:host=gcode_db_1;port=3306;dbname=dev_matching", "app_user", "qcQ53aaF+S1x", [])


version: '3'

volumes:
  db:
    driver: local

networks:
  test:
    driver: bridge

services:
  app:
    build:
      context: ./docker/php_fpm
      args:
        - TZ=Asia/Tokyo
    volumes:
      - ./:/var/www
    links:
      - db
      - cache
    networks:
      - test

  web:
    build:
      context: ./docker/nginx
    image: nginx:stable
    volumes:
      - .:/var/www
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
      - ./docker/nginx/server.crt:/etc/nginx/server.crt
      - ./docker/nginx/server.key:/etc/nginx/server.key
    environment:
      - TZ=Asia/Tokyo
    ports:
      - 443:443
      - 8080:80
    depends_on:
      - app
    links:
      - app
    networks:
      - test

  db:
    image: mysql:8.0
    environment:
      - MYSQL_DATABASE=dev_matching
      - MYSQL_USER=app_user
      - MYSQL_PASSWORD=qcQ53aaF+S1x
      - MYSQL_ROOT_PASSWORD=L+p5aBRxbkKV
      - TZ=Asia/Tokyo
    volumes:
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./docker/mysql/init:/docker-entrypoint-initdb.d
      - ./docker/mysql/logs:/var/log/mysql
      - ./docker/mysql/data:/var/lib/mysql
    ports:
      - 3306:3306
    networks:
      - test

  cache:
    image: redis:5.0.6
    ports:
      - 6379:6379

  watch:
    build:
      context: .
      dockerfile: ./docker/node/Dockerfile
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules

  mail:
    build:
      context: ./docker/mail
    ports:
      - 1025:1025
      - 1080:1080


Sinnbeck's avatar
Sinnbeck
Best Answer
Level 102

Why is host host=gcode_db_1. Should be db. Did you cache your config? php artisan config:clear

1 like
paboo's avatar
Level 1

i try use db in host and php artisan optimize:clear, php artisan cache:clear. but its same error Sir

2 likes
AleksRov's avatar

In env DB_HOST = 0 .0. 0. 0 this is the address where the docker container works.

10 likes
florenxe's avatar

@AleksRov This did not work for me, I get connection refused error

this is the db connection detail in my env file

DB_HOST=0.0.0.0
DB_PORT=3306
DB_DATABASE=test_db
DB_USERNAME=root
DB_PASSWORD=pass

my docker-compose

version: "3.7"
services:
    app:
        build: .
        container_name: cookbookshq
        depends_on:
            - db
        volumes:
            - ./:/var/www
        links:
            - "db:database"
        networks:
            - cookbooks
    db:
        image: mysql:latest
        container_name: db
        environment:
            MYSQL_ROOT_PASSWORD: pass
            MYSQL_DATABASE: test_db
        volumes:
            - cookbooks-db:/var/lib/mysql
        networks:
            - cookbooks
    nginx:
        image: nginx:alpine
        container_name: web-server
        restart: unless-stopped
        ports:
            - "8080:80"
        volumes:
            - ./:/var/www
            - ./docker-compose/nginx:/etc/nginx/conf.d/
        networks:
            - cookbooks

volumes:
    cookbooks-db:

networks:
    cookbooks:
        driver: bridge

Cant see where I've gone wrong, can anyone see please?

akhaled's avatar

In my case the mysql service it self was the issue. It didn't run because of wrong env

db:
    image: mysql:8.0.13
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - "33006:3306"
    environment:
      MYSQL_DATABASE: my_db
      MYSQL_USER: root # <-- don't use root user, pick some other user
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: password
NursM's avatar

Sometimes, we just forgot to run php artisan migrate command inside container.

'docker exec -it container_name bash' - for running command inside container

2 likes

Please or to participate in this conversation.