Voici le contenu de l'erreur
terminal
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from information_schema.tables where table_schema = db_name and table_name = migrations and table_type = 'BASE TABLE')
at /var/www/html/laravel-vue-app/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 PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known")
/var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
2 PDO::__construct("mysql:host=mysql;port=3306;dbname=db_name", "db_user", "db_password", [])
/var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
Please use the argument -v to see more details.
En conclusion, il semble que les paramètres de docker-compose.yml et .env mysql doivent être les mêmes.
Vérifiez si .env sous laravel (app /) existe -> Le nom d'hôte doit correspondre au nom du conteneur du docker Besoin de changer s'il y a une différence dans le contenu de docker-compose.yml Après le changement
docker
docker-compose stop
docker-compose up -d
Il faut faire Raison: le redémarrage ne reflète pas les paramètres de docker-compose.yml Si vous souhaitez refléter les paramètres de .env
terminal
php artisan config:cache
Besoin d'être reflété dans
Apparemment, le conteneur d'application où laravel est facturé-> le conteneur de base de données où mysql est construit Il semble qu'une erreur se soit produite lors de la communication entre eux, Lors de la communication entre des conteneurs docker, saisissez l'adresse IP donnée au conteneur dans lequel mysql est construit. Il faut utiliser
terminal
cat /etc/hosts | awk ‘END{print $1}’ | sed -r -e ‘s/[0-9]+$/1/g’
Vous pouvez vérifier l'adresse IP du conteneur avec Vous devez vérifier si l'adresse IP hôte de .env sous l'application est la même.