ADD > LOAD .SQL 使用 Docker 自动构建和组合

ADD > LOAD .SQL using Docker Automated build and Compose

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

暂时忽略了 docker-compose 并试图理解 docker 并且它最初是自动构建的,但后来意识到我可能需要 docker-compose 如果我想完成我的项目目标,即使用一个 1 命令并从中获得一个完全可用的 3 站点 Docker集群

1xHAProxy
3xUbuntu/wp
3xMysqld

在我的 Docker 文件中,我可以只包含 Github 存储库中的 db.sql,例如

ADD db.sql /tmp/db.sql

未能找到最佳实践我应该如何加载我的数据库而不在构建之外编写任何命令。

想知道使用 Dockerfile 或 Compose

的解决方案

只需执行 mysql FROM mysql 和 ADD [=53] 下面的命令之一=] db.sql 应该是 build / 运行 加载 db.sql 到 mysql db wp

Docker文件

$docker run -d user/repo:tag

docker-compose.yml

$docker-compose up

如果我完全走错了路,请给我一些参考。还可以提到我计划在我对 Docker 感到满意后使用 CoreOS。因此,如果 CoreOS 上的最佳实践 > Docker 设置有其他问题,请告诉我!

在构建期间或 运行 时间初始化 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 文件夹中的脚本。

另一种选择是执行类似于 中的答案的操作,只需添加一个命令,例如:

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