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 ¶
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 ¶
func InterpolateRawServiceMap(baseRawServices *RawServiceMap, environmentLookup EnvironmentLookup) error
InterpolateRawServiceMap replaces varialbse in raw service map struct based on environment lookup
func IsValidRemote ¶
IsValidRemote checks if the specified string is a valid remote (for builds)
func Merge ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
type Ipam struct { Driver string `yaml:"driver,omitempty"` Config []IpamConfig `yaml:"config,omitempty"` }
Ipam holds v2 network IPAM information
type IpamConfig ¶
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 ¶
type Log struct { Driver string `yaml:"driver,omitempty"` Options map[string]string `yaml:"options,omitempty"` }
Log holds v2 logging information
type NetworkConfig ¶
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 ¶
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 ¶
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 ¶
type ServiceConfigs struct {
// contains filtered or unexported fields
}
ServiceConfigs holds a concurrent safe map of ServiceConfig
func NewServiceConfigs ¶
func NewServiceConfigs() *ServiceConfigs
NewServiceConfigs initializes a new Configs struct
func (*ServiceConfigs) Add ¶
func (c *ServiceConfigs) Add(name string, service *ServiceConfig)
Add add the specifed config with the specified name
func (*ServiceConfigs) All ¶
func (c *ServiceConfigs) All() map[string]*ServiceConfig
All returns all the config at once
func (*ServiceConfigs) Get ¶
func (c *ServiceConfigs) Get(name string) (*ServiceConfig, bool)
Get returns the config and the presence of the specified name
func (*ServiceConfigs) Has ¶
func (c *ServiceConfigs) Has(name string) bool
Has checks if the config map has the specified name
func (*ServiceConfigs) Keys ¶
func (c *ServiceConfigs) Keys() []string
Keys returns the names of the config
func (*ServiceConfigs) Remove ¶
func (c *ServiceConfigs) Remove(name string)
Remove removes the config with the specified name