Lorsque vous créez un environnement avec docker et faites docker-compose up
pour démarrer le serveur
J'obtiens l'erreur Mysql2 :: Error :: ConnectionError: Unknown serveur MySQL host'db '(-2)
.
Si vous vérifiez le journal des erreurs dans le terminal
Il semble que la base de données s'est arrêtée pour une raison quelconque.
Puisqu'il s'agit de «tables de privilèges», s'agit-il d'une table utilisateur créée par sudo? Pourquoi ai-je une erreur avec ce contenu dans le menu fixe? Je me suis posé plusieurs questions, mais pour le moment, j'ai décidé de supprimer tous les volumes une fois.
① Vérifiez l'ID du volume
$ docker volume ls
DRIVER VOLUME NAME
local b1d0c8467782387a61c446e1ea2aedaa745d6f120c4c6423bdc37e9005a7bd34
(2) Supprimez le volume avec la commande rm en utilisant VOLUME NAME
coché ci-dessus.
$ docker volume rm [VOLUME NAME]
#Exemple ↓
$ docker volume rm b1d0c8467782387a61c446e1ea2aedaa745d6f120c4c6423bdc37e9005a7bd34
③ Redémarrez le conteneur et le serveur en fonction de docker-compose.yml
$ docker-compose up --build
$ docker-compose run web rails db:create
$ docker-compose run web rails db:migrate
④ Accès localhost: 3000 → ** Démarrer sans erreur **
Puisque l'endroit où les informations de table de mysql sont enregistrées est le volume, lorsque le conteneur a été supprimé, le conteneur de volume n'a pas été complètement supprimé et les informations précédentes de mysql ont été laissées à mi-chemin
, il semble donc que l'autorité était insuffisante. est.
Avant cela, j'ai fait un conteneur plusieurs fois, je l'ai supprimé et répété des essais et des erreurs, donc c'est probablement l'épave à ce moment-là ...
Si db ne démarre pas avec docker-compose up, essayez de supprimer le volume