Skip to content

Fix/loopback port bindings - #284

Merged
vsilent merged 2 commits into
devfrom
fix/loopback-port-bindings
Oct 14, 2026
Merged

vsilent merged 2 commits into
devfrom
fix/loopback-port-bindings

Conversation

@vsilent

@vsilent vsilent commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

robotizeit and others added 2 commits October 14, 2026 21:35
A contract test across the CLI and the server: a stacker.yml with ports
bound to 127.0.0.1 goes through the CLI's build_project_body and then
through derive_public_ports_from_metadata and the compose port conversion.
Each half had its own unit test and the bug kept coming back: the CLI drops
the host IP, the server expects it with the mapping, and databases bound to
127.0.0.1 ended up open in the firewall and published on every interface.

Fails on the current code: 5432, 6379 and 8025 reach the firewall and none
is published on 127.0.0.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012TKZy6f5shPzM9WLdswH6f
The CLI sent "127.0.0.1:5432:5432" as host_port 5432 / container_port 5432,
so the server never saw the loopback binding: it opened 5432 in the cloud
firewall and the compose file published it on every interface. The CLI now
sends the whole mapping in container_port when it carries a host IP, the
form the server already parses (forms::project::port normalize_port_mapping)
for the firewall and for compose. parse_port_mapping itself is unchanged.

Regression: routes::project::deploy::loopback_ports_contract (previous
commit) now passes; lib 2238 passed, BDD 334 scenarios passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012TKZy6f5shPzM9WLdswH6f
@vsilent
vsilent merged commit 7c7a683 into dev Oct 14, 2026
8 of 10 checks passed
@vsilent vsilent mentioned this pull request Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants