我試圖從主機系統調用docker的mysqldump以保存從golang的mysql轉儲。它可以與主機mysqldump正常工作,但不能與docker的mysqldump一起使用。如何將stdout從Docker容器重定向到主機
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
你正在做的exec和輸出重定向到一個文件,然後期待的數據是在標準輸出上也,這是行不通的。你應該使用一個標準輸出或重定向 –
你解決了你的問題嗎?因爲你確實選擇了我的答案... – VonC
是的,我解決了這個問題,但用另一種方式,我將解決方案發布在我的答案中 – user214603