I moved my portfolio from Vercel to Azure. It seemed like a good idea at the time. Here’s what happened.
Why Azure
Three reasons:
The Setup
The deployment pipeline was straightforward: Docker image pushed to Azure Container Registry (ACR), continuously deployed to an App Service, triggered by a GitHub Actions workflow on push.
It worked. Builds passed, container ran, site loaded. I moved the DNS and called it done.
The Silent Failure
Then one day, after pushing changes, the deployment broke. I didn’t notice for an entire day — the Docker image built and ran fine locally, and previous deployments had always worked.
When I finally checked the live URL, the site was down. No email notification from Azure. No alert. Just a silent failure.
Troubleshooting
I tried the obvious things:
- Rebuilt and re-pushed the image to ACR
- Tested the container on a separate VM — it worked fine
- Asked my college tech society for help
- Read through Azure’s documentation
Nothing worked. The error messages were vague and unhelpful. I temporarily pointed the DNS back to Vercel just to have a live site.
The Actual Cause
After digging through my Git history, I found it: I had removed a wildcard route that redirected unmatched paths to an error page.
{
path: "**", // Wildcard route
redirectTo: "error",
}Azure’s deployment health check pings a specific route to verify the app is running. When that route returned nothing (because the wildcard was gone), Azure marked the entire deployment as failed — even though the container was running and the home page was fine.
Re-adding the wildcard route fixed everything instantly.
Takeaways
- Set up deployment alerts. Don’t rely on manually checking the live URL.
- Azure’s health checks are opinionated. Your container running is not enough — specific routes need to respond.
- Error messages lie. The Azure error pointed to something completely unrelated to the actual cause.
- Always have a rollback plan. Keeping the Vercel deployment ready saved me from extended downtime.
This was frustrating, but it taught me more about deployment infrastructure than any tutorial could. Sometimes the best learning comes from things breaking at the worst possible time.