nyh*_*r77 3 mysql database docker dockerfile docker-compose
提前致以问候和感谢,我实际上是 docker 和 docker-compose 的新手,迄今为止观看了大量视频并阅读了很多文章并进行了尝试。
我有一个前端容器和一个后端容器,它们作为 Dockerfile 和 docker-compose 设置单独构建和运行。
(我首先使用 Dockerfile 进行构建,然后将容器集成到 docker-compose 中,以确保我正确理解事情)
我现在需要数据库信息,因为我将使用 docker-compose,据我了解,它应该在具有 React 前端和 django 后端的同一网络下构建。
我有一个正在使用的备份 mysql 转储文件,我认为我需要做的是让一个容器运行 mysql 服务器并提供我的表(就像我在本地工作一样)。我无法弄清楚如何将备份导入到我的 docker mysql 容器中。
任何帮助表示赞赏。
到目前为止,我尝试的是在命令行中使用 docker 来概述 Dockerfile 中需要的部分,然后将哪些内容移至 docker-compose 中,如上所述:
docker run -d --name root -e MYSQL_ROOT_PASSWORD=root mysql # to create my db container
Run Code Online (Sandbox Code Playgroud)
然后我尝试了一堆命令和命令的排列,最近在 CLI 中,以下是我最近的一些尝试和错误:
docker exec -i root mysql -uroot -proot --force < /Users/homeImac/Downloads/dump-dev-2020-11-10-22-43-06.dmp
第 22 行出现错误 1046 (3D000):未选择数据库
docker exec -i f803170ce38b sh -c 'exec mysql -uroot -p"root"' < /Users/homeImac/Downloads/dump-dev-2020-11-10-22-43-06.dmp
第 22 行出现错误 1046 (3D000):未选择数据库
docker exec -i f803170ce38b sh -c 'exec mysql -uroot -h 192.168.1.51 -p"root"' < /Users/homeImac/Downloads/dump-dev-2020-11-10-22-43-06.dmp
错误 1045 (28000):用户“root”@“homeimac”的访问被拒绝(使用密码:YES)
到目前为止,我已经在网上搜索过,但我不确定下一步该去哪里,我有正确的想法吗?如果有人有如何导入数据库转储(在 dmp 或 dmp.gz 中)的示例,一旦我开始工作,我实际上会在 docker-compose 文件中执行此操作。
想想看,我只需要创建容器并导入,所以我什至可能不需要 Dockerfile。当我到达那里时我会过那座桥。这就是我的想法:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'app'
Run Code Online (Sandbox Code Playgroud)
等等等等
我学到了很多东西,速度非常快,也许太快了。感谢您的任何提示!
您的问题的答案在MySQL 的 docker hub 页面中给出。
初始化一个新实例
当容器第一次启动时,将创建一个具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行在 /docker-entrypoint->initdb.d 中找到的扩展名为 .sh、.sql 和 .sql.gz 的文件。文件将按字母顺序执行。您可以通过将 SQL 转储安装到该目录中来轻松填充 mysql 服务,并提供带有贡献数据的自定义映像。SQL 文件将默认导入到 MYSQL_DATABASE 变量指定的数据库中。
在 docker-compose.yml 中使用:
volumes:
- ${PWD}/config/start.sql:/docker-entrypoint-initdb.d/start.sql
Run Code Online (Sandbox Code Playgroud)
就是这样。
| 归档时间: |
|
| 查看次数: |
16498 次 |
| 最近记录: |