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:

01 Azure Student Credits — $100 free to experiment with
02 No cold starts — Vercel's serverless functions had occasional delays
03 Learning infrastructure — I wanted to understand deployment beyond 'git push and pray'

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:

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

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.