首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用码头自动生成和组合添加>加载.SQL

问使用码头自动生成和组合添加>加载.SQL
EN

Stack Overflow用户
提问于 2016-01-17 22:05:22
回答 1查看 789关注 0票数 1

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

已经忽略了docker-compose一段时间,并试图理解docker,它最初是自动构建的,但是我开始意识到,如果我想完成我的项目目标,即使用一个1命令,并且有一个完全工作的3站点Docker集群,那么我可能需要docker-compose。

1xHAProxy

3xUbuntu/wp

3xMysqld

在我的Dockerfile中,我只需要包含db.sql,就像

代码语言:javascript
复制
ADD db.sql /tmp/db.sql

找不到最好的方法来加载我的DB,而不编写任何在构建之外的命令。

想知道如何使用Dockerfile或撰写解决方案

只需在mysql 下面使用从mysql中执行一个命令,就可以在将db.sql加载到mysql db wp时构建/运行 db.sql db.sql。

Dockerfile

代码语言:javascript
复制
$docker run -d user/repo:tag

docker-compose.yml

代码语言:javascript
复制
$docker-compose up

如果完全走错了路,请给我一些参考资料。也可以提到,我计划使用CoreOS一旦我觉得好的码头。所以,如果CoreOS > Docker设置上的最佳实践是另一回事,请告诉我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-17 23:30:39

有两个选项可用于在生成或运行时初始化SQL文件:

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

另一种选择是在https://stackoverflow.com/a/25920875/684908中执行类似于答案的操作,只需添加一个命令,如:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34844317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档