使用MySQL创建Dockerfile

时间:2019-01-08 23:34:36

标签: mysql docker 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 个答案:

答案 0 :(得分:0)

我通过以下方式解决了我的问题:

1)从MySQL映像而不是Ubuntu映像创建Dockerfile

2)将我的db_builder.sh分成两个脚本:  -prepare_sql_files.sh->准备要导入的所需sql文件  -db_import.sh->实际上执行导入

3)由于mysql docker image的这一功能,在Dockerfile中设置了prepare_sql_files.sh的运行,而只是将db_import.sh放置(ADD)在/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