In Azure VM, Dash App deployment problem

Can’t deploy Dash apps directly from Azure VMs?
Do I have to use the App service? I was wondering, in AWS you can deploy directly from a VM.
I can only see the local service of Dash App on Azure VM.

Hello @myidksh,

You should be able to deploy directly from a VM, however it is a little more tricky to setup because you have to work with the network a little bit more.

Why are you wanting to use the VM over the app?

The reason for this is that I want to share the web app with a few people before deploying it as simply as I do in a VM on AWS, and then do the deployment afterward.
And I’m wondering why not in Azure
Thanks.

Hmm, to me it seems more straightforward to use Azure Web App, you can always setup access for only specific users to the endpoint.

For the VM, it would probably be accessible via its external IP address…

The web app will give you an actual url to gain access, plus deploying the app is as easy as hooking it up to your github and syncing.

If you want to make it a bit more professional, you can also work with multiple deployments, like dev, test, and prod. Then you can deploy updates to test and have the few users play around with that before you deploy for real on prod

You can deploy the app with Azure VM but it is a lot simpler with app service. A lot of my Dash apps are deployed with Azure App Service: it containerizes the app for you, redeployments are super easy when synced with your GitHub and you get a free managed SSL cert.

2 Likes

Thank you. It’s a bit complicated, there’s also the constraint of having to use ubuntu 18, presumably Azure has prevented it from running directly in a VM due to security concerns?

Thank you for reading and responding to my post.

You should be able to do it in your already set up vm. Open up the port 8080, install python and pip, create a virtual environment, clone your repo, install requirements.txt. Once everything is installed and you cloned your repo, you should just be able to run python3 app.py from the terminal and access it via the public ip - i.e., <vm-public-ip>:8080

Make sure in app.py that you set the correct host and port app.run(debug=False, host='0.0.0.0', port=8080)

You should probably use gunicorn and nginx but the above should get you started.

Thanks, but I know the method you suggest, unfortunately, in azure, it does not work.

2024년 6월 13일 (목) 오후 11:12, Chris via Plotly Community Forum <notifications@plot.discoursemail.com>님이 작성: