PDO :: __ construct():php_network_getaddresses:getaddrinfo

我正在尝试通过docker在我的laravel项目中运行foowing命令:

php artisan migrate

但是它引发了我这个错误:

PDO :: __ construct():php_network_getaddresses:getaddrinfo失败:提供了节点名或服务名,或者未知

似乎无法连接到数据库。尽管运行正常。我已经检查过了。

.env文件

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','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
ffffcccc 回答:PDO :: __ construct():php_network_getaddresses:getaddrinfo

您是否在容器外部运行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。希望对您有所帮助。

本文链接:https://www.f2er.com/3156067.html

大家都在问