ADD>使用Docker的LOAD .SQL自动构build和撰写

在使用docker-compose + docker自动构build时加载sql转储的最佳方式是什么?

一直忽略docker构成了一会儿,试图理解docker,它是自动构build起初,但已经认识到,我可能需要docker组成,如果我想完成我的项目目标是使用一个1命令和有一个完整的3站点Docker集群

1xHAProxy
3xUbuntu / WP
3xMysqld

在我的Dockerfile中,我可以像从Github仓库那样包含db.sql

ADD db.sql /tmp/db.sql 

没有find一个最佳做法,我应该如何加载我的数据库而不写任何命令以外的构build。

想知道使用Dockerfile或Compose的解决scheme

通过执行下面的命令之一,使用ADD db.sql mysql mysql:db.sql应该build立/运行,同时加载db.sql到mysql db wp

Dockerfile

 $docker run -d user/repo:tag 

泊坞窗,compose.yml

 $docker-compose up 

如果我完全错误的path请给我一些参考。 还可以提一下,我打算使用CoreOS,一旦我感觉良好的Docker。 所以如果CoreOS> Docker设置上的最佳实践是别的,让我知道!

在构build或运行时,有两个用于初始化SQL文件的选项:

首先是将你的MySQL镜像放在官方镜像上,并把你的SQL文件放在/docker-entrypoint-initdb.d (使用ADD my.sql /docker-entrypoint-initdb.d/中的Dockerfile )。 官方图像有一个相当复杂的入口点脚本( https://github.com/docker-library/mysql/blob/master/5.7/docker-entrypoint.sh ),它启动MySQL,初始化用户名和密码, /docker-entrypoint-initdb.d文件夹。

另一个select是做类似于https://stackoverflow.com/a/25920875/684908的答案,只需添加一个命令,如:

 COPY dump.sql /tmp/ RUN /bin/bash -c "/usr/bin/mysqld_safe &" && \ sleep 5 && \ mysql -u root -e "CREATE DATABASE mydb" && \ mysql -u root mydb < /tmp/dump.sql