I wrote a Dockerfile and tried to deploy it to Heroku (they accept Dockerfiles), but it wouldn't bind to any port they tried to bind it to.  My server application requires an IP address and a port number as two of the command line arguments required to run it (it actually requires more than two; they are: IP address, port, docroot, number of threads).  

I set up port forwarding on my router for port number 8443.  Then I tried to use that port with my app.  I tried passing in 0.0.0.0 as the IP address and entered my external IP address in the browser's address bar, but I saw an error page.  On MS Edge, I get that "Hmmm...can't reach this page" error page.  And when I click on "Details", I see an error message saying, "This website cannot be found." Error code is "INET_E_RESOURCE_NOT_FOUND".  I also tried to run it by giving my external IP address for that command line argument, but of course I got that error from accelerator::bind() about it being invalid in its context.  The server app didn't exit, but I did get that same error I mentioned when I tried to visit my external IP on port 8443 in my browser.  

I wrote the Dockerfile for a synchronous version of the app, and the current one I have is asynchronous (I'm running it with 2 threads because that's apparently all my processor can take since it has two cores).  I made it asynchronous because I wanted to port it to WebAssembly, but Jinja2Cpp and Asio are giving me problems on that so I decided to not do it (Jinja2Cpp doesn't work well with Clang on Windows and Emscripten uses LLVM, and there's an Emscripten port for standalone Asio but it's an earlier version).  I don't like how the asynchronous version needs me to use global variables, but there's nothing I can do about that here.  Maybe I switch back to the synchronous version?  I might.