无法在docker中使用MySQL配置创建数据库



我已经使用虚拟盒子安装了Ubuntu,并在里面安装了apt、docker和docker-compose。现在我想使用docker-compose.yml创建MySQL数据库其中,我定义了MySQL配置,包括导入的数据库文件。当我执行以下命令时,它安装MySQL,但不创建数据库。

sudo docker-compose up -d --force-recreate --build

docker-compose.yml

mysql:
image: "mysql:5.7"
network_mode: "bridge"
volumes:
- ${DATA_ROOT}/mysql:/var/lib/mysql
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
environment:
- MYSQL_ROOT_PASSWORD=${ENV_PASSWORD}
- MYSQL_USER="${ENV_USER}"
- MYSQL_PASSWORD="${ENV_PASSWORD}"
- MYSQL_PORT_3306_TCP_ADDR=0.0.0.0
- MYSQL_PORT_3306_TCP_PORT=3306
command:
- --user=root
- --max_allowed_packet=500M
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --max_connections=250
- --default-authentication-plugin=mysql_native_password
ports:
- "3306:3306"

在某些情况下,它允许我第一次创建,但当我在docker中删除整个图像和卷并尝试再次创建时,它会出现同样的问题。

我想有一些预装的文件限制了我重新创建它。(这只是我的假设(

如果您想用/docker-entrypoint-initdb.d初始化数据库,则需要删除数据目录- ${DATA_ROOT}/mysql:/var/lib/mysql,如官方文档中明确提到的那样

对现有数据库的使用

如果您用一个数据目录启动mysql容器实例已经包含一个数据库(特别是mysql子目录($MYSQL_ROOT_PASSWORD变量应从run命令中省略线它在任何情况下都将被忽略,并且预先存在的数据库不会以任何方式改变。

最新更新