For hosting multiple web apps, what you probably want is a reverse proxy. I recently started using Caddy (specifically Caddy-Docker-Proxy), and I’m liking it. There’s also Traefik, nginx, etc.
For other types of services, you can simply map whatever (available) port you like in your docker compose file. See here: docs.docker.com/compose/networking/