docker

package
Version: v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 2, 2016 License: Apache-2.0 Imports: 27 Imported by: 170

Documentation

Index

Constants

View Source
const (
	NAME    = Label("io.docker.compose.name")
	PROJECT = Label("io.docker.compose.project")
	SERVICE = Label("io.docker.compose.service")
	HASH    = Label("io.docker.compose.config-hash")
)

Libcompose default labels.

View Source
const (
	// DefaultAPIVersion is the default docker API version set by libcompose
	DefaultAPIVersion = "1.20"
)
View Source
const DefaultDockerfileName = "Dockerfile"

DefaultDockerfileName is the default name of a Dockerfile

View Source
const DefaultTag = "latest"

DefaultTag is the name of the default tag of an image.

Variables

This section is empty.

Functions

func And

func And(left, right map[string][]string) map[string][]string

And returns a map of labels by merging the two specified values (left and right).

func AndString

func AndString(left, right string) string

AndString returns a json list of labels by merging the two specified values (left and right) serialized as string.

func Convert

Convert converts a service configuration to an docker API structures (Config and HostConfig)

func ConvertToAPI

func ConvertToAPI(s *Service, name string) (*dockerclient.CreateContainerOptions, error)

ConvertToAPI converts a service configuration to a docker API container configuration.

func CreateClient

func CreateClient(c ClientOpts) (*dockerclient.Client, error)

CreateClient creates a docker client based on the specified options.

func CreateTar

func CreateTar(p *project.Project, name string) (io.ReadCloser, error)

CreateTar create a build context tar for the specified project and service name.

func Filter

func Filter(vs []string, f func(string) bool) []string

Filter filters the specified string slice with the specified function.

func GetContainerByID

func GetContainerByID(client *dockerclient.Client, id string) (*dockerclient.APIContainers, error)

GetContainerByID looks up the hosts containers with the specified Id and returns it, or an error.

func GetContainerByName

func GetContainerByName(client *dockerclient.Client, name string) (*dockerclient.APIContainers, error)

GetContainerByName looks up the hosts containers with the specified name and returns it, or an error.

func GetContainersByFilter

func GetContainersByFilter(client *dockerclient.Client, filters ...map[string][]string) ([]dockerclient.APIContainers, error)

GetContainersByFilter looks up the hosts containers with the specified filters and returns a list of container matching it, or an error.

func NewProject

func NewProject(context *Context) (*project.Project, error)

NewProject creates a Project with the specified context.

Types

type Builder

type Builder interface {
	Build(imageName string, p *project.Project, service project.Service) error
}

Builder defines methods to provide a docker builder. This makes libcompose not tied up to the docker daemon builder.

type ClientFactory

type ClientFactory interface {
	// Create constructs a Docker client for the given service. The passed in
	// config may be nil in which case a generic client for the project should
	// be returned.
	Create(service project.Service) *dockerclient.Client
}

ClientFactory is a factory to create docker clients.

func NewDefaultClientFactory

func NewDefaultClientFactory(opts ClientOpts) (ClientFactory, error)

NewDefaultClientFactory creates and returns the default client factory that uses github.com/samalba/dockerclient.

type ClientOpts

type ClientOpts struct {
	TLS        bool
	TLSVerify  bool
	TLSOptions tlsconfig.Options
	TrustKey   string
	Host       string
	APIVersion string
}

ClientOpts holds docker client options (host, tls, ..)

type Container

type Container struct {
	project.EmptyService
	// contains filtered or unexported fields
}

Container holds information about a docker container and the service it is tied on. It implements Service interface by encapsulating a EmptyService.

func NewContainer

func NewContainer(client *dockerclient.Client, name string, service *Service) *Container

NewContainer creates a container struct with the specified docker client, name and service.

func (*Container) Create

func (c *Container) Create(imageName string) (*dockerclient.APIContainers, error)

Create creates the container based on the specified image name and send an event to notify the container has been created. If the container already exists, does nothing.

func (*Container) Delete

func (c *Container) Delete() error

Delete removes the container if existing. If the container is running, it tries to stop it first.

func (*Container) Down

func (c *Container) Down() error

Down stops the container.

func (*Container) ID

func (c *Container) ID() (string, error)

ID returns the container Id.

func (*Container) Info

func (c *Container) Info(qFlag bool) (project.Info, error)

Info returns info about the container, like name, command, state or ports.

func (*Container) IsRunning

func (c *Container) IsRunning() (bool, error)

IsRunning returns the running state of the container.

func (*Container) Kill

func (c *Container) Kill() error

Kill kill the container.

func (*Container) Log

func (c *Container) Log() error

Log forwards container logs to the project configured logger.

func (*Container) Name

func (c *Container) Name() string

Name returns the container name.

func (*Container) OutOfSync

func (c *Container) OutOfSync(imageName string) (bool, error)

OutOfSync checks if the container is out of sync with the service definition. It looks if the the service hash container label is the same as the computed one.

func (*Container) Pause

func (c *Container) Pause() error

Pause pauses the container. If the containers are already paused, don't fail.

func (*Container) Port

func (c *Container) Port(port string) (string, error)

Port returns the host port the specified port is mapped on.

func (*Container) Pull

func (c *Container) Pull() error

Pull pulls the image the container is based on.

func (*Container) Recreate

