Docker MySQL不会使用数据popup数据库

我有以下docker-compose.yml

version: '2' services: storage: image: library/mysql:5.5 environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=storage ports: - 3306:3306 volumes: - ./mysql-initdb:/docker-entrypoint-initdb.d - ./mysql-volume:/var/lib/mysql 

在docker-entrypoint-initdb.d目录下面.sql脚本:

 BEGIN; DROP DATABASE IF EXISTS `storage`; CREATE DATABASE `storage`; USE `storage`; DROP TABLE IF EXISTS SETTINGS; CREATE TABLE SETTINGS ( `NAME` VARCHAR(100) NOT NULL, `VALUE` VARCHAR(100) NOT NULL, PRIMARY KEY(`NAME`) ) ENGINE=MEMORY DEFAULT CHARSET=utf8; INSERT INTO `storage`.`SETTINGS` (`NAME`, `VALUE`) VALUES ('AAAAA','BBBBB'); COMMIT; 

当我执行docker-compose up我得到了执行.sql脚本的信息:

/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/1_storage_schema.sql

当我从MySQL Workbench连接到该数据库时,我只能看到没有数据的空表。 它看起来像INSERT语句没有执行。

我也试过:

  1. 命名具有和不具有“`”字符的列
  2. 使用而不是BEGIN / COMMIT

在缺less/volumes中,正确的语法是:

 volumes: - ./mysql/docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d 

发生的是,文件夹内的内容不会被复制,而是在docker-entrypoint-initdb.d一个文件夹。 为了确保它存在于正确的位置,请使用docker exec查看容器内部。