为什么MYSQL docker容器会忽略MYSQL_数据库环境变量?
我有以下docker-compose.yml为什么MYSQL docker容器会忽略MYSQL_数据库环境变量?,mysql,docker,docker-compose,Mysql,Docker,Docker Compose,我有以下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
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\u数据库环境变量
我在Windows10上运行
编辑:
这看起来像是某种缓存问题。我更改了docker compose文件中的服务名称和容器名称,它开始工作…您应该使用标志:
发件人:
重要的是要注意,图像入口点脚本永远不会
对现有数据库的更改。如果装载现有的数据
目录转换为var/lib/mysql,mysql\u ROOT\u PASSWORD等选项将
无效
我的问题是该卷已经存在。当我用docker compose down-v删除卷时
当我提到它时,它会创建数据库。你怎么知道它忽略了你的环境变量?@RedCricket:因为MYSQL\u数据库是用来设置数据库名的,但是创建的数据库名为“db”,而不是“mydb”。然而,事实证明这是一个缓存问题。使用docker compose up运行--强制重新创建只加载先前创建的图像。如果我更改了服务和容器名称,我会得到我想要的,但是我现在需要一种方法来避免这个缓存问题代码>Docker容器内部?@Toankocho:是的,我正在做Docker exec以进入正在运行的mysql容器。你解决了这个问题吗?我的问题和我试过的完全一样--强制重新创建并不能解决问题。
--force-recreate Recreate containers even if their configuration
and image haven't changed.