Runtimes and build shapes
Choose a runtime for your HTTP application or publish static browser files with App Service Builder.
At a glance
- Recognized platform identifiers are
nodejs,python,dotnet, andphp. - Static content has no server process.
- Vite can produce static output; a generic static frontend and HTTP backend can share one app.
- Next.js standalone is recognized but is not ready as a complete supported framework workflow.
- Use the documented runtime and sample settings; other framework/version combinations need separate validation.
Platform identifiers
platform | Source/build shape | Runtime requirement |
|---|---|---|
nodejs | Node.js package-based web app or static toolchain | Web process listens on the declared port |
python | Python HTTP application and dependencies | Package dependencies and a reachable HTTP entry point; override startup when needed |
dotnet | .NET HTTP application | Publish complete runnable output; custom publish targets $DESTINATION_DIR |
php | PHP HTTP application and Composer dependencies | PHP 8.5 default nginx/PHP-FPM startup serves the packaged document root; omit run.start |
Not every framework or version is supported.
platformVersion requests an available version; it does not install an unsupported one.
When omitted, Builder may infer a version from your project or use the toolchain's default.
Confirm availability with your preview contact and test your deployed app.
Target runtime availability
Runtime activation support depends on your preview target, not just the manifest's recognized platform or a successful build. Some targets can build Node.js compute output but reject activation with:
Artifact Apps does not yet support compute platform 'nodejs'.
Confirm Node.js activation support for your location before using the Node.js HTTP sample. If it is unavailable, choose a different runtime confirmed for your target, such as the Python sample. Do not repeatedly rebuild or redeploy the same unsupported output. Local manifest validation checks build configuration; it does not verify that your target can run the result. This compute limitation does not by itself establish a restriction on static files built with a Node.js toolchain.
PHP build and startup
The PHP 8.5 runtime uses nginx with PHP-FPM by default.
Omit run.start to retain that startup; a PHP development server (php -S) is not the hosted startup recipe.
The web component still needs a run block.
Its port defaults to 8080, and a single component's public mount defaults to /.
Select the component source root that contains the PHP application and, when used, composer.json and composer.lock.
The source root is the build input, not a setting for nginx's document root.
The runtime serves the packaged compute build root, so place index.php and health.php at that root.
Set run.healthCheckPath: /health.php explicitly and have it return HTTP 200.
A public/ directory is not selected automatically as the PHP document root.
The static output field cannot select a document root for a web component.
If you customize the build, stage the intended document-root files and their runtime dependencies under $DESTINATION_DIR.
Keep private files out of the served document root.
PHP 8.5 web apps are available with the default startup and packaged-root layout described above. Use the PHP tutorial to deploy the published sample. The PHP manifest example shows the startup and health settings.
Static and framework shapes
| Shape | Configuration | Output |
|---|---|---|
| Browser-ready HTML | Explicit output, no platform/build/run | One static web root, no language build |
| Vite | vite dependency or vite.config.* | Built assets, conventionally dist |
| Generic static build | Supported platform plus explicit output | One built web root |
| Generic web | Explicit web intent, platform, and run | One compute output |
| Generic static plus HTTP | One static output and one web output with nonconflicting public paths | Static frontend and HTTP backend in one app; the backend receives its path prefix |
| Next.js standalone | Recognized next dependency and standalone output; not ready for preview use | A complete Next.js startup and public-asset workflow is not supported |
Static assets are public files, not a managed Node process.
For a custom static build, copy the final files under $DESTINATION_DIR and resolve output there.
Generic combined output is not a guarantee of Next.js compatibility.
Do not use partial framework recognition as evidence that all pages, assets, and startup settings work.
Verify runtime startup
A successful build does not guarantee that the app will start. After deployment, check the app URL and the health endpoint defined by your application. Use troubleshooting if startup or health checks fail.
The sample catalog provides focused starting projects. The YAML reference defines field semantics, while limits defines output cardinality.