Azure Container Apps frequently asked questions (FAQs)

This article lists commonly asked questions about Azure Container Apps together with related answers.

APIs

Does Azure Container Apps provide direct access to the underlying Kubernetes API?

No, there's no access to the Kubernetes API.

Can I import my Azure Container Apps API from the context of API Management?

Yes.

Billing

How is Azure Container Apps billed?

Refer to the billing page for details.

Configuration

Can I set up GitHub Actions to automatically build and deploy my code to Azure Container Apps?

Yes. Using Azure CLI, run az containerapp github-action -h to see the options. Using Azure portal, go to the "Continuous deployment" window under your container app.

Why is the URL my app receives different than the URL specified in the request?

Azure Container Apps decodes the URL to protect your app against URL confusion attacks. A request URL that has encoded portions, such as http://mysite.com/archive/http%3A%2F%2Fmysite.com%2Farchive%2F123, is sent to your app as http://mysite.com/archive/http%3A/mysite.com/archive/123.

Do Consumption only environments support custom user-defined routes?

For Consumption only environments, express routes are unsupported, and limited UDR when configured as follows is supported. The UDR configuration must have a route configured for Azure.<REGION_NAME> Service tag with Next Hop = "Internet". In addition, the rules in the NSG documentation must be configured for the Consumption only environment to be operational. These limitations do not apply for workload profiles, and for full featured UDR and Express Route support, use workload profile environments.

Data management

Where does Azure Container Apps store customer data?

Azure Container Apps doesn't move or store customer data out of the deployed region.

Quotas

How can I request a quota increase?

Request a quota increase in the Azure portal with Azure Container Apps selected as the provider.

Keep in mind the following when it comes to quota increase requests:

  • Scaling apps vs environments: There are many different quotas available to increase. Use these descriptions to help identify your needs:

    • Increase apps and cores per environment: Allows you to run more apps within an environment and/or more intensive apps. Recommended if your workloads can deploy within the same network and security boundaries.
    • Increasing environments: Recommended if your workloads need network or security boundaries. Note: A detailed business context might be required if your request involves increasing environment-level quotas. When you request a change to your regional environment quota, you should request a corresponding change to your global environment quota.
  • Regions: Approvals for increase requests vary based on compute capacity available in Azure regions.

  • Specific compute requirements: The platform supports 4 GB per container app. Memory limits overrides are evaluated on a per-case basis.

  • Business reasoning for scaling: You might be eligible for a quota increase request if the platform limits are blocking your workload demands. Scale limits overrides are evaluated on a per-case basis.

Microservice APIs powered by Dapr

What Dapr features and APIs are available in Azure Container Apps?

Each Dapr capability undergoes thorough evaluation to ensure it positively impacts customers running microservices in the Azure Container Apps environment, while providing the best possible experience.

Are alpha Dapr APIs and Tier 2 components supported or available in Azure Container Apps?

The availability of Dapr's alpha APIs is not guaranteed or Microsoft-supported.

While Tier 1 components are fully supported, Tier 2 components are supported with best effort. Learn more.

What is the Dapr version release cadence in Azure Container Apps?

Dapr's typical release timeline is up to six weeks after the Dapr OSS release. The latest Dapr version is made available in Azure Container Apps only after rigorous testing. Rolling out to all regions can take up to two weeks or longer.

How can I request a Dapr feature enhancement for Azure Container Apps?

You can submit a feature request via the Azure Container Apps GitHub repository. Make sure to include "Dapr" in the feature request title.

Dockerless deployments

What is a Docker-less deployment?

A Docker-less deployment allows you to deploy your application without defining a Dockerfile in your code. Instead, the Container Apps cloud build functionality uses Buildpacks to turn source code on your local machine into a container image. This option uses the Azure Container Apps default registry.

During the deployment of my Docker-less application, messages about "ImagePullBackOff on legion", "Kubernetes error" or "Gateway error" appear and my application doesn't deploy successfully.

You are experiencing a known issue with Docker-less deployments. Retrying might resolve this for you. If you run into this issue, open a GitHub issue so our team can investigate.

Deploy .NET applications

What if my .NET application fails to scale?

You need to enable data protection for all .NET apps on Azure Container Apps. See Deploying and scaling an ASP.NET Core app on Azure Container Apps for details.

Deploy Java applications

Which JDK versions are supported and how can I configure the JDK version?

Container Apps supports four LTS JDK versions: JDK 8, JDK 11, JDK 17 and JDK 21. For source code build, the default version is JDK 17. For a JAR file build, the JDK version is read from the file location META-INF\MANIFEST.MF in the JAR, but uses the default JDK version 17 if the specified version isn't available.

You can configure JDK version to override the default version via build environment variables.

Which Java build tools are supported?

Maven

How can I customize a Java image build from source code?

You can customize a Java image build via build environment variables.

How do I ensure the build and image of my Docker-less build are available in the same region as my app?

When using containerapp up in combination with a Docker-less code base, use the --location parameter so that application runs in a location other than US East.