ALWAYS use this when the request matches AZD Deployment: Deploy containerized frontend + backend applications to Azure Container Apps with remote builds, managed identity, and idempotent infrastructure.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
ALWAYS use this when the request matches AZD Deployment: Deploy containerized frontend + backend applications to Azure Container Apps with remote builds, managed identity, and idempotent infrastructure.
# Set for current environment
azd envset AZURE_OPENAI_ENDPOINT "https://my-openai.openai.azure.com"
azd envset AZURE_SEARCH_ENDPOINT "https://my-search.search.windows.net"# Set during init
azd env new prod
azd envset AZURE_OPENAI_ENDPOINT "..."
Bicep is declarative - Resources reconcile to desired state
Remote builds tag uniquely - Image tags include deployment timestamp
ACR reuses layers - Only changed layers upload
Preserving Manual Changes
Custom domains added via Portal can be lost on redeploy. Preserve with hooks:
hooks:preprovision:shell:shrun:|
# Save custom domains before provision
if az containerapp show --name "$FRONTEND_NAME" -g "$RG" &>/dev/null; then
az containerapp show --name "$FRONTEND_NAME" -g "$RG" \
--query "properties.configuration.ingress.customDomains" \
-o json > /tmp/domains.json
fi
postprovision:shell:shrun:|
# Verify/restore custom domains
if [ -f /tmp/domains.json ]; then
echo "Saved domains: $(cat /tmp/domains.json)"
fi
Handling Existing Resources
// Reference existing ACR (don't recreate)
resource containerRegistry 'Microsoft.ContainerRegistry/registries@2023-07-01' existing = {
name: containerRegistryName
}
// Set customDomains to null to preserve Portal-added domains
customDomains: empty(customDomainsParam) ? null : customDomainsParam
Container App Service Discovery
Internal HTTP routing between Container Apps in same environment:
// Backend reference in frontend env vars
env: [
{
name: 'BACKEND_URL'
value: 'http://ca-backend-${resourceToken}' // Internal DNS
}
]
hooks:postprovision:shell:shrun:|
PRINCIPAL_ID="${BACKEND_PRINCIPAL_ID}"
# Azure OpenAI accessazroleassignmentcreate\--assignee-object-id"$PRINCIPAL_ID"\--assignee-principal-typeServicePrincipal\--role"Cognitive Services OpenAI User"\--scope"$OPENAI_RESOURCE_ID"2>/dev/null||true# Azure AI Search accessazroleassignmentcreate\--assignee-object-id"$PRINCIPAL_ID"\--role"Search Index Data Reader"\--scope"$SEARCH_RESOURCE_ID"2>/dev/null||true
Common Commands
# Environment management
azd env list # List environments
azd envselect <name> # Switch environment
azd env get-values # Show all env vars
azd envset KEY value # Set variable# Deployment
azd up # Full provision + deploy
azd provision # Infrastructure only
azd deploy # Code deployment only
azd deploy --service backend # Deploy single service# Debugging
azd show # Show project status
az containerapp logs show -n <app> -g <rg> --follow # Stream logs
Reference Files
Bicep patterns: See references/bicep-patterns.md for Container Apps modules
Troubleshooting: See references/troubleshooting.md for common issues
azure.yaml schema: See references/azure-yaml-schema.md for full options
Critical Reminders
Always use remoteBuild: true - Local builds fail on M1/ARM Macs deploying to AMD64