Skip to content

Proxy regression after Compose down/up #2651

Description

@boboldehampsink

Describe the bug

In OrbStack 2.2.3, the HTTPS proxy sometimes keeps using the IP address of a
removed container after recreating a Compose project with
docker compose down followed by docker compose up -d.

This appears to be a regression of #1876 and #2570, which were marked as fixed
in v2.2.0 and v2.2.2 respectively.

Controlled reproduction:

  • example service container IP before down/up: 192.168.97.2

  • example service container IP after down/up: 192.168.97.6

  • A new curl connection to the same HTTPS URL returns HTTP 200.

  • Refreshing the existing Microsoft Edge session still makes OrbStack connect
    to 192.168.97.2 and returns:

    502 Bad Gateway
    OrbStack proxy error: dial tcp 192.168.97.2:3000: connect: connection refused
    
  • Fully terminating and reopening Edge makes the URL work again.

  • The browser uses the same existing HTTPS/HTTP2 connection to the OrbStack
    proxy when the problem occurs.

This suggests that OrbStack associates an upstream container or route with an
existing client connection and does not update that association when the
container is replaced.

To Reproduce

  1. Start a Compose project with a dummy HTTP service listening on port 3000.
  2. Open https://dummy.<project>.orb.local/... in Microsoft Edge.
  3. Verify that the URL works.
  4. Run docker compose down.
  5. Run docker compose up -d, causing the dummy service container to receive a new
    internal IP address.
  6. Refresh the existing Edge tab without restarting Edge.
  7. OrbStack returns a 502 and attempts to connect to the old container IP.
  8. Open a new connection using curl; it reaches the new container and
    returns HTTP 200.

Expected behavior

After a container is replaced, the proxy should route existing and new client
connections to the current container IP. If an existing connection cannot be
updated, OrbStack should close it so the client reconnects.

docker compose down && docker compose up -d should work without restarting
the browser or OrbStack, flushing caches, or restarting containers again.

Diagnostic report (REQUIRED)

OrbStack info:
Version: 2.2.3
Commit: c83556b0ef8f1ba9a33abbb194622b6b7a1c0307 (v2.2.3)

System info:
macOS: 26.6.1 (25G76)
CPU: Apple M1 Pro, arm64
Memory: 32 GiB

Full report:
https://orbstack.dev/_admin/diag/orbstack-diagreport_2026-08-12T09-49-21.613206Z.zip

Screenshots and additional context

  • Microsoft Edge: 151.0.4129.78
  • Docker client/server: 29.4.0
  • Docker Compose: 5.1.2
  • The service is correctly listening on port 3000.
  • The problem has occurred repeatedly across different projects.
  • Disabling browser DNS, DNS-over-HTTPS, and QUIC does not prevent it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions