in internal/components/setup/compose_listener.go [55:86]
func (c *ComposeContainerListener) Listen(consumer func(container *ComposeContainer)) error {
containerEvents, errors := c.client.Events(c.ctx, types.EventsOptions{
Filters: filters.NewArgs(
filters.Arg("type", "container"),
filters.Arg("event", "start"),
),
})
if len(errors) > 0 {
return <-errors
}
go func() {
for {
select {
case msg := <-containerEvents:
container := c.foundMessage(&msg)
if container != nil {
consumer(container)
}
case err := <-errors:
if err != nil {
logger.Log.Warnf("Listen docker container failed, %v", err)
}
case <-c.ctx.Done():
c.cancel()
return
}
}
}()
return nil
}