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