You have to set the docker container name as the destination, not the host IP.
Test everything from the beginning.
# check your FQDN is set up correctly.
$ nslookup 1.1.1.1
$ nslookup 8.8.8.8
# Test your web host from out of the docker host.
$ curl -v http://your_fqdn
# test your web host on the host machine.
$ curl -v -H "Host: your_fqdn" http://localhost
# check if your port is exposed if you map it.
docker ps | grep
# check if your mapped port is listening on the docker host
netstat -tlnp | grep
#check if your container is reachable by NPM.
docker exec -it bash
[root@docker-278f29455e29:/app]# apt update && apt install netcat
[root@docker-278f29455e29:/app]# nc -zv
if NPM reaches docker, you're OK.
There are many things you have to check more, for example, NPM and your destination container should be in the same docker network.
# docker inspect | grep NetworkID
# docker inspect | grep NetworkID
They should be equal.
etc. etc.
Wireguard.
Because I would like to self-host everything myself, so why should I use another 3rd party service?