docker-compose не запускает mysql: 8 правильно - PullRequest
0 голосов
/ 20 сентября 2019

Я запускаю docker на AWS AMI и получаю следующую ошибку, когда хочу запустить контейнер mysql: 8, используя docker-compose.Я создал том данных, который нужен этому контейнеру.

Фрагмент моего файла docker-compose:

version: '3.7'

services:
   mysql:
     image: mysql:8
     command: bash -c "rm /etc/localtime && ln -s /usr/share/zoneinfo/America/New_York /etc/localtime && mysqld --user=root --default-authentication-plugin=mysql_native_password"
     volumes:
       - mysql-data:/var/lib/mysql
       - ./:/home
     ports:
      - "3306:3306"
     environment:
       MYSQL_ROOT_PASSWORD: example

...
mysql-data:
      external:
        name: data-volume

, и я получаю следующую ошибку, я не уверен, что каталог данных является ошибкойссылаясь на

mysql_1                | 2019-09-20T03:13:24.151141Z 0 [Warning] [MY-010139] [Server] Changed limits: max_open_files: 1024 (requested 8161)
mysql_1                | 2019-09-20T03:13:24.151148Z 0 [Warning] [MY-010142] [Server] Changed limits: table_open_cache: 431 (requested 4000)
mysql_1                | 2019-09-20T03:13:24.433348Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
mysql_1                | 2019-09-20T03:13:24.433434Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.17) starting as process 1
mysql_1                | 2019-09-20T03:13:24.443292Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.
mysql_1                | 2019-09-20T03:13:24.443383Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
mysql_1                | 2019-09-20T03:13:24.445787Z 0 [ERROR] [MY-010119] [Server] Aborting
mysql_1                | 2019-09-20T03:13:24.446197Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.17)  MySQL Community Server - GPL.

1 Ответ

1 голос
/ 20 сентября 2019

Ваш 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.

В качестве альтернативы вы можете написать собственную точку входа.Надеюсь, это поможет

...