Building up to the devproxy2 release, I set things up to test in Docker, using a known version of Go. Nothing worked for quite some time.
localhost inside the container is not the host network. I had to configure it to listen on all addresses (by asking Go to connect to ":8080" without a host address), per this other Stack Overflow answer. If I had thought to check the exact error message client side (curl: empty reply from server), I could have solved this one first, not last.
Once I fixed the core problem, everything started working, and I didn’t go back and test the other things I had tried. So everything else is only a potential problem.
localhost inside the container is not the host network. I configured it to connect to
host.docker.internal instead, per this Stack Overflow answer. This is the same as the core problem, but in the other direction.
Potential problem: according to my notes, the default network bridge in Docker doesn’t have Internet access. Creating a user-defined bridge solves this. Furthermore, using Docker Compose automatically creates a user-defined bridge for the stack. By the time I solved the core problem, I was already using Docker Compose for the networking feature.