mirror of https://github.com/docker/docs.git
support private images, labels and other new flags in docker build
Signed-off-by: Victor Vieux <vieux@docker.com>
This commit is contained in:
parent
5e8bad38f6
commit
e98cf00409
|
@ -18,6 +18,7 @@ import (
|
|||
"github.com/docker/docker/pkg/parsers/kernel"
|
||||
versionpkg "github.com/docker/docker/pkg/version"
|
||||
apitypes "github.com/docker/engine-api/types"
|
||||
containertypes "github.com/docker/engine-api/types/container"
|
||||
dockerfilters "github.com/docker/engine-api/types/filters"
|
||||
"github.com/docker/swarm/cluster"
|
||||
"github.com/docker/swarm/experimental"
|
||||
|
@ -1220,25 +1221,26 @@ func postBuild(c *context, w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
buildImage := &dockerclient.BuildImage{
|
||||
DockerfileName: r.Form.Get("dockerfile"),
|
||||
RepoName: r.Form.Get("t"),
|
||||
RemoteURL: r.Form.Get("remote"),
|
||||
buildImage := &apitypes.ImageBuildOptions{
|
||||
Dockerfile: r.Form.Get("dockerfile"),
|
||||
Tags: r.Form["t"],
|
||||
RemoteContext: r.Form.Get("remote"),
|
||||
NoCache: boolValue(r, "nocache"),
|
||||
Pull: boolValue(r, "pull"),
|
||||
PullParent: boolValue(r, "pull"),
|
||||
Remove: boolValue(r, "rm"),
|
||||
ForceRemove: boolValue(r, "forcerm"),
|
||||
SuppressOutput: boolValue(r, "q"),
|
||||
Isolation: containertypes.Isolation(r.Form.Get("isolation")),
|
||||
Memory: int64ValueOrZero(r, "memory"),
|
||||
MemorySwap: int64ValueOrZero(r, "memswap"),
|
||||
CpuShares: int64ValueOrZero(r, "cpushares"),
|
||||
CpuPeriod: int64ValueOrZero(r, "cpuperiod"),
|
||||
CpuQuota: int64ValueOrZero(r, "cpuquota"),
|
||||
CpuSetCpus: r.Form.Get("cpusetcpus"),
|
||||
CpuSetMems: r.Form.Get("cpusetmems"),
|
||||
CPUShares: int64ValueOrZero(r, "cpushares"),
|
||||
CPUPeriod: int64ValueOrZero(r, "cpuperiod"),
|
||||
CPUQuota: int64ValueOrZero(r, "cpuquota"),
|
||||
CPUSetCPUs: r.Form.Get("cpusetcpus"),
|
||||
CPUSetMems: r.Form.Get("cpusetmems"),
|
||||
CgroupParent: r.Form.Get("cgroupparent"),
|
||||
ShmSize: int64ValueOrZero(r, "shmsize"),
|
||||
Context: r.Body,
|
||||
BuildArgs: make(map[string]string),
|
||||
}
|
||||
|
||||
buildArgsJSON := r.Form.Get("buildargs")
|
||||
|
@ -1246,11 +1248,21 @@ func postBuild(c *context, w http.ResponseWriter, r *http.Request) {
|
|||
json.Unmarshal([]byte(buildArgsJSON), &buildImage.BuildArgs)
|
||||
}
|
||||
|
||||
authEncoded := r.Header.Get("X-Registry-Auth")
|
||||
ulimitsJSON := r.Form.Get("ulimits")
|
||||
if ulimitsJSON != "" {
|
||||
json.Unmarshal([]byte(ulimitsJSON), &buildImage.Ulimits)
|
||||
}
|
||||
|
||||
labelsJSON := r.Form.Get("labels")
|
||||
if labelsJSON != "" {
|
||||
json.Unmarshal([]byte(labelsJSON), &buildImage.Labels)
|
||||
}
|
||||
|
||||
authEncoded := r.Header.Get("X-Registry-Config")
|
||||
if authEncoded != "" {
|
||||
buf, err := base64.URLEncoding.DecodeString(r.Header.Get("X-Registry-Auth"))
|
||||
buf, err := base64.URLEncoding.DecodeString(r.Header.Get("X-Registry-Config"))
|
||||
if err == nil {
|
||||
json.Unmarshal(buf, &buildImage.Config)
|
||||
json.Unmarshal(buf, &buildImage.AuthConfigs)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package cluster
|
|||
import (
|
||||
"io"
|
||||
|
||||
"github.com/docker/engine-api/types"
|
||||
"github.com/samalba/dockerclient"
|
||||
)
|
||||
|
||||
|
@ -94,7 +95,7 @@ type Cluster interface {
|
|||
RenameContainer(container *Container, newName string) error
|
||||
|
||||
// BuildImage build an image
|
||||
BuildImage(*dockerclient.BuildImage, io.Writer) error
|
||||
BuildImage(*types.ImageBuildOptions, io.Writer) error
|
||||
|
||||
// TagImage tag an image
|
||||
TagImage(IDOrName string, repo string, tag string, force bool) error
|
||||
|
|
|
@ -18,6 +18,7 @@ import (
|
|||
log "github.com/Sirupsen/logrus"
|
||||
"github.com/docker/docker/pkg/version"
|
||||
engineapi "github.com/docker/engine-api/client"
|
||||
"github.com/docker/engine-api/types"
|
||||
engineapinop "github.com/docker/swarm/api/nopclient"
|
||||
"github.com/samalba/dockerclient"
|
||||
"github.com/samalba/dockerclient/nopclient"
|
||||
|
@ -1128,10 +1129,13 @@ func (e *Engine) RenameContainer(container *Container, newName string) error {
|
|||
}
|
||||
|
||||
// BuildImage builds an image
|
||||
func (e *Engine) BuildImage(buildImage *dockerclient.BuildImage) (io.ReadCloser, error) {
|
||||
reader, err := e.client.BuildImage(buildImage)
|
||||
func (e *Engine) BuildImage(buildImage *types.ImageBuildOptions) (io.ReadCloser, error) {
|
||||
resp, err := e.apiClient.ImageBuild(context.TODO(), *buildImage)
|
||||
e.CheckConnectionErr(err)
|
||||
return reader, err
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Body, nil
|
||||
}
|
||||
|
||||
// TagImage tags an image
|
||||
|
|
|
@ -14,6 +14,7 @@ import (
|
|||
"time"
|
||||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
"github.com/docker/engine-api/types"
|
||||
"github.com/docker/swarm/cluster"
|
||||
"github.com/docker/swarm/cluster/mesos/task"
|
||||
"github.com/docker/swarm/scheduler"
|
||||
|
@ -639,12 +640,12 @@ func (c *Cluster) RANDOMENGINE() (*cluster.Engine, error) {
|
|||
}
|
||||
|
||||
// BuildImage builds an image
|
||||
func (c *Cluster) BuildImage(buildImage *dockerclient.BuildImage, out io.Writer) error {
|
||||
func (c *Cluster) BuildImage(buildImage *types.ImageBuildOptions, out io.Writer) error {
|
||||
c.scheduler.Lock()
|
||||
|
||||
// get an engine
|
||||
config := &cluster.ContainerConfig{dockerclient.ContainerConfig{
|
||||
CpuShares: buildImage.CpuShares,
|
||||
CpuShares: buildImage.CPUShares,
|
||||
Memory: buildImage.Memory,
|
||||
}}
|
||||
nodes, err := c.scheduler.SelectNodesForContainer(c.listNodes(), config)
|
||||
|
|
|
@ -14,6 +14,7 @@ import (
|
|||
log "github.com/Sirupsen/logrus"
|
||||
"github.com/docker/docker/pkg/discovery"
|
||||
"github.com/docker/docker/pkg/stringid"
|
||||
"github.com/docker/engine-api/types"
|
||||
"github.com/docker/go-units"
|
||||
"github.com/docker/swarm/cluster"
|
||||
"github.com/docker/swarm/scheduler"
|
||||
|
@ -895,12 +896,12 @@ func (c *Cluster) RenameContainer(container *cluster.Container, newName string)
|
|||
}
|
||||
|
||||
// BuildImage build an image
|
||||
func (c *Cluster) BuildImage(buildImage *dockerclient.BuildImage, out io.Writer) error {
|
||||
func (c *Cluster) BuildImage(buildImage *types.ImageBuildOptions, out io.Writer) error {
|
||||
c.scheduler.Lock()
|
||||
|
||||
// get an engine
|
||||
config := cluster.BuildContainerConfig(dockerclient.ContainerConfig{
|
||||
CpuShares: buildImage.CpuShares,
|
||||
CpuShares: buildImage.CPUShares,
|
||||
Memory: buildImage.Memory,
|
||||
Env: convertMapToKVStrings(buildImage.BuildArgs),
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue