Don't env-var evaluate labels from docker build cmd line

Fixes #26027

Signed-off-by: Doug Davis <dug@us.ibm.com>
This commit is contained in:
Doug Davis 2016-10-05 18:15:46 -07:00
Родитель e097c2a938
Коммит 28a9a7deb0
2 изменённых файлов: 14 добавлений и 1 удалений

Просмотреть файл

@ -229,7 +229,7 @@ func (b *Builder) build(stdout io.Writer, stderr io.Writer, out io.Writer) (stri
if len(b.options.Labels) > 0 {
line := "LABEL "
for k, v := range b.options.Labels {
line += fmt.Sprintf("%q=%q ", k, v)
line += fmt.Sprintf("%q='%s' ", k, v)
}
_, node, err := parser.ParseLine(line, &b.directive)
if err != nil {

Просмотреть файл

@ -6638,6 +6638,19 @@ func (s *DockerSuite) TestBuildLabelsOverride(c *check.C) {
c.Fatalf("Labels %s, expected %s", res, expected)
}
// Command line option labels with env var
name = "scratchz"
expected = `{"bar":"$PATH"}`
_, err = buildImage(name,
`FROM scratch`,
true, "--label", "bar=$PATH")
c.Assert(err, check.IsNil)
res = inspectFieldJSON(c, name, "Config.Labels")
if res != expected {
c.Fatalf("Labels %s, expected %s", res, expected)
}
}
// Test case for #22855