libcompose: github.com/docker/libcompose/config Index | Files

package config

import "github.com/docker/libcompose/config"

Index

Package Files

convert.go hash.go interpolation.go merge.go merge_v1.go merge_v2.go schema.go schema_helpers.go types.go utils.go validation.go

func ConvertServices Uses

func ConvertServices(v1Services map[string]*ServiceConfigV1) (map[string]*ServiceConfig, error)

ConvertServices converts a set of v1 service configs to v2 service configs

func GetServiceHash Uses

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 Uses

func Interpolate(key string, data *interface{}, environmentLookup EnvironmentLookup) error

Interpolate replaces variables in a map entry

func InterpolateRawServiceMap Uses

func InterpolateRawServiceMap(baseRawServices *RawServiceMap, environmentLookup EnvironmentLookup) error

InterpolateRawServiceMap replaces varialbse in raw service map struct based on environment lookup

func IsValidRemote Uses

func IsValidRemote(remote string) bool

IsValidRemote checks if the specified string is a valid remote (for builds)

func Merge Uses

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 Uses

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 Uses

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

type Config Uses

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 Uses

func CreateConfig(bytes []byte) (*Config, error)

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 Uses

type EnvironmentLookup interface {
    Lookup(key string, config *ServiceConfig) []string
}

EnvironmentLookup defines methods to provides environment variable loading.

type Ipam Uses

type Ipam struct {
    Driver string       `yaml:"driver,omitempty"`
    Config []IpamConfig `yaml:"config,omitempty"`
}

Ipam holds v2 network IPAM information

type IpamConfig Uses

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 Uses

type Log struct {
    Driver  string            `yaml:"driver,omitempty"`
    Options map[string]string `yaml:"options,omitempty"`
}

Log holds v2 logging information

type NetworkConfig Uses

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 Uses

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 Uses

type RawService map[string]interface{}

RawService is represent a Service in map form unparsed

type RawServiceMap Uses

type RawServiceMap map[string]RawService

RawServiceMap is a collection of RawServices

type ResourceLookup Uses

type ResourceLookup interface {
    Lookup(file, relativeTo string) ([]byte, string, error)
    ResolvePath(path, inFile string) string
}

ResourceLookup defines methods to provides file loading.

type ServiceConfig Uses

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"`
    CPUShares       yaml.StringorInt     `yaml:"cpu_shares,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 Uses

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"`
    CPUShares      yaml.StringorInt     `yaml:"cpu_shares,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 Uses

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

ServiceConfigs holds a concurrent safe map of ServiceConfig

func NewServiceConfigs Uses

func NewServiceConfigs() *ServiceConfigs

NewServiceConfigs initializes a new Configs struct

func (*ServiceConfigs) Add Uses

func (c *ServiceConfigs) Add(name string, service *ServiceConfig)

Add add the specifed config with the specified name

func (*ServiceConfigs) All Uses

func (c *ServiceConfigs) All() map[string]*ServiceConfig

All returns all the config at once

func (*ServiceConfigs) Get Uses

func (c *ServiceConfigs) Get(name string) (*ServiceConfig, bool)

Get returns the config and the presence of the specified name

func (*ServiceConfigs) Has Uses

func (c *ServiceConfigs) Has(name string) bool

Has checks if the config map has the specified name

func (*ServiceConfigs) Keys Uses

func (c *ServiceConfigs) Keys() []string

Keys returns the names of the config

func (*ServiceConfigs) Len Uses

func (c *ServiceConfigs) Len() int

Len returns the len of the configs

func (*ServiceConfigs) Remove Uses

func (c *ServiceConfigs) Remove(name string)

Remove removes the config with the specified name

type VolumeConfig Uses

type VolumeConfig struct {
    Driver     string            `yaml:"driver,omitempty"`
    DriverOpts map[string]string `yaml:"driver_opts,omitempty"`
    External   yaml.External     `yaml:"external,omitempty"`
}

VolumeConfig holds v2 volume configuration

Package config imports 20 packages (graph) and is imported by 94 packages. Updated 2018-09-14. Refresh now. Tools for package owners.