DBTest: Managed Integration Testing Dependencies via Docker for Go
DBTest Allows You to Test Against a Real Database
Using the Docker API, your Go program can manage its own testing dependencies.
This is especially useful when writing integration tests (or when it's simply impossible to mock out a dependency).
MongoDB
//Create a new Loader. This may error is Docker is not accessible
l, err := docker.NewLoader()
//Create a new MongoDB container using the loader
mongo, err := NewMongoDBContainer(context.Background(), l)
//Obtain an mgo.Session to contact MongoDB
ssn, err := mongo.NewSession()
//Do something with the Session
err = ssn.Ping()
//Stop and remove the MongoDB container
err = l.StopService(context.Background(), mongo)
_ = errArbitrary Ephemeral Docker Containers
//Create a new Loader. This may error is Docker is not accessible
loader, err := docker.NewLoader()
helloWorldSpec := docker.ServiceSpecification{
FullyQualifiedImageName: "library/hello-world",
ContainerConfig: &container.Config{
Image: "hello-world",
},
}
service, err := loader.StartService(context.Background(), &helloWorldSpec)
//no StopService call since "hello-world" exits on its own
_ = errDocker API Version
The Go Docker API is notoriously hard to vendor due to the Moby rename.
This API is based off of commit 21291e5aefe1f13f3208d57bcc4183848c492bd1
on Moby/Moby which was committed to master on June 6th, 2018.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
