您好,非常感谢您的提问。我对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 < /Users/homeImac/Downloads/dump-dev-2020-11-10-22-43-06.dmp
ERROR 1046 (3D000),第22行:未选择数据库
docker exec -i f803170ce38b sh -c 'exec mysql -uroot -p"root"' < /Users/homeImac/Downloads/dump-dev-2020-11-10-22-43-06.dmp
ERROR 1046 (3D000),第22行:未选择数据库
错误1045(28000):用户'root'@'homeimac'被拒绝访问(使用密码:YES)。这是一个数据库访问权限问题。对于如何导入数据库转储的示例,请参考网络资源。在docker-compose文件中创建容器并导入即可。不一定需要Dockerfile。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
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'app'
我学得非常快,也许太快了。谢谢任何建议!
docker cp
命令将本地的备份文件复制到正在运行的容器中。然后,您可以使用docker exec
命令将备份导入到您的数据库中。 - undefineddocker 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
。这给我输出了数据库中的所有数据,但我无法确定它是否已经导入并正在提供服务。有没有办法可以判断一下?我承认可能使用了错误的命令。谢谢。 - undefined