docker-db-backup/main.go

56 lines
1000 B
Go
Raw Permalink Normal View History

2021-08-18 17:47:49 +00:00
package main
2021-08-18 19:50:15 +00:00
import (
"github.com/robfig/cron/v3"
2021-08-18 19:50:15 +00:00
"log"
"os"
2021-08-18 19:50:15 +00:00
)
func runBackup() {
2021-08-18 19:50:15 +00:00
c, err := getClient()
if err != nil {
log.Fatalf("Could not create client: %s", err)
}
updateFullBackupPath()
2021-08-18 19:50:15 +00:00
containers, err := getContainers(c)
if err != nil {
log.Fatalf("Could not get containers: %s", err)
}
storeContainers(c, containers)
err = cleanupOldBackups()
if err != nil {
log.Fatalf("Could not clean old backups: %s", err)
}
2021-08-18 19:50:15 +00:00
dumpAllDatabases(c)
2021-08-18 19:50:15 +00:00
err = callWebhook()
if err != nil {
log.Fatalf("Could not call completion webhook: %s", err)
}
2021-12-05 12:38:36 +00:00
log.Println("Done.")
}
2021-08-18 19:50:15 +00:00
func main() {
noCron, has := os.LookupEnv("BACKUP_NO_CRON")
if has && (noCron == "true" || noCron == "1") {
log.Println("BACKUP_NO_CRON set, running backup once, then exiting")
runBackup()
return
}
2023-06-05 16:35:21 +00:00
cr := cron.New()
_, err := cr.AddFunc(config.Schedule, runBackup)
if err != nil {
log.Fatalf("Could not create cron job: %s\n", err)
2021-12-05 12:42:35 +00:00
}
log.Println("DB backup service started.")
2022-01-06 12:05:09 +00:00
cr.Run()
2021-08-18 17:47:49 +00:00
}