diff --git a/cli/compose/convert/service.go b/cli/compose/convert/service.go index d7f64d1863..7bcce00217 100644 --- a/cli/compose/convert/service.go +++ b/cli/compose/convert/service.go @@ -147,6 +147,8 @@ func Service( Isolation: container.Isolation(service.Isolation), Init: service.Init, Sysctls: service.Sysctls, + CapabilityAdd: service.CapAdd, + CapabilityDrop: service.CapDrop, }, LogDriver: logDriver, Resources: resources, diff --git a/cli/compose/convert/service_test.go b/cli/compose/convert/service_test.go index 72e27f2f06..b7363a07fa 100644 --- a/cli/compose/convert/service_test.go +++ b/cli/compose/convert/service_test.go @@ -623,3 +623,29 @@ func TestConvertUpdateConfigParallelism(t *testing.T) { }) assert.Check(t, is.Equal(parallel, updateConfig.Parallelism)) } + +func TestConvertServiceCapAddAndCapDrop(t *testing.T) { + // test default behavior + result, err := Service("1.41", Namespace{name: "foo"}, composetypes.ServiceConfig{}, nil, nil, nil, nil) + assert.NilError(t, err) + assert.Check(t, is.DeepEqual(result.TaskTemplate.ContainerSpec.CapabilityAdd, []string(nil))) + assert.Check(t, is.DeepEqual(result.TaskTemplate.ContainerSpec.CapabilityDrop, []string(nil))) + + // with some values + service := composetypes.ServiceConfig{ + CapAdd: []string{ + "SYS_NICE", + "CAP_NET_ADMIN", + }, + CapDrop: []string{ + "CHOWN", + "DAC_OVERRIDE", + "CAP_FSETID", + "CAP_FOWNER", + }, + } + result, err = Service("1.41", Namespace{name: "foo"}, service, nil, nil, nil, nil) + assert.NilError(t, err) + assert.Check(t, is.DeepEqual(result.TaskTemplate.ContainerSpec.CapabilityAdd, service.CapAdd)) + assert.Check(t, is.DeepEqual(result.TaskTemplate.ContainerSpec.CapabilityDrop, service.CapDrop)) +} diff --git a/cli/compose/types/types.go b/cli/compose/types/types.go index d490d2122c..fd748d62b2 100644 --- a/cli/compose/types/types.go +++ b/cli/compose/types/types.go @@ -9,8 +9,6 @@ import ( // UnsupportedProperties not yet supported by this implementation of the compose file var UnsupportedProperties = []string{ "build", - "cap_add", - "cap_drop", "cgroupns_mode", "cgroup_parent", "devices",