gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:39:21 24 4
gpt4 key购买 nike

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

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

1xHA代理
3xUbuntu/wp
3xMysqld

在我的 Dockerfile 中,我可以只包含来 self 的 Github 存储库的 db.sql

ADD db.sql /tmp/db.sql

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

想知道您使用 Dockerfile 或 Compose 解决这个问题

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

Dockerfile

$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/Dockerfile 中的 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 中的答案的事情。只需添加一个命令,例如:

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

关于mysql - ADD > LOAD .SQL 使用 Docker 自动构建和组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34844317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com