Deploying Your First App on Azure Container Apps: A Step-by-Step Guide

Advertisement

Deploying Your First App on Azure Container Apps: A Step-by-Step Guide

Azure Container Apps: A Beginner's Guide to What It Is and When to Use It

If you've built a containerized app and you're staring at Azure wondering whether you need App Service, AKS, Functions, or something else entirely — Azure Container Apps (ACA) is probably the answer you're looking for. This guide walks through what it is, the core concepts you need to know, and when it's the right tool for the job.

What Is Azure Container Apps?

Azure Container Apps is a serverless platform for running containers. The pitch is simple: you give it a container image, and it handles the server configuration, orchestration, and deployment plumbing so you don't have to.

That "serverless" label matters. You're not managing virtual machines, patching operating systems, or configuring a Kubernetes cluster by hand. You focus on your app; Azure handles the infrastructure underneath it, and can scale your app dynamically based on things like HTTP traffic, CPU load, or events from a queue.

Under the hood, Container Apps actually runs on Kubernetes and open-source technologies like KEDA (for event-driven autoscaling) and Dapr (for microservices building blocks)  but you never have to touch the Kubernetes API or think about pods and nodes directly. That's the whole point.

The Core Concepts

Three ideas make up most of what you need to understand before your first deployment:

Environment. A Container Apps Environment is a secure boundary around one or more container apps. Apps in the same environment share a network and can talk to each other directly. Think of it as a project or workspace that groups related apps together.

Container App. This is your actual application — built from a container image (from Docker Hub, Azure Container Registry, or any other registry), plus configuration for scaling, networking, and secrets.

Revisions. Every time you update a container app, Azure creates a new revision — an immutable snapshot of that version. You can keep multiple revisions running side by side and split traffic between them, which is what makes blue/green deployments and A/B testing possible without extra tooling.

What Makes It Worth Using

A few features tend to be the deciding factor for people choosing Container Apps:

  • Scale to zero. Most applications can scale down to zero instances when there's no traffic, so you stop paying for idle compute.
  • Event-driven autoscaling. Because it's built on KEDA, your app can scale based on almost anything — HTTP requests, queue length, CPU, memory, or dozens of other triggers.
  • Traffic splitting. Route a percentage of traffic to a new revision for safe, gradual rollouts.
  • Built-in networking. Internal ingress and DNS-based service discovery let apps in the same environment find and call each other securely, without you wiring up your own networking.
  • Bring any registry. Public or private, Docker Hub or Azure Container Registry — it doesn't lock you into one image source.
  • Microservices tooling included. Dapr comes built in, giving you service invocation, pub/sub, and state management without standing up separate infrastructure.

How It Compares to Other Azure Options

If you're new to Azure, the hardest part is often figuring out which compute service to use. Here's the short version

 
Service Best for
Azure Container Apps Containerized microservices and web apps that need to scale automatically, including to zero, without managing Kubernetes
Azure App Service Traditional web apps, often not containerized, where you want a simple PaaS experience
Azure Kubernetes Service (AKS) Teams that need full control over the Kubernetes API and are prepared to own cluster operations
Azure Functions Short-lived, single-purpose functions triggered by events, rather than a full application

The general rule of thumb: if your workload is a container and you don't need direct access to the Kubernetes API, Container Apps is usually the simplest path to production. AKS becomes the better choice once you genuinely need cluster-level control or Kubernetes-specific tooling.

 

A Quick Look at "Express" (New in 2026)

Worth knowing about as a beginner: Microsoft recently introduced Azure Container Apps Express, a preview deployment model that removes even the step of managing an environment. You deploy your app and the platform provisions the underlying resources for you, with consumption-based compute that scales to zero when idle and opinionated defaults for scaling rules, networking, and resource allocation.

It's a great option for quick prototypes and simple HTTP apps, but it currently has a limited feature set — no VNet integration, managed identity, custom domains, Dapr, jobs, multi-revision support, or GPUs — and is only available in a couple of regions, so standard Container Apps remains the right choice for most production workloads today.

