mysql - 我想在 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 语句的文件并执行它。
解决方案
在 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
是脚本的位置
推荐阅读
- c# - WCF自托管:身份验证方案匿名的http请求被禁止
- rest - 使用 Kubernetes 编排的 RESTful 服务
- php - 无法在 Jasmin SMS 网关中发送 unicode 内容
- solr - Nutch 在索引 SOLR 时出现 Shuffle 错误。
- ruby-on-rails - Rails + S3:解析存储桶并在控制器外部加载图像
- javascript - 将数组变量转换回字符串以进行 ajax 发布
- .net - 正则表达式 C# - 组匹配不迭代
- reactjs - 在 Reactjs 组件中使用条件
- c# - “if(!myobject)”和“if(myobject == null)”一样吗?
- accessibility - 画外音将按钮读取为按钮列表