使用mysql创建dockerfile

iyfamqjs  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(472)

我想创建一个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
s3fp2yjn

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现在看起来像这样:

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

相关问题