When Should You Use Azure Container Apps?

It's a strong fit if:

  • You already have (or are building) a containerized app or set of microservices
  • You want automatic scaling, including down to zero, without paying for idle infrastructure
  • You don't want to manage a Kubernetes cluster yourself
  • You need traffic splitting for safer deployments
  • You're building event-driven workloads (queues, HTTP, timers) and want scaling that just works

It's probably not the right fit if you need deep, direct control over the Kubernetes API and its ecosystem of tooling that's where AKS takes over.

 

Deploying Your First Container App, Step by Step

The fastest path to a running app uses the Azure CLI and a single command: az containerapp up. It creates whatever you don't already have  resource group, environment, registry  and deploys your app in one shot. Here's the full walkthrough.

Prerequisites

  • An Azure account with an active subscription (a free account works fine to start)
  • The Azure CLI installed on your machine
  • A container image, or just use a public sample image for practice

Step 1: Sign in to Azure

az login

This opens a browser window to authenticate your CLI session against your Azure account.

Step 2: Update the CLI and install the Container Apps extension

az upgrade
az extension add --name containerapp --upgrade

Azure Container Apps evolves quickly, so keeping the CLI and extension current avoids missing-parameter errors. 

Step 3: Register the required resource providers

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

This tells your Azure subscription to allow Container Apps and Log Analytics resources (Log Analytics is used for storing your app's logs).

Step 4: Set up your variables

It's easier to define these once and reuse them:

RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
CONTAINERAPPS_ENVIRONMENT="my-container-apps-env" 
 
Step 5: Deploy with az containerapp up
 
 
az containerapp up \
  --name my-container-app \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 80 \
  --ingress external \
  --query properties.configuration.ingress.fqdn

 

This single command:

  • Creates the resource group (if it doesn't already exist)
  • Creates the Container Apps environment and a Log Analytics workspace
  • Deploys your container image
  • Sets up external ingress so the app is reachable over the internet
  • Returns the app's public URL (FQDN) when it's done

This single command:

  • Creates the resource group (if it doesn't already exist)
  • Creates the Container Apps environment and a Log Analytics workspace
  • Deploys your container image
  • Sets up external ingress so the app is reachable over the internet
  • Returns the app's public URL (FQDN) when it's done
 Step 6: Open your app

Copy the FQDN returned by the command into a browser your container app is now live.

Step 7 (optional): Deploy from local source code instead of an image

If you have a Dockerfile in your project but haven't built an image yet, az containerapp up can build and push it for you:

az containerapp up \
  --name my-container-app \
  --source . \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT

 

This generates a GitHub Actions workflow that automatically builds and redeploys your app whenever you push changes to the repository so once it's set up, updates are just a git push away.

Redeploying updates

  • If you deployed from an existing image, rerun the same az containerapp up command with an updated --image tag.
  • If you deployed from local source code, make your code changes and rerun the command with --source.
  • If you deployed from GitHub, just push to your repo — the generated workflow handles the rest. Don't rerun the up command with --repo, since it creates a new workflow each time.

Getting Started From Here

Once your first app is running, the natural next steps are configuring custom scaling rules with az containerapp update, adding secrets and environment variables, enabling Dapr for microservices communication, and setting up traffic splitting across revisions for safer rollouts.

Azure Container Apps is designed to get out of your way the fewer infrastructure decisions you have to make on day one, the better. For a beginner, that's exactly the point: you can go from a container image to a running, scalable app in the cloud without first becoming a Kubernetes expert.

 

Induranga Lokuliyanage

Induranga Lokuliyanage

Senior Cloud Engineer | Cloud Enthusiast | Solutions Architect | Azure ☁| DevOps | IAC | FinOps Certified | Microsoft | MCT | Making Technology Work for Humans

Comments (0)

Success!
Your comment has been submitted successfully. It will appear once approved by an admin.
Men Avatar Woman Avatar

No comments yet. Be the first to share your thoughts!