feat: support PID namespace mode in Compose (#276)

This adds `pid: host` compose key support.

Modelled after #238.

See: #237

Signed-off-by: Miek Gieben <miek@miek.nl>
Co-authored-by: Pasha Sviderski <me@psviderski.name>
This commit is contained in:
Miek Gieben
2026-03-24 16:18:53 +10:00
committed by GitHub
co-authored by Pasha Sviderski
parent 2ab58d24d4
commit 98439b7743
8 changed files with 29 additions and 0 deletions
+1
View File
@@ -53,6 +53,7 @@ func ServiceSpecFromCompose(project *types.Project, serviceName string) (api.Ser
Healthcheck: healthcheckFromCompose(service.HealthCheck),
Image: service.Image,
Init: service.Init,
Pid: container.PidMode(service.Pid),
Privileged: service.Privileged,
PullPolicy: pullPolicy,
Resources: resourcesFromCompose(service),
+1
View File
@@ -127,6 +127,7 @@ func TestServiceSpecFromCompose(t *testing.T) {
"max-file": "3",
},
},
Pid: "host",
Privileged: true,
PullPolicy: api.PullPolicyAlways,
Resources: api.ContainerResources{
+1
View File
@@ -6,6 +6,7 @@ services:
- ALL
command: ["nginx", "updated", "command"]
cpus: 0.5
pid: host
deploy:
update_config:
order: stop-first
+20
View File
@@ -47,6 +47,26 @@ func TestEvalContainerSpecChange_ContainerCapDrop(t *testing.T) {
assert.Equal(t, ContainerNeedsRecreate, EvalContainerSpecChange(newSpec, currentSpec))
}
func TestEvalContainerSpecChange_ContainerPid(t *testing.T) {
t.Parallel()
currentSpec := api.ServiceSpec{
Container: api.ContainerSpec{
Image: "nginx:latest",
},
}
newSpec := api.ServiceSpec{
Container: api.ContainerSpec{
Image: "nginx:latest",
Pid: "host",
CapAdd: []string{"NET_ADMIN"},
},
}
assert.Equal(t, ContainerNeedsRecreate, EvalContainerSpecChange(currentSpec, newSpec))
assert.Equal(t, ContainerNeedsRecreate, EvalContainerSpecChange(newSpec, currentSpec))
}
func TestEvalContainerSpecChange_ContainerResources(t *testing.T) {
t.Parallel()