PDO :: __ construct (): php_network_getaddresses: getaddrinfo - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь запустить команду foowing в моем проекте laravel с помощью docker:

php artisan migrate

Но она выдает мне эту ошибку:

PDO :: __ construct (): php_network_getaddresses:Ошибка getaddrinfo: имя узла или имя сервера предоставлены или неизвестны

Кажется, он не может подключиться к базе данных. Хотя работает правильно. Я уже это проверил.

.env file

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=laravel_app
DB_USERNAME=root
DB_PASSWORD=password

database.php

'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

docker-compose.yml

version: "3"

services:
  app:
    build: .
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
    links:
      - mariadb:mariadb

  mariadb:
    image: mariadb:10.4
    ports:
      - "13306:3306"
    environment:
      - MYSQL_DATABASE=laravel_app
      - MYSQL_ROOT_PASSWORD=password

1 Ответ

0 голосов
/ 06 ноября 2019

Запускаете ли вы команду php artisan migrate вне контейнера? Запуск команды laravel artisan с хоста не будет работать. Вы должны запустить его внутри контейнера. Если вы используете docker-compose, попробуйте эту команду для запуска команды внутри контейнера:

docker exec -it <container name> /usr/bin/php /var/www/html/artisan migrate

or 

docker-compose exec <container name> /usr/bin/php /var/www/html/artisan migrate

Если вы уже установили для своего рабочего каталога значение /var/www/html в вашем Dockerfile, вы можете удалить /var/www/htmlиз команды. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...