Правильным DB_HOST
является database
, поскольку каждый контейнер имеет свой собственный IP-адрес, поэтому ваша база данных не находится в localhost
приложения.
Обратите внимание, что вы запускаете базу данных и приложение laravel одновременно, поэтому база данных может все еще инициализироваться, после чего выполняется миграция, и она не может подключиться, потому что слишком рано подключаться к базе данных.
У вас есть несколько вариантов: дождаться готовности базы данных, прежде чем запускать миграцию, повторить миграцию, пока она не завершится успешно, или запустить команду миграции из другой службы, используя тот же образ, что и приложение laravel (и задав restart: on-failure
, чтобы контейнер миграции перезапускается, пока не выполнит успешную миграцию).