Quickstart: Create a Python app in Azure App Service on Linux

In this quickstart, you deploy a Python web app to App Service on Linux, Azure's highly scalable, self-patching web hosting service. You use the local Azure command-line interface (CLI) on a Mac, Linux, or Windows computer. The web app you configure uses a free App Service tier, so you incur no costs in the course of this article.

Tip

If you prefer to deploy apps through an IDE, see Deploy Python apps to App Service from Visual Studio Code.

Set up your initial environment

Before you begin, you must have the following:

  1. Have an Azure account with an active subscription. Create an account for free.
  2. Install Python 3.6 or higher.
  3. Install the Azure CLI 2.0.80 or higher, with which you run commands in any shell to provision and configure Azure resources.

Open a terminal window and check your Python version is 3.6 or higher:

python3 --version

Check that your Azure CLI version is 2.0.80 or higher:

az --version

Then sign in to Azure through the CLI:

az login

This command opens a browser to gather your credentials. When the command finishes, it shows JSON output containing information about your subscriptions.

Once signed in, you can run Azure commands with the Azure CLI to work with resources in your subscription.

Having issues? Let us know.

Clone the sample

Clone the sample repository with the following command, then navigate into the folder. (Install git if you don't have git already.)

git clone https://github.com/Azure-Samples/python-docs-hello-world
cd python-docs-hello-world

The sample code contains an application.py file, which tells App Service that the code contains a Flask app. For more information, see Container startup process.

Having issues? Let us know.

Run the sample

First create a virtual environment and install dependencies:

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Then set the FLASK_APP environment variable to the app's entry module and run the Flask development server:

export FLASK_APP=application.py
flask run

Open a web browser, and go to the sample app at http://localhost:5000/. The app displays the message Hello World!.

Run a sample Python app locally

In your terminal window, press Ctrl+C to exit the Flask development server.

Having issues? Let us know.

Deploy the sample

Deploy the code in your local folder (python-docs-hello-world) using the az webapp up command:

az webapp up --sku F1 -n <app-name>
  • If the az command is not recognized, be sure you have the Azure CLI installed as described in Set up your initial environment.
  • Replace <app_name> with a name that's unique across all of Azure (valid characters are a-z, 0-9, and -). A good pattern is to use a combination of your company name and an app identifier.
  • The --sku F1 argument creates the web app on the Free pricing tier. Omit this argument to use a faster premium tier, which incurs an hourly cost.
  • You can optionally include the argument -l <location-name> where <location_name> is an Azure region such as centralus, eastasia, westeurope, koreasouth, brazilsouth, centralindia, and so on. You can retrieve a list of allowable regions for your Azure account by running the az account list-locations command.
  • If you see the error, "Could not auto-detect the runtime stack of your app," make sure you're running the command in the python-docs-hello-world folder that contains the requirements.txt file. (See Troubleshooting auto-detect issues with az webapp up (GitHub).)

The command may take a few minutes to complete. While running, it provides messages about creating the resource group, the App Service plan and hosting app, configuring logging, then performing ZIP deployment. It then gives the message, "You can launch the app at http://<app-name>.azurewebsites.net", which is the app's URL on Azure.

Example output of the az webapp up command

Having issues? Let us know.

Note

The az webapp up command does the following actions:

Browse to the app

Browse to the deployed application in your web browser at the URL http://<app-name>.azurewebsites.net.

The Python sample code is running a Linux container in App Service using a built-in image.

Run a sample Python app in Azure

Congratulations! You've deployed your Python app to App Service.

Having issues? Let us know.

Redeploy updates

In your favorite code editor, open application.py and update the hello function as follows. This change adds a print statement to generate logging output that you work with in the next section.

def hello():
    print("Handling request to home page.")
    return "Hello Azure!"

Save your changes and exit the editor.

Redeploy the app using the az webapp up command again:

az webapp up

This command uses values that are cached locally in the .azure/config file, including the app name, resource group, and App Service plan.

Once deployment is complete, switch back to the browser window open to http://<app-name>.azurewebsites.net. Refresh the page, which should display the modified message:

Run an updated sample Python app in Azure

Having issues? Let us know.

Tip

Visual Studio Code provides powerful extensions for Python and Azure App Service, which simplify the process of deploying Python web apps to App Service. For more information, see Deploy Python apps to App Service from Visual Studio Code.

Stream logs

You can access the console logs generated from inside the app and the container in which it runs. Logs include any output generated using print statements.

To stream logs, run the following command:

az webapp log tail

Refresh the app in the browser to generate console logs, which include messages describing HTTP requests to the app. If no output appears immediately, try again in 30 seconds.

You can also inspect the log files from the browser at https://<app-name>.scm.azurewebsites.net/api/logs/docker.

To stop log streaming at any time, type Ctrl+C.

Having issues? Let us know.

Manage the Azure app

Go to the Azure portal to manage the app you created. Search for and select App Services.

Navigate to App Services in the Azure portal

Select the name of your Azure app.

Navigate to your Python app in App Services in the Azure portal

Selecting the app opens its Overview page, where you can perform basic management tasks like browse, stop, start, restart, and delete.

Manage your Python app in the Overview page in the Azure portal

The App Service menu provides different pages for configuring your app.

Having issues? Let us know.

Clean up resources

In the preceding steps, you created Azure resources in a resource group. The resource group has a name like "appsvc_rg_Linux_CentralUS" depending on your location. If you use an App Service SKU other than the free F1 tier, these resources incur ongoing costs (see App Service pricing).

If you don't expect to need these resources in the future, delete the resource group by running the following command:

az group delete

The command uses the resource group name cached in the .azure/config file.

The command may take a minute to complete.

Having issues? Let us know.

Next steps