docker-db-backup/store.go

48 lines
819 B
Go
Raw Permalink Normal View History

2021-08-18 18:16:30 +00:00
package main
import (
"context"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
"log"
"sync"
)
var (
2021-08-18 18:25:59 +00:00
store map[string]Dumper
2021-08-18 18:16:30 +00:00
lock sync.Mutex
)
func init() {
2021-08-18 18:25:59 +00:00
store = make(map[string]Dumper)
2021-08-18 18:16:30 +00:00
}
func storeContainers(c *client.Client, containers []types.Container) {
lock.Lock()
defer lock.Unlock()
2021-12-05 12:40:53 +00:00
for _, container := range containers {
delete(store, container.ID)
}
2021-08-18 18:16:30 +00:00
for _, container := range containers {
if container.State != "running" {
continue
}
info, err := c.ContainerInspect(context.Background(), container.ID)
if err != nil {
log.Fatalf("Could not get Container info: %s", err)
}
2021-08-18 18:25:59 +00:00
dumper := NewDumperFromContainer(&info)
if dumper == nil {
continue
}
log.Printf("Found container %s\n", container.Names)
2021-08-18 18:16:30 +00:00
2021-08-18 18:25:59 +00:00
store[container.ID] = dumper
2021-08-18 18:16:30 +00:00
}
}