1
0
mirror of https://github.com/rancher/os.git synced 2025-09-01 23:04:41 +00:00

Services in compose format

This commit is contained in:
Darren Shepherd
2015-04-15 22:57:59 -07:00
parent adc6825ee6
commit 0b5eb352ba
12 changed files with 328 additions and 141 deletions

View File

@@ -71,6 +71,7 @@ func NewContainerFromService(dockerHost string, name string, service *project.Se
Service: service,
},
}
return c.Parse()
}
@@ -174,34 +175,53 @@ func (c *Container) requiresSyslog() bool {
return (c.ContainerCfg.Service.LogDriver == "" || c.ContainerCfg.Service.LogDriver == "syslog")
}
func (c *Container) requiresUserDocker() bool {
if c.dockerHost == config.DOCKER_HOST {
return true
}
for _, v := range c.ContainerCfg.Service.Volumes {
if strings.Index(v, "/var/run/docker.sock") != -1 {
return true
}
}
return false
}
func (c *Container) hasLink(link string) bool {
return util.Contains(c.ContainerCfg.Service.Links, link)
}
func (c *Container) addLink(link string) {
if c.hasLink(link) {
return
}
log.Debugf("Adding %s link to %s", link, c.Name)
c.ContainerCfg.Service.Links = append(c.ContainerCfg.Service.Links, link)
}
func (c *Container) parseService() {
client, err := NewClient(c.dockerHost)
if err != nil {
c.Err = err
return
if c.requiresSyslog() {
c.addLink("syslog")
}
if c.ContainerCfg.Service.Image != "" {
if c.requiresUserDocker() {
c.addLink("userdockerwait")
} else if c.ContainerCfg.Service.Image != "" {
client, err := NewClient(c.dockerHost)
if err != nil {
c.Err = err
return
}
i, _ := client.InspectImage(c.ContainerCfg.Service.Image)
if i == nil && !c.hasLink("network") {
log.Debugf("Adding network link to %s", c.Name)
if i == nil {
c.addLink("network")
}
}
if c.requiresSyslog() && !c.hasLink("syslog") {
log.Debugf("Adding syslog link to %s\n", c.Name)
c.addLink("syslog")
}
cfg, hostConfig, err := docker.Convert(c.ContainerCfg.Service)
if err != nil {
c.Err = err
@@ -215,7 +235,6 @@ func (c *Container) parseService() {
c.remove = c.Config.Labels[config.REMOVE] != "false"
c.ContainerCfg.CreateOnly = c.Config.Labels[config.CREATE_ONLY] == "true"
c.ContainerCfg.ReloadConfig = c.Config.Labels[config.RELOAD_CONFIG] == "true"
}
func (c *Container) parseCmd() {