我想在Docker容器中创建MySql数据库并在容器启动时在其中执行一些DDL和DML语句

时间:2018-09-20 05:23:30

标签: mysql docker

这是我的docker-compose.yml文件

version: "3.5"
services:
  docker-mysql:
    image: mysql:5.7
    container_name: docker-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=user_management
      - MYSQL_PASSWORD=password

默认数据库已创建“ user_management” ,现在我要执行的文件中包含DDL和DML语句,即DDL语句(创建表)和DML语句(插入几个用户)默认情况下)。不是通过输入bash并手动执行语句,而是通过任何自动docker方式加载包含DDL和DML语句的文件并执行它。

1 个答案:

答案 0 :(得分:0)

在mysql dockerhub中,在/docker-entrypoint-initdb.d中找到的扩展名为.sh,.sql和.sql.gz的文件将在容器启动时执行到MYSQL_DATABASE变量指定的数据库。

version: "3.5"
services:
  docker-mysql:
     image: mysql:5.7
     container_name: docker-mysql
     environment:
       - MYSQL_ROOT_PASSWORD=password
       - MYSQL_DATABASE=user_management
       - MYSQL_PASSWORD=password
     volumes:
       - /yourscript:/docker-entrypoint-initdb.d

因此,如上所述,您可以装载卷并在该位置添加DDL和DML脚本。然后mysql将在启动时执行它们。 /yourscript是脚本的位置