Você pode executar o navegador após um atraso inicial em segundo plano:
(sleep 2 && python -m webbrowser http://localhost:$PORT) &
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
Eu faço isso para um wrapper docker para aderência para visualizar as mensagens do README por um contêiner no host e funciona bem para mim. Depende de quanto tempo o seu contêiner precisa para começar.