Multi-Arch Image Mismatch¶
Use this playbook when a revision pulls successfully but the container fails immediately with architecture errors such as exec format error or no matching manifest.
Symptom¶
- Image pull succeeds, but the container exits immediately.
- System or console logs show
exec format error,no matching manifest, or similar architecture mismatch text. - The same tag works on one platform but fails in Azure Container Apps.
- A single-architecture image tag was pushed where a multi-architecture manifest was expected.
Possible Causes¶
- The tag points only to an
arm64image while the target expectsamd64. - The manifest list is missing one of the required architectures.
- A previous multi-arch tag was overwritten with a single-arch image.
- The base image supports fewer architectures than the build pipeline assumed.
Diagnosis Steps¶
flowchart TD
A[Container exits immediately after pull] --> B[Read startup and system logs]
B --> C{exec format or manifest mismatch?}
C -->|No| D[Use generic startup failure playbook]
C -->|Yes| E[Inspect registry tag and manifests]
E --> F{Required architecture present?}
F -->|No| G[Rebuild and publish multi-arch image]
F -->|Yes| H[Check tag drift or wrong image reference]
G --> I[Retest deployment with explicit manifest]
H --> J[Pin correct digest or corrected tag] -
Capture the configured image and the observed startup error.
-
Inspect the registry tag and available manifests.
-
Query logs for architecture-specific failure text.
| Command or Query | Why it is used |
|---|---|
az containerapp show --query image | Confirms the exact tag or digest being deployed. |
az containerapp logs show --type system | Shows whether the image pulled but failed due to platform incompatibility. |
az acr repository show-tags ... | Verifies the repository tag history visible to Azure Container Apps. |
az acr manifest list-metadata ... | Checks whether the published image includes the expected architecture variants. |
Resolution¶
-
Rebuild and publish the image as a multi-architecture manifest.
-
If only one architecture is supported intentionally, publish a clearly named tag and deploy only where it matches.
- Pin a corrected digest or tag after confirming manifest contents.
- Prevent tag drift in CI so a multi-arch tag is not accidentally replaced by a single-arch push.
Prevention¶
- Standardize on
docker buildxfor production image publishing. - Validate manifest contents in CI before deployment.
- Avoid reusing critical tags without architecture checks.
- Keep base-image architecture support documented for each workload.