mysql - 使用 MySQL 创建 Dockerfile
问题描述
我想创建一个 Dockerfile 以创建一个已经安装了 mysql 并创建了我的数据库的容器。
我有一个sql
包含我的 *.sql 文件的script
文件夹和一个包含我的db_builder.sh
脚本的文件夹,这些脚本可以完成我需要的所有工作(创建数据库、导入所需的 sql 文件等......)。
我唯一缺少的是在db_builder.sh
脚本运行之前运行 mysql 服务器。我还需要知道root
用户的默认密码是什么。
FROM ubuntu:18.04
ADD sql src/sql
ADD scripts src/scripts
RUN apt-get update && apt-get install mysql-server -y
# somehow start mysql ???
RUN src/scripts/db_builder.sh
解决方案
我通过以下方式解决了我的问题:
1) 从 MySQL 映像而不是 Ubuntu 映像创建 Dockerfile
2) 将 mydb_builder.sh
分成两个脚本:prepare_sql_files.sh
--> 准备导入所需的 sql 文件db_import.sh
--> 实际执行导入
3)在 Dockerfile 中设置 RUN ,同时由于mysql docker 映像的此功能prepare_sql_files.sh
而只放置(添加):db_import.sh
/docker-entrypoint-initdb.d
首次启动容器时,将使用提供的配置变量创建并初始化具有指定名称的新数据库。此外,它将执行 /docker-entrypoint-initdb.d 中的扩展名为 .sh、.sql 和 .sql.gz 的文件。文件将按字母顺序执行。您可以通过将 SQL 转储安装到该目录并提供带有贡献数据的自定义图像来轻松填充您的 mysql 服务。SQL 文件将默认导入到 MYSQL_DATABASE 变量指定的数据库中。
所以我的 dockerfile 现在看起来像这样:
FROM mysql:latest
ADD sql /src/sql
ADD scripts /src/scripts
RUN /src/scripts/prepare_sql_files.sh
ADD /src/scripts /docker-entrypoint-initdb.d
推荐阅读
- javascript - 来自加速度计数据的x轴上的Javascript汽车运动?
- javascript - 每天使用 JavaScript 自动更改样式
- bootstrap-5 - BootStrap Popover 5.0 不显示
- asp.net - 迁移到 .net core 3.1 后,多重身份验证方案被破坏
- javascript - 反应打字稿FC
- ios - 自定义 tableView 单元格的自动布局问题 (?) | 迅速
- python - 使用 Python 从 json 字典中获取元素
- python - 如何在python中显示冒泡排序的比较以及交换次数
- php - 无法使用 PHP 7 XML-RPC 访问 Odoo 外部 API - 访问被拒绝,致命错误 Uncaught Ripcord_TransportException
- flutter - ListTile 单选(Flutter)