func (c *Container) Recreate(imageName string) (*dockerclient.APIContainers, error)

Recreate will not refresh the container by means of relaxation and enjoyment, just delete it and create a new one with the current configuration

func (*Container) Restart

func (c *Container) Restart() error

Restart restarts the container if existing, does nothing otherwise.

func (*Container) Unpause

func (c *Container) Unpause() error

Unpause unpauses the container. If the containers are not paused, don't fail.

func (*Container) Up

func (c *Container) Up(imageName string) error

Up creates and start the container based on the image name and send an event to notify the container has been created. If the container exists but is stopped it tries to start it.

type Context

type Context struct {
	project.Context
	Builder       Builder
	ClientFactory ClientFactory
	ConfigDir     string
	ConfigFile    *cliconfig.ConfigFile
}

Context holds context meta information about a libcompose project and docker client information (like configuration file, builder to use, …)

func (*Context) LookupConfig

func (c *Context) LookupConfig() error

LookupConfig tries to load the docker configuration files, if any.

type DaemonBuilder

type DaemonBuilder struct {
	// contains filtered or unexported fields
}

DaemonBuilder is the daemon "docker build" Builder implementation.

func NewDaemonBuilder

func NewDaemonBuilder(context *Context) *DaemonBuilder

NewDaemonBuilder creates a DaemonBuilder based on the specified context.

func (*DaemonBuilder) Build

func (d *DaemonBuilder) Build(imageName string, p *project.Project, service project.Service) error

Build implements Builder. It consumes the docker build API endpoint and sends a tar of the specified service build context.

type Label

type Label string

Label represents a docker label.

func (Label) Eq

func (f Label) Eq(value string) map[string][]string

Eq returns a label map representation with the specified value.

func (Label) EqString

func (f Label) EqString(value string) string

EqString returns a label json string representation with the specified value.

func (Label) Str

func (f Label) Str() string

Str returns the label name.

type Namer

type Namer interface {
	io.Closer
	Next() string
}

Namer defines method to provide container name.

func NewNamer

func NewNamer(client *dockerclient.Client, project, service string) Namer

NewNamer returns a namer that returns names based on the specified project and service name and an inner counter, e.g. project_service_1, project_service_2…

func NewSingleNamer

func NewSingleNamer(name string) Namer

NewSingleNamer returns a namer that only allows a single name.

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service is a project.Service implementations.

func NewService

func NewService(name string, serviceConfig *project.ServiceConfig, context *Context) *Service

NewService creates a service

func (*Service) Build

func (s *Service) Build() error

Build implements Service.Build. If an imageName is specified or if the context has no build to work with it will do nothing. Otherwise it will try to build the image and returns an error if any.

func (*Service) Config

func (s *Service) Config() *project.ServiceConfig

Config returns the configuration of the service (project.ServiceConfig).

func (*Service) Containers

func (s *Service) Containers() ([]project.Container, error)

Containers implements Service.Containers. It returns the list of containers that are related to the service.

func (*Service) Create

func (s *Service) Create() error

Create implements Service.Create. It ensures the image exists or build it if it can and then create a container.

func (*Service) Delete

func (s *Service) Delete() error

Delete implements Service.Delete. It removes any containers related to the service.

func (*Service) DependentServices

func (s *Service) DependentServices() []project.ServiceRelationship

DependentServices returns the dependent services (as an array of ServiceRelationship) of the service.

func (*Service) Down

func (s *Service) Down() error

Down implements Service.Down. It stops any containers related to the service.

func (*Service) Info

func (s *Service) Info(qFlag bool) (project.InfoSet, error)

Info implements Service.Info. It returns an project.InfoSet with the containers related to this service (can be multiple if using the scale command).

func (*Service) Kill

func (s *Service) Kill() error

Kill implements Service.Kill. It kills any containers related to the service.

func (*Service) Log

func (s *Service) Log() error

Log implements Service.Log. It returns the docker logs for each container related to the service.

func (*Service) Name

func (s *Service) Name() string

Name returns the service name.

func (*Service) Pause

func (s *Service) Pause() error

Pause implements Service.Pause. It puts into pause the container(s) related to the service.

func (*Service) Pull

func (s *Service) Pull() error

Pull implements Service.Pull. It pulls the image of the service and skip the service that would need to be built.

func (*Service) Restart

func (s *Service) Restart() error

Restart implements Service.Restart. It restarts any containers related to the service.

func (*Service) Scale

func (s *Service) Scale(scale int) error

Scale implements Service.Scale. It creates or removes containers to have the specified number of related container to the service to run.

func (*Service) Start

func (s *Service) Start() error

Start implements Service.Start. It tries to start a container without creating it.

func (*Service) Unpause

func (s *Service) Unpause() error

Unpause implements Service.Pause. It brings back from pause the container(s) related to the service.

func (*Service) Up

func (s *Service) Up() error

Up implements Service.Up. It builds the image if needed, creates a container and start it.

type ServiceFactory

type ServiceFactory struct {
	// contains filtered or unexported fields
}

ServiceFactory is an implementation of project.ServiceFactory.

func (*ServiceFactory) Create

func (s *ServiceFactory) Create(project *project.Project, name string, serviceConfig *project.ServiceConfig) (project.Service, error)

Create creates a Service based on the specified project, name and service configuration.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL