mirror of https://github.com/docker/compose.git
Merge pull request #1030 from docker/feat-container-labels
compose: Add service labels
This commit is contained in:
commit
893a469b87
|
@ -17,7 +17,6 @@
|
||||||
package compose
|
package compose
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -119,7 +118,5 @@ func TestBuildBindMount(t *testing.T) {
|
||||||
mount, err := buildMount(volume)
|
mount, err := buildMount(volume)
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
assert.Assert(t, filepath.IsAbs(mount.Source))
|
assert.Assert(t, filepath.IsAbs(mount.Source))
|
||||||
_, err = os.Stat(mount.Source)
|
|
||||||
assert.NilError(t, err)
|
|
||||||
assert.Equal(t, mount.Type, mountTypes.TypeBind)
|
assert.Equal(t, mount.Type, mountTypes.TypeBind)
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,18 +82,22 @@ func getContainerCreateOptions(p *types.Project, s types.ServiceConfig, number i
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
// TODO: change oneoffLabel value for containers started with `docker compose run`
|
|
||||||
labels := map[string]string{
|
labels := map[string]string{}
|
||||||
projectLabel: p.Name,
|
for k, v := range s.Labels {
|
||||||
serviceLabel: s.Name,
|
labels[k] = v
|
||||||
versionLabel: ComposeVersion,
|
|
||||||
oneoffLabel: "False",
|
|
||||||
configHashLabel: hash,
|
|
||||||
workingDirLabel: p.WorkingDir,
|
|
||||||
configFilesLabel: strings.Join(p.ComposeFiles, ","),
|
|
||||||
containerNumberLabel: strconv.Itoa(number),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: change oneoffLabel value for containers started with `docker compose run`
|
||||||
|
labels[projectLabel] = p.Name
|
||||||
|
labels[serviceLabel] = s.Name
|
||||||
|
labels[versionLabel] = ComposeVersion
|
||||||
|
labels[oneoffLabel] = "False"
|
||||||
|
labels[configHashLabel] = hash
|
||||||
|
labels[workingDirLabel] = p.WorkingDir
|
||||||
|
labels[configFilesLabel] = strings.Join(p.ComposeFiles, ",")
|
||||||
|
labels[containerNumberLabel] = strconv.Itoa(number)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
runCmd strslice.StrSlice
|
runCmd strslice.StrSlice
|
||||||
entrypoint strslice.StrSlice
|
entrypoint strslice.StrSlice
|
||||||
|
|
|
@ -50,14 +50,14 @@ func TestLocalComposeUp(t *testing.T) {
|
||||||
const projectName = "compose-e2e-demo"
|
const projectName = "compose-e2e-demo"
|
||||||
|
|
||||||
t.Run("build", func(t *testing.T) {
|
t.Run("build", func(t *testing.T) {
|
||||||
res := c.RunDockerCmd("compose", "build", "-f", "../../../tests/composefiles/demo_multi_port.yaml")
|
res := c.RunDockerCmd("compose", "build", "-f", "../composefiles/demo_multi_port.yaml")
|
||||||
res.Assert(t, icmd.Expected{Out: "COPY words.sql /docker-entrypoint-initdb.d/"})
|
res.Assert(t, icmd.Expected{Out: "COPY words.sql /docker-entrypoint-initdb.d/"})
|
||||||
res.Assert(t, icmd.Expected{Out: "COPY pom.xml ."})
|
res.Assert(t, icmd.Expected{Out: "COPY pom.xml ."})
|
||||||
res.Assert(t, icmd.Expected{Out: "COPY static /static/"})
|
res.Assert(t, icmd.Expected{Out: "COPY static /static/"})
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("up", func(t *testing.T) {
|
t.Run("up", func(t *testing.T) {
|
||||||
c.RunDockerCmd("compose", "up", "-d", "-f", "../../../tests/composefiles/demo_multi_port.yaml", "--project-name", projectName, "-d")
|
c.RunDockerCmd("compose", "up", "-d", "-f", "../composefiles/demo_multi_port.yaml", "--project-name", projectName, "-d")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("check running project", func(t *testing.T) {
|
t.Run("check running project", func(t *testing.T) {
|
||||||
|
@ -78,7 +78,7 @@ func TestLocalComposeUp(t *testing.T) {
|
||||||
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.project": "compose-e2e-demo"`})
|
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.project": "compose-e2e-demo"`})
|
||||||
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.oneoff": "False",`})
|
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.oneoff": "False",`})
|
||||||
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.config-hash":`})
|
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.config-hash":`})
|
||||||
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.project.config_files": "../../../tests/composefiles/demo_multi_port.yaml"`})
|
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.project.config_files": "../composefiles/demo_multi_port.yaml"`})
|
||||||
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.project.working_dir":`})
|
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.project.working_dir":`})
|
||||||
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.service": "web"`})
|
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.service": "web"`})
|
||||||
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.version":`})
|
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.version":`})
|
||||||
|
@ -89,6 +89,12 @@ func TestLocalComposeUp(t *testing.T) {
|
||||||
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.version": `})
|
res.Assert(t, icmd.Expected{Out: `"com.docker.compose.version": `})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("check user labels", func(t *testing.T) {
|
||||||
|
res := c.RunDockerCmd("inspect", projectName+"_web_1")
|
||||||
|
res.Assert(t, icmd.Expected{Out: `"my-label": "test"`})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("down", func(t *testing.T) {
|
t.Run("down", func(t *testing.T) {
|
||||||
_ = c.RunDockerCmd("compose", "down", "--project-name", projectName)
|
_ = c.RunDockerCmd("compose", "down", "--project-name", projectName)
|
||||||
})
|
})
|
|
@ -13,3 +13,5 @@ services:
|
||||||
image: gtardif/sentences-web
|
image: gtardif/sentences-web
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
|
labels:
|
||||||
|
- "my-label=test"
|
||||||
|
|
Loading…
Reference in New Issue