gpt4 book ai didi

mysql - 如何将 stdout 从 docker 容器重定向到主机

转载 作者:IT王子 更新时间:2023-10-29 00:41:26 33 4
gpt4 key购买 nike

我正在尝试从主机系统调用 docker 的 mysqldump 以保存来自 golang 的 mysql 转储。它适用于主机 mysqldump,但不适用于 docker 的 mysqldump。

func writeDb(dbName string)
{
var mysqldumpPath string = "/usr/bin/mysqldump"
//var mysqldumpPath string = "/Applications/MAMP/Library/bin/mysqldump"

//cmd := exec.Command(mysqldumpPath, fmt.Sprintf("-u%s", USER), fmt.Sprintf("-p%s", PASSWORD) , dbName)
cmd := exec.Command("docker", "exec", "some-mysql", mysqldumpPath, fmt.Sprintf("%s", USER), fmt.Sprintf("-p%s", PASSWORD) , dbName, ">", fmt.Sprintf("%s.sql", dbName))

stdout, err := cmd.StdoutPipe()
if err != nil
{
log.Fatal(err)
}

if err := cmd.Start(); err != nil
{
log.Fatal(err)
}

bytes, err := ioutil.ReadAll(stdout)
if err != nil
{
log.Fatal(err)
}
err = ioutil.WriteFile("./backup/" + dbName +".sql", bytes, 0644)
if err != nil
{
panic(err)
}

我只得到了非空数据库 empty mysql dump

最佳答案

代替 mysql,尝试一个简单的命令,如:

  • 密码
  • echo a > b,只是为了看看您是否确实在主机上看到了一个文件 b

您需要在从主机 ( using volume ) 挂载的文件夹中的容器内进行重定向,以便创建的文件在 docker exec 退出容器后继续存在.

关于mysql - 如何将 stdout 从 docker 容器重定向到主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46356999/

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