Как упоминалось в комментарии, лучше иметь порт stati c на стороне приложения, иначе сопоставление точного порта будет затруднено.
Как настроить порт для приложения Spring Boot
Другой вариант - использовать хост-сеть , чтобы вы могли получить доступ к приложению через порт контейнера, но этот вариант доступен только для Linux.
Если вы используете сетевой режим хоста для контейнера, сетевой стек этого контейнера не изолирован от хоста Docker (контейнер разделяет сетевое пространство имен хоста), и контейнер не получить выделенный собственный IP-адрес. Например, если вы запускаете контейнер, который привязывается к порту 80, и вы используете сеть хоста, приложение контейнера доступно на порту 80 на IP-адресе хоста .
docker -host-network
docker run -it --net host --rm my_app
предположим, что ваше приложение работает на каком-то случайном порте 8087
, тогда вы сможете получить доступ к приложению используя http://localhost: 8087 из-за --net host