Use aspire deploy to deploy Aspire applications to Azure Container Apps. Aspire provisions the Container Apps environment, Azure Container Registry, managed identity, and the Container Apps resources needed for the compute resources in your AppHost.
Start with Deploy to Azure for the shared Azure deployment model and target selection. If you need to keep an existing azd deployment workflow, see Use existing azd workflows.
For a standard Azure Container Apps deployment, you only need the environment and the app resource. Use PublishAsAzureContainerApp only when you want to customize the generated Container App resource.
Compute resources assigned to an Azure Container Apps environment are deployed to Azure Container Apps. If one AppHost uses multiple Azure environments, assign each resource to the environment you want it to use.
Azure Container Apps uses an Envoy-based HTTP edge proxy for HTTP ingress:
public HTTP-style ingress is exposed through the platform HTTPS endpoint by default
HTTP requests sent to the app are redirected to HTTPS
To match the deployed serving scheme, Aspire upgrades external HTTP endpoints in an Azure Container Apps environment to HTTPS when it generates endpoint URLs and service discovery connection strings for dependent resources. If you intentionally need generated endpoint URLs and connection strings to preserve http://, disable the upgrade on the environment:
Disabling the upgrade primarily affects generated endpoint configuration for dependent resources. Azure Container Apps can still redirect HTTP requests to HTTPS after deployment.
When you deploy to Azure Container Apps, Aspire translates both named volumes and bind mounts into Azure Files-backed mounts in the Container Apps environment.
Aspire provisions Azure Storage file shares and managed environment storage entries for the mounts used by deployed resources.
Both named volumes and bind mounts become mounted Azure Files shares in the deployed app.
A bind mount’s local host path isn’t preserved as a host bind mount in Azure deployment.
Use these mounts as persistent storage for the deployed app, not as a way to project files from the AppHost machine into the deployed environment.
Probe traffic stays on the internal container network. If a probe is associated with an ingress-enabled endpoint, Aspire still configures the probe against the container target port instead of sending probe traffic through Container Apps ingress.
Use PublishAsAzureContainerApp when you want to customize the generated Container App resource for a project, container, or executable. It isn’t required for a standard Container Apps deployment.
Error ts(2769) ― No overload matches this call.
Overload 1 of 2, '(name: string, projectPath: string, options?: { launchProfileOrOptions?: ProjectResourceOptions | undefined; } | undefined): ProjectResource', gave the following error.
Type '"http"' has no properties in common with type '{ launchProfileOrOptions?: ProjectResourceOptions | undefined; }'.
Overload 2 of 2, '(name: string, projectPath: string, launchProfileOrOptions?: ProjectResourceOptions | undefined): ProjectResource', gave the following error.
Argument of type 'string' is not assignable to parameter of type 'ProjectResourceOptions'.
Error ts(2769) ― No overload matches this call.
Overload 1 of 2, '(name: string, projectPath: string, options?: { launchProfileOrOptions?: ProjectResourceOptions | undefined; } | undefined): ProjectResource', gave the following error.
Type '"http"' has no properties in common with type '{ launchProfileOrOptions?: ProjectResourceOptions | undefined; }'.
Overload 2 of 2, '(name: string, projectPath: string, launchProfileOrOptions?: ProjectResourceOptions | undefined): ProjectResource', gave the following error.
Argument of type 'string' is not assignable to parameter of type 'ProjectResourceOptions'.
Services deployed to Azure Container Apps use internal DNS for service discovery. Use WithExternalHttpEndpoints() only for endpoints you want reachable outside the Container Apps environment.
By default, Aspire provisions an Azure Container Registry for the environment. If you want to use a shared or explicitly named registry instead, add an Azure Container Registry resource and attach it to the environment:
The Azure Container Apps environment includes the Aspire Dashboard by default. It helps you inspect the compute resources deployed into that environment. Managed Azure backing services aren’t shown as dashboard resources there. If you don’t want to deploy it, disable it on the environment:
Aspire can prompt for missing Azure settings and AppHost parameters during an interactive deploy, then provisions and deploys the Container Apps resources behind the scenes.
For Azure authentication, shared Azure settings, and Parameters__* inputs, see Deploy to Azure and Environments.
After deployment, use the dashboard URL in the CLI output, the Azure portal, or az containerapp show to inspect the deployed compute resources and application URLs.
To tear down deployed resources, use aspire destroy. The command discovers the deployment, lists the Azure resources it will remove, and prompts for confirmation before deleting the resource group: