我在AWS AMI上运行docker并在使用docker-compose
运行mysql:8容器时遇到以下错误。我已经创建了该容器所需的数据量。
我的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.
答案 0 :(得分:1)
您的docker-compose.yml
覆盖了官方MySql Dockerfile中定义的CMD
(即["mysqld]"
)。默认入口点(docker-entrypoint.sh)
如果命令不是以mysqld
开头,则不会初始化容器({{1}应该是入口点脚本的第一个参数)。结果,未创建数据目录,因此出错。数据目录是创建数据库文件的目录。
要使用在撰写文件中配置的自定义mysqld
来运行,您应该在启动容器之前初始化command
卷:
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
重新启动容器。
或者,您可以编写一个自定义入口点。希望对您有帮助