使用Docker Compose启动MySQL镜像未自动创建指定数据库问题排查
Docker Compose启动MySQL无法创建指定数据库的排查方案
以下是针对问题的具体排查和解决步骤:
1. 清理旧数据卷(最常见原因)
MySQL官方镜像只会在首次启动且数据卷为空时执行初始化脚本(创建指定数据库、用户等)。如果你的Docker Compose之前启动过db服务,即使后来添加了MYSQL_DATABASE环境变量,已存在的数据卷会让MySQL跳过初始化流程。
执行以下命令彻底清理旧容器和关联数据卷:
docker-compose down -v
然后重新启动服务:
docker-compose up -d
2. 查看容器初始化日志
检查MySQL容器的启动日志,确认初始化过程是否执行或存在错误:
docker-compose logs db
搜索日志中的关键字,比如Creating database 'testdb',如果能找到这条日志,说明数据库已创建;如果有ERROR开头的信息,根据错误提示进一步排查(比如权限、环境变量格式问题)。
3. 验证环境变量是否正确传递
进入运行中的容器,检查环境变量是否正确设置:
docker-compose exec db env | grep MYSQL
确保输出中包含MYSQL_DATABASE=testdb,如果缺失,检查docker-compose.yml的格式是否正确(YAML对缩进敏感,需保证环境变量层级正确)。
4. 确认端口映射不影响初始化
你配置的33061:3306只是外部端口映射,和MySQL内部的数据库初始化逻辑无关,无需为此调整。
内容的提问来源于stack exchange,提问作者Dani Pardo
相关产品推荐
相关产品推荐

