Allow to specify custom port mapping even Docker image does not expose it
If EXPOSE variable is not specified in Dockerfile, if it not possible to specify it in container settings
Thank you for your input! We will consider this functionality for the upcoming releases if it becomes popular enough.
Everyone, please continue voting for this feature if you consider it important.
A better approach would be to show the advertised ports as we currently do in the manual configuration page, but allow the user to customize them
Craig Lawson commented
This is actually not sufficient - you should make this possible regardless of what is set in the EXPOSE meta data.
This is not an either or - its both options are required. EXPOSE is not a contract - its presence does not mean the only way you can use the image is as described.
EXPOSE is an advisory to say this docker image is going to "expose" a service on these ports.
There may be other ports open, the author may have got this wrong or not specified it at all. Often the containers have a multitude of other ports active and documented.
You should certainly list the exposed ports - but the choice of what port should not be fixed to those specified.
The problem with the current approach means that you end up having to republish repositories with the ports you need EXPOSEd in the docker file, which inevitably means that I’ll have to setup a CI to republish this if it does work every time the upstream packages are updated so does add a dependancy into the chain that is also undesirable.
Furthermore the docker container lookup does seem to take a long time to list your images the first time (certainly did for me).
To confirm - from Dockers documentation -
"The EXPOSE instruction does not actually publish the port. It functions as a type of documentation between the person who builds the image and the person who runs the container, about which ports are intended to be published"
Therefore this is not concrete - its advisory - very helpful that Plesk reads this but it should not be taken for granted as the only way in which a container may be used.