【发布时间】:2019-09-29 01:40:31
【问题描述】:
我有以下 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,它开始工作......
【问题讨论】:
-
你怎么知道它忽略了你的环境变量?
-
@RedCricket:因为 MYSQL_DATABASE 旨在设置数据库名称,但创建的数据库名为 'db' 而不是 'mydb'。然而事实证明这是一个缓存问题。使用 docker-compose up --force-recreate 运行只会加载之前创建的图像。如果我更改服务和容器名称,我会得到我想要的,但我现在需要一种方法来避免这个缓存问题。
-
你在 Docker 容器中运行
mysql > show databases;吗? -
@ToanQuocHo:是的,我正在执行 docker exec 以进入正在运行的 mysql 容器。
-
您解决了这个问题吗?我遇到了完全相同的问题
标签: mysql docker docker-compose