1
0
mirror of https://github.com/containrrr/watchtower.git synced 2024-12-12 09:04:17 +02:00
watchtower/main.go
Brian DeHamer c02c4b9ec1 Handle container links
Ensures that linked containers are restarted if any of their
dependencies are restarted -- and makes sure that everything happens in
the correct order.
2015-07-15 22:22:00 +00:00

62 lines
916 B
Go

package main
import (
"fmt"
"os"
"os/signal"
"sync"
"syscall"
"time"
"github.com/CenturyLinkLabs/watchtower/updater"
"github.com/codegangsta/cli"
)
var (
wg sync.WaitGroup
)
func main() {
app := cli.NewApp()
app.Name = "watchtower"
app.Usage = "Automatically update running Docker containers"
app.Action = start
app.Flags = []cli.Flag{
cli.IntFlag{
Name: "interval, i",
Value: 300,
Usage: "poll interval (in seconds)",
},
}
handleSignals()
app.Run(os.Args)
}
func handleSignals() {
// Graceful shut-down on SIGINT/SIGTERM
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
signal.Notify(c, syscall.SIGTERM)
go func() {
<-c
wg.Wait()
os.Exit(1)
}()
}
func start(c *cli.Context) {
secs := time.Duration(c.Int("interval")) * time.Second
for {
wg.Add(1)
if err := updater.Run(); err != nil {
fmt.Println(err)
}
wg.Done()
time.Sleep(secs)
}
}