初始化容器时docker-compose运行脚本

时间:2018-11-18 00:56:53

标签: mysql docker docker-compose mysql-workbench docker-entrypoint

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

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:[警告]在命令行上使用密码   界面可能不安全。

     

mysql-image_1 |错误:无法初始化   batch_readline-可能是输入源是目录还是块   设备。 docker_mysql-image_1退出,代码为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`));

谢谢。

1 个答案:

答案 0 :(得分:0)

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