Skip to main content

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, and php.
  • 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​

platformSource/build shapeRuntime requirement
nodejsNode.js package-based web app or static toolchainWeb process listens on the declared port
pythonPython HTTP application and dependenciesPackage dependencies and a reachable HTTP entry point; override startup when needed
dotnet.NET HTTP applicationPublish complete runnable output; custom publish targets $DESTINATION_DIR
phpPHP HTTP application and Composer dependenciesPHP 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​

ShapeConfigurationOutput
Browser-ready HTMLExplicit output, no platform/build/runOne static web root, no language build
Vitevite dependency or vite.config.*Built assets, conventionally dist
Generic static buildSupported platform plus explicit outputOne built web root
Generic webExplicit web intent, platform, and runOne compute output
Generic static plus HTTPOne static output and one web output with nonconflicting public pathsStatic frontend and HTTP backend in one app; the backend receives its path prefix
Next.js standaloneRecognized next dependency and standalone output; not ready for preview useA 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.