Skip to content
This repository has been archived by the owner on Jul 2, 2022. It is now read-only.

aacebedo/docker-events

 
 

Repository files navigation

docker-events

GoDoc Build Status Go Report Card License

A really small library with the intent to ease the use of Events method of engine-api.

Usage

It should be pretty straighforward to use :

import "events"

// […]

cli, err := client.NewEnvClient()
if err != nil {
    // Do something..
}

cxt, cancel := context.WithCancel(context.Background())
// Call cancel() to get out of the monitor

errChan := events.Monitor(ctx, cli, types.EventsOptions{}, func(event eventtypes.Message) {
    fmt.Printf("%v\n", event)
})

if err := <-errChan; err != nil {
    // Do something
}

It's also possible to do a little more advanced stuff using EventHandler :

import "events"

// […]

cli, err := client.NewEnvClient()
if err != nil {
    // Do something..
}

// Setup the event handler
eventHandler := events.NewHandler(events.ByAction)
eventHandler.Handle("create", func(m eventtypes.Message) {
    // Do something in case of create message
})

stoppedOrDead := func(m eventtypes.Message) {
    // Do something in case of stop or die message as it might be the
    // same way to react.
}

eventHandler.Handle("die", stoppedOrDead)
eventHandler.Handle("stop", stoppedOrDead)

// The other type of message will be discard.

// Filter the events we wams so receive
filters := filters.NewArgs()
filters.Add("type", "container")
options := types.EventsOptions{
    Filters: filters,
}

cxt, cancel := context.WithCancel(context.Background())
// Call cancel() to get out of the monitor

errChan := events.MonitorWithHandler(ctx, cli, options, eventHandler)

if err := <-errChan; err != nil {
    // Do something
}

About

A tiny library on top of docker/engine-api to handle docker events

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 94.3%
  • Makefile 5.7%