Hi @Sandy Liu Yang ,
Glad to hear that adding provenance: false
worked !
The reason one app accepts vnd.oci.image.index.v1+json
while another does not is likely due to differences in how Azure App Service handles container images based on:
- Container Runtime Differences – Some Azure App Service SKUs may have varying support for OCI and Docker v2 image formats.
- App Service Plan & OS Variations – Different regions, plans, or configurations might cause inconsistencies in image support.
- Registry Handling – GitHub Container Registry (GHCR) defaults to pushing OCI images, but Azure App Service often expects Docker v2 schema images.
How to Resolve the Issue
If you want to ensure compatibility across all your Azure Web Apps, try the following:
- Force Docker v2 Schema Format in GitHub Actions
Modify your GitHub Actions workflow to explicitly use Docker v2 format by adding provenance: false
and setting output=type=docker
:
- name: Build and push container image to registry
uses: docker/build-push-action@v6
with:
push: true
tags: ghcr.io/${{ env.REPO }}:${{ github.sha }}
file: ./Dockerfile
provenance: false
outputs: type=docker
- Verify the Image Manifest Type in GHCR
After pushing the image, check its manifest type using:
skopeo inspect --raw docker://ghcr.io/<your-repo>:<tag>
Look for "mediaType": "application/vnd.docker.distribution.manifest.v2+json"
.
- Check if "WEBSITES_ENABLE_APP_SERVICE_STORAGE" is set to
true
(this can affect how Azure pulls images).
Hope this helps.
If the answer is helpful, please click Accept Answer and kindly upvote it. If you have any further questions about this answer, please click Comment