The Dockerfile for the app uses the
ENTRYPOINT instruction to start the app, so any arguments you pass to the
docker run command get passed onto the container.
In the Dockerfile the
EXPOSE command tells Docker which ports the app expects to listen to. This is built into the image as metadata, it's not linked to the ports the app actually listens on.
Publishing all ports won't do what you want if the app listens on a different port than the container image expects.
Need more? Here's the solution.