Esempio n. 1
0
func (d *DiscoAPI) createDockerContainer(p string, payload []byte) {
	var con disco.Container
	err := json.Unmarshal(payload, &con)
	if err != nil {
		d.Reply([]byte(err.Error()))
		return
	}
	create := docker.CreateContainerOptions{
		Name: con.Name,
	}
	config := &docker.Config{
		Image:           con.Image,
		Env:             con.Env,
		NetworkDisabled: false,
		AttachStdin:     false,
		AttachStdout:    false,
		AttachStderr:    false,
	}
	create.Config = config
	c, err := d.docker.CreateContainer(create)
	if err != nil {
		d.Reply([]byte(err.Error()))
		return
	}
	hc := &docker.HostConfig{
		NetworkMode:     "bridge",
		PublishAllPorts: true,
	}
	hc.LxcConf = make([]docker.KeyValuePair, 0)
	hc.PortBindings = make(map[docker.Port][]docker.PortBinding)
	err = d.docker.StartContainer(c.ID, hc)
	if err != nil {
		d.Reply([]byte(err.Error()))
		return
	}
	con.Id = c.ID
	conj, err := con.Marshal()
	if err != nil {
		d.Reply([]byte(err.Error()))
		return
	}
	reply := []byte("success\n")
	reply = append(reply, conj...)
	d.Reply(reply)
}