docker-db-backup/dump.go

46 lines
772 B
Go

package main
import (
"github.com/docker/docker/api/types"
"strings"
)
type Dumper interface {
Dump() error
}
func NewDumperFromContainer(container *types.ContainerJSON) Dumper {
switch container.Config.Image {
case "mysql":
fallthrough
case "mariadb":
return NewMysqlDumper(container)
case "postgres":
return NewPostgresDumper(container)
}
return nil
}
func dumpAllDatabases() error {
lock.Lock()
defer lock.Unlock()
for _, dumper := range store {
err := dumper.Dump()
if err != nil {
return err
}
}
return nil
}
func getDumpFilename(containerName string) string {
if strings.HasPrefix(containerName, "/") {
containerName = strings.TrimPrefix(containerName, "/")
}
return config.fullCurrentBackupPath + containerName + ".sql"
}