Docker Compose执行mysqldump时输出打印而非写入文件的解决方法
问题解决:Docker Compose中mysqldump输出未写入容器内/tmp文件
问题原因
你执行的命令里,> /tmp/mydb.sql是在本地主机层面执行的重定向操作,而非在db容器内部运行。mysqldump的输出实际被写入了你本地机器的/tmp/mydb.sql,而非容器内的对应路径,这就是容器里找不到文件的核心原因。
解决方案
方案1:将输出写入容器内部的/tmp目录
需要让重定向操作在容器内部执行,用bash -c包裹完整命令:
docker compose exec db bash -c 'mysqldump -uroot mydb > /tmp/mydb.sql'
执行后,可进入容器验证文件是否存在:
docker compose exec db ls -l /tmp/mydb.sql
方案2:将输出导出到本地主机(如果需求是本地备份)
如果你的真实需求是把备份文件保存到本地而非容器内,直接使用你原来的命令即可,但要到本地机器的/tmp目录查看文件。也可以指定本地的具体路径,比如当前工作目录:
docker compose exec db mysqldump -uroot mydb > ./mydb.sql
内容的提问来源于stack exchange,提问作者Coder1
相关产品推荐
相关产品推荐

