1
0
mirror of https://github.com/amir20/dozzle.git synced 2025-12-21 13:23:07 +01:00

feat: updates agents to be more resilient by reconnecting. also adds big performance issues in swarm mode with little updates to the UI. (#3145)

This commit is contained in:
Amir Raminfar
2024-07-25 08:01:33 -07:00
committed by GitHub
parent c87a7b1272
commit 3a988b8fdc
29 changed files with 560 additions and 241 deletions

34
main.go
View File

@@ -51,14 +51,29 @@ func main() {
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
tempFile, err := os.CreateTemp("/", "agent-*.addr")
tempFile, err := os.CreateTemp("./", "agent-*.addr")
if err != nil {
log.Fatalf("failed to create temp file: %v", err)
}
defer os.Remove(tempFile.Name())
io.WriteString(tempFile, listener.Addr().String())
go cli.StartEvent(args, "", client, "agent")
agent.RunServer(client, certs, listener)
server := agent.NewServer(client, certs, args.Version())
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
go func() {
log.Infof("Dozzle agent version %s", args.Version())
log.Infof("Agent listening on %s", listener.Addr().String())
if err := server.Serve(listener); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}()
<-ctx.Done()
stop()
log.Info("Shutting down agent")
server.Stop()
log.Debugf("deleting %s", tempFile.Name())
os.Remove(tempFile.Name())
case *cli.HealthcheckCmd:
go cli.StartEvent(args, "", nil, "healthcheck")
files, err := os.ReadDir(".")
@@ -135,13 +150,20 @@ func main() {
if err != nil {
log.Fatalf("Could not read certificates: %v", err)
}
multiHostService = docker_support.NewSwarmService(localClient, certs)
manager := docker_support.NewSwarmClientManager(localClient, certs)
multiHostService = docker_support.NewMultiHostService(manager)
log.Infof("Starting in Swarm mode")
listener, err := net.Listen("tcp", ":7007")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
go agent.RunServer(localClient, certs, listener)
server := agent.NewServer(localClient, certs, args.Version())
go func() {
log.Infof("Agent listening on %s", listener.Addr().String())
if err := server.Serve(listener); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}()
} else {
log.Fatalf("Invalid mode %s", args.Mode)
}
@@ -159,7 +181,7 @@ func main() {
<-ctx.Done()
stop()
log.Info("shutting down gracefully, press Ctrl+C again to force")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
log.Fatal(err)