首页 > 解决方案 > 我想在 docker 容器中创建一个 MySql 数据库,并在容器启动时在其中执行一些 DDL 和 DML 语句

问题描述

这是我的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 语句的文件并执行它。

标签: mysqldocker

解决方案


在 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是脚本的位置


推荐阅读