Here is a sample of my own server's docker compose file that I use regularly in-case anyone is looking for help/inspirations. It took me quite a while to learn Docker compose and how reverse proxies work in general. The most difficult part is to choose a proxy server that is easy enough to set up but has all the necessary features.
Every service is 'proxied' via jwilder's nginx proxy module. Link here.
Each service is on it's own sub-domain. This is handled by jwilder's proxy module. All I have to do is add the following environment variable and forwarding rules in my DNS server. For example, I access vscode editor diretly on my server by visiting https://code.home.server