我有以下docker-compose.yml
version: "3.7"
services:
db:
container_name: db
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: "mysql"
MYSQL_DATABASE: "mydb"
security_opt:
- seccomp:unconfined
volumes:
- ./supplied/init:/docker-entrypoint-initdb.d/:ro
当我运行'docker-compose up'时,它会显示:
正在重新创建数据库...已完成
附加到数据库
如果我检查可用的数据库,就会看到:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
为什么忽略了我的MYSQL_DATABASE环境变量?
我正在Windows 10上运行。
编辑:
这看起来有点像缓存问题。我在docker-compose文件中更改了服务名称和container_name,它开始起作用...
答案 0 :(得分:0)
您应该使用--force-recreate
标志:
--force-recreate Recreate containers even if their configuration
and image haven't changed.
答案 1 :(得分:0)
来自https://github.com/docker-library/mysql/issues/180:
重要的是,图像入口点脚本永远不会 更改现有数据库。如果挂载现有数据 目录进入var / lib / mysql,像MYSQL_ROOT_PASSWORD这样的选项 没有效果
我的问题是该卷已经存在。当我使用docker-compose down -v
删除卷时
当我提出它时,它将创建数据库。