为什么MySQL docker容器会忽略MYSQL_DATABASE env var?

时间:2019-09-29 01:40:31

标签: 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
    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,它开始起作用...

2 个答案:

答案 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删除卷时 当我提出它时,它将创建数据库。