Documentation ¶
Index ¶
- func ConvertServices(v1Services map[string]*ServiceConfigV1) (map[string]*ServiceConfig, error)
- func GetServiceHash(name string, config *ServiceConfig) string
- func Interpolate(key string, data *interface{}, environmentLookup EnvironmentLookup) error
- func InterpolateRawServiceMap(baseRawServices *RawServiceMap, environmentLookup EnvironmentLookup) error
- func IsValidRemote(remote string) bool
- func Merge(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, ...) (string, map[string]*ServiceConfig, map[string]*VolumeConfig, ...)
- func MergeServicesV1(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, ...) (map[string]*ServiceConfigV1, error)
- func MergeServicesV2(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, ...) (map[string]*ServiceConfig, error)
- type Config
- type EnvironmentLookup
- type Ipam
- type IpamConfig
- type Log
- type NetworkConfig
- type ParseOptions
- type RawService
- type RawServiceMap
- type ResourceLookup
- type ServiceConfig
- type ServiceConfigV1
- type ServiceConfigs
- func (c *ServiceConfigs) Add(name string, service *ServiceConfig)
- func (c *ServiceConfigs) All() map[string]*ServiceConfig
- func (c *ServiceConfigs) Get(name string) (*ServiceConfig, bool)
- func (c *ServiceConfigs) Has(name string) bool
- func (c *ServiceConfigs) Keys() []string
- func (c *ServiceConfigs) Len() int
- func (c *ServiceConfigs) Remove(name string)
- type VolumeConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConvertServices ¶ added in v0.3.0
func ConvertServices(v1Services map[string]*ServiceConfigV1) (map[string]*ServiceConfig, error)
ConvertServices converts a set of v1 service configs to v2 service configs
func GetServiceHash ¶
func GetServiceHash(name string, config *ServiceConfig) string
GetServiceHash computes and returns a hash that will identify a service. This hash will be then used to detect if the service definition/configuration have changed and needs to be recreated.
func Interpolate ¶
func Interpolate(key string, data *interface{}, environmentLookup EnvironmentLookup) error
Interpolate replaces variables in a map entry
func InterpolateRawServiceMap ¶ added in v0.4.0
func InterpolateRawServiceMap(baseRawServices *RawServiceMap, environmentLookup EnvironmentLookup) error
InterpolateRawServiceMap replaces varialbse in raw service map struct based on environment lookup
func IsValidRemote ¶ added in v0.3.0
IsValidRemote checks if the specified string is a valid remote (for builds)
func Merge ¶ added in v0.3.0
func Merge(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, bytes []byte, options *ParseOptions) (string, map[string]*ServiceConfig, map[string]*VolumeConfig, map[string]*NetworkConfig, error)
Merge merges a compose file into an existing set of service configs
func MergeServicesV1 ¶ added in v0.3.0
func MergeServicesV1(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, datas RawServiceMap, options *ParseOptions) (map[string]*ServiceConfigV1, error)
MergeServicesV1 merges a v1 compose file into an existing set of service configs
func MergeServicesV2 ¶ added in v0.3.0
func MergeServicesV2(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, datas RawServiceMap, options *ParseOptions) (map[string]*ServiceConfig, error)
MergeServicesV2 merges a v2 compose file into an existing set of service configs
Types ¶
type Config ¶ added in v0.3.0
type Config struct { Version string `yaml:"version,omitempty"` Services RawServiceMap `yaml:"services,omitempty"` Volumes map[string]interface{} `yaml:"volumes,omitempty"` Networks map[string]interface{} `yaml:"networks,omitempty"` }
Config holds libcompose top level configuration
func CreateConfig ¶ added in v0.4.0
CreateConfig unmarshals bytes of a YAML manifest file and returns a new Config. Initialize any defaults that can't be parsed (but are optional) across various file formats. Most of these can remain unused.
This function only handles parsing YAML in the general case. Any other file format validation should be handled by the caller.
type EnvironmentLookup ¶
type EnvironmentLookup interface {
Lookup(key string, config *ServiceConfig) []string
}
EnvironmentLookup defines methods to provides environment variable loading.
type Ipam ¶ added in v0.3.0
type Ipam struct { Driver string `yaml:"driver,omitempty"` Config []IpamConfig `yaml:"config,omitempty"` }
Ipam holds v2 network IPAM information
type IpamConfig ¶ added in v0.3.0
type IpamConfig struct { Subnet string `yaml:"subnet,omitempty"` IPRange string `yaml:"ip_range,omitempty"` Gateway string `yaml:"gateway,omitempty"` AuxAddress map[string]string `yaml:"aux_addresses,omitempty"` }
IpamConfig holds v2 network IPAM configuration information
type Log ¶ added in v0.3.0
type Log struct { Driver string `yaml:"driver,omitempty"` Options map[string]string `yaml:"options,omitempty"` }
Log holds v2 logging information
type NetworkConfig ¶ added in v0.3.0
type NetworkConfig struct { Driver string `yaml:"driver,omitempty"` DriverOpts map[string]string `yaml:"driver_opts,omitempty"` External yaml.External `yaml:"external,omitempty"` Ipam Ipam `yaml:"ipam,omitempty"` }
NetworkConfig holds v2 network configuration
type ParseOptions ¶ added in v0.3.0
type ParseOptions struct { Interpolate bool Validate bool Preprocess func(RawServiceMap) (RawServiceMap, error) Postprocess func(map[string]*ServiceConfig) (map[string]*ServiceConfig, error) }
ParseOptions are a set of options to customize the parsing process
type RawService ¶
type RawService map[string]interface{}
RawService is represent a Service in map form unparsed
type RawServiceMap ¶
type RawServiceMap map[string]RawService
RawServiceMap is a collection of RawServices
type ResourceLookup ¶
type ResourceLookup interface { Lookup(file, relativeTo string) ([]byte, string, error) ResolvePath(path, inFile string) string }
ResourceLookup defines methods to provides file loading.
type ServiceConfig ¶
type ServiceConfig struct { Build yaml.Build `yaml:"build,omitempty"` CapAdd []string `yaml:"cap_add,omitempty"` CapDrop []string `yaml:"cap_drop,omitempty"` CPUSet string `yaml:"cpuset,omitempty"` CPUQuota yaml.StringorInt `yaml:"cpu_quota,omitempty"` Command yaml.Command `yaml:"command,flow,omitempty"` CgroupParent string `yaml:"cgroup_parent,omitempty"` ContainerName string `yaml:"container_name,omitempty"` Devices []string `yaml:"devices,omitempty"` DependsOn []string `yaml:"depends_on,omitempty"` DNS yaml.Stringorslice `yaml:"dns,omitempty"` DNSOpts []string `yaml:"dns_opt,omitempty"` DNSSearch yaml.Stringorslice `yaml:"dns_search,omitempty"` DomainName string `yaml:"domainname,omitempty"` Entrypoint yaml.Command `yaml:"entrypoint,flow,omitempty"` EnvFile yaml.Stringorslice `yaml:"env_file,omitempty"` Environment yaml.MaporEqualSlice `yaml:"environment,omitempty"` Expose []string `yaml:"expose,omitempty"` Extends yaml.MaporEqualSlice `yaml:"extends,omitempty"` ExternalLinks []string `yaml:"external_links,omitempty"` ExtraHosts []string `yaml:"extra_hosts,omitempty"` GroupAdd []string `yaml:"group_add,omitempty"` Image string `yaml:"image,omitempty"` Isolation string `yaml:"isolation,omitempty"` Hostname string `yaml:"hostname,omitempty"` Ipc string `yaml:"ipc,omitempty"` Labels yaml.SliceorMap `yaml:"labels,omitempty"` Links yaml.MaporColonSlice `yaml:"links,omitempty"` Logging Log `yaml:"logging,omitempty"` MacAddress string `yaml:"mac_address,omitempty"` MemLimit yaml.MemStringorInt `yaml:"mem_limit,omitempty"` MemReservation yaml.MemStringorInt `yaml:"mem_reservation,omitempty"` MemSwapLimit yaml.MemStringorInt `yaml:"memswap_limit,omitempty"` MemSwappiness yaml.MemStringorInt `yaml:"mem_swappiness,omitempty"` NetworkMode string `yaml:"network_mode,omitempty"` Networks *yaml.Networks `yaml:"networks,omitempty"` OomKillDisable bool `yaml:"oom_kill_disable,omitempty"` OomScoreAdj yaml.StringorInt `yaml:"oom_score_adj,omitempty"` Pid string `yaml:"pid,omitempty"` Ports []string `yaml:"ports,omitempty"` Privileged bool `yaml:"privileged,omitempty"` SecurityOpt []string `yaml:"security_opt,omitempty"` ShmSize yaml.MemStringorInt `yaml:"shm_size,omitempty"` StopGracePeriod string `yaml:"stop_grace_period,omitempty"` StopSignal string `yaml:"stop_signal,omitempty"` Tmpfs yaml.Stringorslice `yaml:"tmpfs,omitempty"` VolumeDriver string `yaml:"volume_driver,omitempty"` Volumes *yaml.Volumes `yaml:"volumes,omitempty"` VolumesFrom []string `yaml:"volumes_from,omitempty"` Uts string `yaml:"uts,omitempty"` Restart string `yaml:"restart,omitempty"` ReadOnly bool `yaml:"read_only,omitempty"` StdinOpen bool `yaml:"stdin_open,omitempty"` Tty bool `yaml:"tty,omitempty"` User string `yaml:"user,omitempty"` WorkingDir string `yaml:"working_dir,omitempty"` Ulimits yaml.Ulimits `yaml:"ulimits,omitempty"` }
ServiceConfig holds version 2 of libcompose service configuration
type ServiceConfigV1 ¶ added in v0.3.0
type ServiceConfigV1 struct { Build string `yaml:"build,omitempty"` CapAdd []string `yaml:"cap_add,omitempty"` CapDrop []string `yaml:"cap_drop,omitempty"` CgroupParent string `yaml:"cgroup_parent,omitempty"` CPUQuota yaml.StringorInt `yaml:"cpu_quota,omitempty"` CPUSet string `yaml:"cpuset,omitempty"` Command yaml.Command `yaml:"command,flow,omitempty"` ContainerName string `yaml:"container_name,omitempty"` Devices []string `yaml:"devices,omitempty"` DNS yaml.Stringorslice `yaml:"dns,omitempty"` DNSOpts []string `yaml:"dns_opt,omitempty"` DNSSearch yaml.Stringorslice `yaml:"dns_search,omitempty"` Dockerfile string `yaml:"dockerfile,omitempty"` DomainName string `yaml:"domainname,omitempty"` Entrypoint yaml.Command `yaml:"entrypoint,flow,omitempty"` EnvFile yaml.Stringorslice `yaml:"env_file,omitempty"` Environment yaml.MaporEqualSlice `yaml:"environment,omitempty"` GroupAdd []string `yaml:"group_add,omitempty"` Hostname string `yaml:"hostname,omitempty"` Image string `yaml:"image,omitempty"` Isolation string `yaml:"isolation,omitempty"` Labels yaml.SliceorMap `yaml:"labels,omitempty"` Links yaml.MaporColonSlice `yaml:"links,omitempty"` LogDriver string `yaml:"log_driver,omitempty"` MacAddress string `yaml:"mac_address,omitempty"` MemLimit yaml.MemStringorInt `yaml:"mem_limit,omitempty"` MemSwapLimit yaml.MemStringorInt `yaml:"memswap_limit,omitempty"` MemSwappiness yaml.MemStringorInt `yaml:"mem_swappiness,omitempty"` Name string `yaml:"name,omitempty"` Net string `yaml:"net,omitempty"` OomKillDisable bool `yaml:"oom_kill_disable,omitempty"` OomScoreAdj yaml.StringorInt `yaml:"oom_score_adj,omitempty"` Pid string `yaml:"pid,omitempty"` Uts string `yaml:"uts,omitempty"` Ipc string `yaml:"ipc,omitempty"` Ports []string `yaml:"ports,omitempty"` Privileged bool `yaml:"privileged,omitempty"` Restart string `yaml:"restart,omitempty"` ReadOnly bool `yaml:"read_only,omitempty"` ShmSize yaml.MemStringorInt `yaml:"shm_size,omitempty"` StdinOpen bool `yaml:"stdin_open,omitempty"` SecurityOpt []string `yaml:"security_opt,omitempty"` StopSignal string `yaml:"stop_signal,omitempty"` Tmpfs yaml.Stringorslice `yaml:"tmpfs,omitempty"` Tty bool `yaml:"tty,omitempty"` User string `yaml:"user,omitempty"` VolumeDriver string `yaml:"volume_driver,omitempty"` Volumes []string `yaml:"volumes,omitempty"` VolumesFrom []string `yaml:"volumes_from,omitempty"` WorkingDir string `yaml:"working_dir,omitempty"` Expose []string `yaml:"expose,omitempty"` ExternalLinks []string `yaml:"external_links,omitempty"` LogOpt map[string]string `yaml:"log_opt,omitempty"` ExtraHosts []string `yaml:"extra_hosts,omitempty"` Ulimits yaml.Ulimits `yaml:"ulimits,omitempty"` }
ServiceConfigV1 holds version 1 of libcompose service configuration
type ServiceConfigs ¶ added in v0.3.0
type ServiceConfigs struct {
// contains filtered or unexported fields
}
ServiceConfigs holds a concurrent safe map of ServiceConfig
func NewServiceConfigs ¶ added in v0.3.0
func NewServiceConfigs() *ServiceConfigs
NewServiceConfigs initializes a new Configs struct
func (*ServiceConfigs) Add ¶ added in v0.3.0
func (c *ServiceConfigs) Add(name string, service *ServiceConfig)
Add add the specifed config with the specified name
func (*ServiceConfigs) All ¶ added in v0.4.0
func (c *ServiceConfigs) All() map[string]*ServiceConfig
All returns all the config at once
func (*ServiceConfigs) Get ¶ added in v0.3.0
func (c *ServiceConfigs) Get(name string) (*ServiceConfig, bool)
Get returns the config and the presence of the specified name
func (*ServiceConfigs) Has ¶ added in v0.3.0
func (c *ServiceConfigs) Has(name string) bool
Has checks if the config map has the specified name
func (*ServiceConfigs) Keys ¶ added in v0.3.0
func (c *ServiceConfigs) Keys() []string
Keys returns the names of the config
func (*ServiceConfigs) Len ¶ added in v0.3.0
func (c *ServiceConfigs) Len() int
Len returns the len of the configs
func (*ServiceConfigs) Remove ¶ added in v0.3.0
func (c *ServiceConfigs) Remove(name string)
Remove removes the config with the specified name