【发布时间】:2021-04-11 14:35:28
【问题描述】:
提前问候和感谢,我实际上是 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
然后我尝试了一堆命令和命令排列,最近在 CLI 中,这是我最近的一些尝试和错误:
docker exec -i root mysql -uroot -proot --force
ERROR 1046 (3D000) at line 22: No database selected
docker exec -i f803170ce38b sh -c 'exec mysql -uroot -p"root"' /homeImac/Downloads/dump-dev-2020-11-10-22-43-06.dmp
ERROR 1046 (3D000) at line 22: No database selected
docker exec -i f803170ce38b sh -c 'exec mysql -uroot -h 192.168.1.51 -p"root"'
错误 1045 (28000): 用户 'root'@'homeimac' 的访问被拒绝(使用密码:YES)
到目前为止,我已经浏览了网络,但我不确定下一步该去哪里,我的想法是否正确?如果有人有如何导入数据库转储(在 dmp 或 dmp.gz 中)的示例,一旦我开始工作,我实际上会在 docker-compose 文件中执行此操作。
考虑一下,我只需要创建容器并导入,所以我什至可能不需要 Dockerfile。 当我到达那里时,我会过那座桥。这就是我的想法:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'app'
等等等等
我学了很多东西超级快,也许太快了。感谢您的任何提示!
【问题讨论】:
-
user
docker cp命令将您的转储从本地复制到正在运行的容器中。然后您可以使用docker exec将转储导入您的数据库。 -
它似乎工作,但它不是我所期望的。我从容器内开始:
docker cp /Users/homeImac/Downloads/dump-dev-2020-11-10-22-43-06.dmp b12e46379195:/dump-dev-2020-11-10-22-43-06.dmp,然后是exec -i b12e46379195 mysql -uroot -proot rolls < dump-dev-2020-11-10-22-43-06.dmp i。这给了我数据库中所有数据的输出,但我不知道它是否真的被导入并被服务。有没有办法告诉我?我可能有错误的命令,我承认。谢谢
标签: mysql database docker docker-compose dockerfile