docker-在容器初始化时编写运行脚本

docker-compose run scripts when container is initialized

我是 docker 的新手。我在 windows 7 机器上使用 docker 工具箱。 我正在尝试为 MySQL 编写一个 docker-compose.yml,它创建一个数据库和 运行s 2 个脚本(创建 table 并插入)

version: '3'
services:
  mysql-image:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: myDatabase
      MYSQL_USER: test
      MYSQL_PASSWORD: pwtest
    ports:
     - "3306:3306"
    volumes:
     - ./sqlscripts/:/docker-entrypoint-initdb.d/

volumes:
    sqlscripts:

我可以连接到数据库,但我遇到的问题是 运行正在运行脚本。 大多数情况下我 运行 进入以下错误:

mysql-image_1 | mysql: [Warning] Using a password on the command line interface can be insecure.

mysql-image_1 | ERROR: Can't initialize batch_readline - may be the input source is a directory or a block device. docker_mysql-image_1 exited with code 1

我搜索了一段时间,试图让它工作,但此时我不知道我做错了什么。这是我的 .sql 脚本之一,当 docker 容器启动时,我试图将其 运行 它。 createTablePerson.sql

CREATE TABLE `myDatabase`.`Person` (
  `idPerson` INT NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(45) NOT NULL,
  `age` INT NOT NULL,
  PRIMARY KEY (`idPerson`));

谢谢。

我进一步调查,似乎是因为我在 Windows 7 上,我必须在 VirtualBox VM 中使用 docker-工具箱,其中 运行s。 windows 主机和 docker-工具箱之间似乎没有共享我的脚本位置。我注意到文件已复制到容器中,但它们被视为空目录。我将我的脚本移动到用户位置,似乎脚本被复制到容器并且 运行 完美。现在我正在寻找一种方法来尝试使其他路径可见。我更喜欢将我的脚本放在我的 java 项目下。