Ваш docker-compose.yml
переопределяет CMD
, определенный в официальном MySql Dockerfile (то есть ["mysqld]"
).Точка входа по умолчанию ( docker-entrypoint.sh ) не инициализирует контейнер, если команда не начинается с mysqld
(mysqld
должен быть первым аргументом сценария точки входа).Как следствие, каталог данных не создается, следовательно, ошибка.Каталог данных - это каталог, в котором создаются файлы базы данных.
Для запуска с настраиваемым command
, настроенным в файле compose, вы должны инициализировать том mysql-data
перед запуском контейнера:
docker run --rm \
--name init-mysql \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="example" \
mysql:8
Затем остановите контейнер
docker stop init-mysql
Запустите контейнер снова, используя docker-compose
.
В качестве альтернативы вы можете написать собственную точку входа.Надеюсь, это поможет