【发布时间】:2016-01-17 22:05:22
【问题描述】:
使用 docker-compose + docker 自动构建时,在 sql 转储中加载的最佳方式是什么?
暂时忽略 docker-compose 并尝试了解 docker 和它的自动构建,但我意识到我可能需要 docker-compose如果我想完成我的项目目标,即使用一个 1 命令并从中拥有一个完全正常工作的 3 站点 Docker 集群
1xHAProxy
3xUbuntu/wp
3xMysqld
在我的 Dockerfile 中,我可以只包含来自我的 Github 存储库的 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
docker-compose.yml
$docker-compose up
如果我在这里完全走错了路,请给我一些参考。还可以提到,一旦我对 Docker 感觉良好,我就打算使用 CoreOS。因此,如果 CoreOS > Docker 设置的最佳实践是其他内容,请告诉我!
【问题讨论】:
-
为什么不想在
Dockerfile中添加另一个RUN命令来加载数据库转储? -
@AndyShinn
RUN会是什么样子?使用建议here 会给我The command xxx returned a non-zero code: -
具体是哪个建议?该问题的答案有一个示例,用于启动
mysqld_safe,然后在一个复合RUN命令中导入数据库。您需要先启动mysqld,然后才能导入数据库,这正是问题所要解决的问题。 -
所以@AndyShinn 也许你可以给我一个例子,它应该如何以正确的方式完成。
-
查看官方 MySQL 镜像的“初始化新实例”部分; hub.docker.com/_/mysql,它解释了如何提供自动执行以初始化数据库的 SQL 转储(或 shell 脚本)。您可以将这些文件挂载为卷,或将它们烘焙到映像中以进行分发
标签: mysql docker dockerfile docker-compose