1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Windows: Support ARG in builder

Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
John Howard 2016-05-04 11:06:54 -07:00
parent 973d6f0820
commit 6b5c83bf18
3 changed files with 23 additions and 11 deletions

View file

@ -6,7 +6,7 @@ import "fmt"
// a command not supported on the platform. // a command not supported on the platform.
func platformSupports(command string) error { func platformSupports(command string) error {
switch command { switch command {
case "user", "stopsignal", "arg": case "user", "stopsignal":
return fmt.Errorf("The daemon on this platform does not support the command '%s'", command) return fmt.Errorf("The daemon on this platform does not support the command '%s'", command)
} }
return nil return nil

View file

@ -7,6 +7,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"github.com/docker/docker/utils"
"github.com/docker/docker/volume" "github.com/docker/docker/volume"
containertypes "github.com/docker/engine-api/types/container" containertypes "github.com/docker/engine-api/types/container"
) )
@ -30,8 +31,10 @@ type ExitStatus struct {
// CreateDaemonEnvironment creates a new environment variable slice for this container. // CreateDaemonEnvironment creates a new environment variable slice for this container.
func (container *Container) CreateDaemonEnvironment(linkedEnv []string) []string { func (container *Container) CreateDaemonEnvironment(linkedEnv []string) []string {
// On Windows, nothing to link. Just return the container environment. // because the env on the container can override certain default values
return container.Config.Env // we need to replace the 'env' keys where they match and append anything
// else.
return utils.ReplaceOrAppendEnvValues(linkedEnv, container.Config.Env)
} }
// UnmountIpcMounts unmount Ipc related mounts. // UnmountIpcMounts unmount Ipc related mounts.

View file

@ -6171,17 +6171,24 @@ func (s *DockerSuite) TestBuildStopSignal(c *check.C) {
} }
func (s *DockerSuite) TestBuildBuildTimeArg(c *check.C) { func (s *DockerSuite) TestBuildBuildTimeArg(c *check.C) {
testRequires(c, DaemonIsLinux) // Windows does not support ARG
imgName := "bldargtest" imgName := "bldargtest"
envKey := "foo" envKey := "foo"
envVal := "bar" envVal := "bar"
args := []string{ args := []string{"--build-arg", fmt.Sprintf("%s=%s", envKey, envVal)}
"--build-arg", fmt.Sprintf("%s=%s", envKey, envVal), var dockerfile string
if daemonPlatform == "windows" {
// Bugs in Windows busybox port - use the default base image and native cmd stuff
dockerfile = fmt.Sprintf(`FROM `+minimalBaseImage()+`
ARG %s
RUN echo %%%s%%
CMD setlocal enableextensions && if defined %s (echo %%%s%%)`, envKey, envKey, envKey, envKey)
} else {
dockerfile = fmt.Sprintf(`FROM busybox
ARG %s
RUN echo $%s
CMD echo $%s`, envKey, envKey, envKey)
} }
dockerfile := fmt.Sprintf(`FROM busybox
ARG %s
RUN echo $%s
CMD echo $%s`, envKey, envKey, envKey)
if _, out, err := buildImageWithOut(imgName, dockerfile, true, args...); err != nil || !strings.Contains(out, envVal) { if _, out, err := buildImageWithOut(imgName, dockerfile, true, args...); err != nil || !strings.Contains(out, envVal) {
if err != nil { if err != nil {
@ -6191,7 +6198,9 @@ func (s *DockerSuite) TestBuildBuildTimeArg(c *check.C) {
} }
containerName := "bldargCont" containerName := "bldargCont"
if out, _ := dockerCmd(c, "run", "--name", containerName, imgName); out != "\n" { out, _ := dockerCmd(c, "run", "--name", containerName, imgName)
out = strings.Trim(out, " \r\n'")
if out != "" {
c.Fatalf("run produced invalid output: %q, expected empty string", out) c.Fatalf("run produced invalid output: %q, expected empty string", out)
} }
} }