Fix route-based port mapping: use hostPort as container port
allocateRoutePorts() was using the route's port field (the mc-proxy listener port, e.g. 443) as the container internal port in the podman port mapping. For L7 routes, apps don't listen on the mc-proxy port — they read $PORT (set to the assigned host port) and listen on that. The mapping host:53204 → container:443 fails because nothing listens on 443 inside the container. Fix: use hostPort as both the host and container port, so $PORT = host port = container port. Broke mcdoc in production (manually fixed, now permanently fixed). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -90,18 +90,19 @@ func TestBuildRunArgs(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("full spec with env", func(t *testing.T) {
|
||||
// Route-allocated ports: host port = container port (matches $PORT).
|
||||
spec := ContainerSpec{
|
||||
Name: "svc-api",
|
||||
Image: "img:latest",
|
||||
Network: "net",
|
||||
Ports: []string{"127.0.0.1:12345:8443"},
|
||||
Ports: []string{"127.0.0.1:12345:12345"},
|
||||
Volumes: []string{"/srv:/srv"},
|
||||
Env: []string{"PORT=12345"},
|
||||
}
|
||||
requireEqualArgs(t, p.BuildRunArgs(spec), []string{
|
||||
"run", "-d", "--name", "svc-api",
|
||||
"--network", "net",
|
||||
"-p", "127.0.0.1:12345:8443",
|
||||
"-p", "127.0.0.1:12345:12345",
|
||||
"-v", "/srv:/srv",
|
||||
"-e", "PORT=12345",
|
||||
"img:latest",
|
||||
|
||||
Reference in New Issue
Block a user