ADD>使用Docker自动构建和编写LOAD .SQL

时间:2016-01-17 22:05:23

标签: mysql docker dockerfile docker-compose

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

暂时忽略 docker-compose 并尝试了解docker及其自动构建,但我们已经意识到我可能需要 docker-compose ,如果我想完成我的项目目标,即使用一个1命令,并且从中有一个完全正常工作的3站点 Docker群集

1xHAProxy
3xUbuntu / WP
3xMysqld

在我的Dockerfile中,我可以在我的Github repo中包含db.sql,如

ADD db.sql /tmp/db.sql

如果没有在构建之外编写任何命令而无法加载我的数据库,那么找不到最佳实践。

想要使用Dockerfile或Compose

了解您的解决方案

只需执行mysql FROM mysql下面的命令之一 ADD db.sql db.sql应该在将db.sql加载到mysql时构建/运行db wp

Dockerfile

$docker run -d user/repo:tag

搬运工-compose.yml

$docker-compose up

如果我完全走错了路,请给我一些参考。还可以提一下,一旦我对Docker感觉良好,我计划使用CoreOS。因此,如果CoreOS上的最佳实践> Docker设置是别的,让我知道!

1 个答案:

答案 0 :(得分:1)

在构建或运行时初始化SQL文件有两个选项:

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

另一种选择是在https://stackoverflow.com/a/25920875/684908做一些类似答案的事情,只需添加如下命令:

/docker-entrypoint-initdb.d