Container Apps Revision Management
Revisions are immutable snapshots of a Container App version. Use them for blue/green deployments, canary releases, and instant rollback.
Revision Modes
| Mode | Behavior | Use Case |
|---|---|---|
Single | New revision replaces old immediately | Simple apps, dev/test |
Multiple | Multiple revisions run simultaneously with traffic splitting | Production blue/green, canary |
Setting Revision Mode (Bicep)
resource containerApp 'Microsoft.App/containerApps@2024-03-01' = {
name: appName
location: location
properties: {
configuration: {
activeRevisionsMode: 'Multiple'
ingress: {
external: true
targetPort: 8080
traffic: [
{ latestRevision: true, weight: 100 }
]
}
}
}
}💡 Tip: In Bicep/ARM deployments, you typically can't predictably target a specific new revision name. Use
latestRevision: truein Bicep for initial deployment, then configure traffic splitting or labels via CLI after the new revision is created.
⚠️ Warning: For blue/green workflows, you must first pin traffic to a named revision before deploying a new one. With
latestRevision: true, weight: 100, new revisions automatically receive all traffic — there is no validation window.
Traffic Splitting Patterns
Blue/Green Deployment
Pin traffic to the current revision, deploy a new one, validate, then switch:
# Deploy new revision and capture its name from the update output
NEW_REV=$(az containerapp update -n $APP -g $RG --image $NEW_IMAGE \
--query properties.latestRevisionName -o tsv)
# Test the new revision directly via its revision-specific URL
az containerapp revision list -n $APP -g $RG -o table
# Switch 100% traffic to the new revision
az containerapp ingress traffic set -n $APP -g $RG \
--revision-weight "$NEW_REV=100"Canary Release
Gradually shift traffic to validate the new revision under load:
| Phase | Current | Canary | Duration |
|---|---|---|---|
| 1 | 90% | 10% | 15 min |
| 2 | 50% | 50% | 30 min |
| 3 | 0% | 100% | — |
# List revisions to identify current stable and new canary
az containerapp revision list -n $APP -g $RG -o table