我想创建一个dockerfile,以便创建一个已经安装了mysql和数据库的容器。
我有一个 sql
包含my*.sql文件和 script
包含我的 db_builder.sh
完成我需要的所有工作(创建数据库、导入所需的sql文件等)的脚本。
我唯一缺少的就是在 db_builder.sh
脚本运行。我还需要知道什么将是默认密码的 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条答案
按热度按时间s3fp2yjn1#
我通过以下方式解决了我的问题:
1) 从mysql映像而不是ubuntu映像创建dockerfile
2) 分裂我的
db_builder.sh
分为两个脚本:prepare_sql_files.sh
->准备需要导入的sql文件-db_import.sh
->它实际上是3) 设置运行
prepare_sql_files.sh
在dockerfile中db_import.sh
在/docker-entrypoint-initdb.d
由于mysql docker映像的此功能:当容器第一次启动时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh、.sql和.sql.gz的文件,这些文件位于/docker entrypoint initdb.d中。文件将按字母顺序执行。您可以很容易地填充您的mysql服务,方法是将一个sql转储装载到该目录中,并提供带有贡献数据的自定义图像。默认情况下,sql文件将导入mysql\ u database变量指定的数据库。
所以我的dockerfile现在看起来像这样: