mirror of
https://github.com/amir20/dozzle.git
synced 2025-12-25 23:03:47 +01:00
41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"github.com/amir20/dozzle/internal/docker"
|
|
"github.com/amir20/dozzle/internal/ingest"
|
|
docker_support "github.com/amir20/dozzle/internal/support/docker"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
type IngestCmd struct {
|
|
Addr string `arg:"--ingest-addr,env:DOZZLE_INGEST_ADDR" default:"localhost:9428" help:"sets the host:port to bind for the ingest"`
|
|
}
|
|
|
|
func (c IngestCmd) Run(args Args, embeddedCerts embed.FS) error {
|
|
client, err := docker.NewLocalClient(args.Hostname)
|
|
service := docker_support.NewDockerClientService(client, args.Filter)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
ingestor := ingest.NewVictoriaIngestor(service)
|
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
|
|
|
go func() {
|
|
log.Info().Msgf("Dozzle ingestor version %s", args.Version())
|
|
if err := ingestor.Start(ctx); err != nil {
|
|
log.Error().Err(err).Msg("Ingestor failed")
|
|
}
|
|
}()
|
|
<-ctx.Done()
|
|
log.Info().Msg("Ingestor stopped")
|
|
stop()
|
|
|
|
return nil
|
|
}
|