Oryx configuration

June 2, 2026 ยท View on GitHub

Oryx provides configuration options through environment variables so that you can apply minor adjustments and still utilize the automatic build process. The following variables are supported today:

NOTE: In Azure Web Apps, these variables are set as App Settings.

Setting nameDescriptionDefaultExample
PRE_BUILD_COMMANDCommand to a shell script to be run before build""echo foo
PRE_BUILD_SCRIPT_PATHA repo-relative path to a shell script to be run before build""scripts/prebuild.sh
POST_BUILD_COMMANDCommand to a shell script to be run after build""echo foo
POST_BUILD_SCRIPT_PATHA repo-relative path to a shell script to be run after build""scripts/postbuild.sh
ENABLE_DYNAMIC_INSTALLEnable dynamically install platform binaries if not presented inside the imagevarioustrue, false
ORYX_SDK_STORAGE_BASE_URLThe storage base url from where oryx dynamically install sdks"https://oryx-cdn.microsoft.io"
DYNAMIC_INSTALL_ROOT_DIRRoot directory path under which dynamically installed SDKs are created.various"/opt", "tmp/platforms/oryx"
DISABLE_CHECKERSDisable running version checkers during the build.falsetrue, false
ORYX_DISABLE_TELEMETRYDisable Oryx command line tools from collecting any data.falsetrue, false
ORYX_APP_TYPEType of application that the the source directory has.""'functions','static-sites', 'webapps'.
DISABLE_RECURSIVE_LOOKUPIndicates if detectors should consider looking into sub-directories for filesfalsetrue, false
ENABLE_MULTIPLATFORM_BUILDApply more than one toolset if repo indicates itfalsetrue, false
PLATFORM_NAMESpecify which platform the app is using. Possible values are: nodejs, hugo, python, dotnet, php, ruby, java."""python"
PLATFORM_VERSIONSpecify which platform version the app is using"""3.7.1"
REQUIRED_OS_PACKAGESIndicate if it requires OS packages for Node or Python packagesfalsetrue, false
CREATE_PACKAGEIndicate if it should create packages for the appfalsetrue, false
CUSTOM_BUILD_COMMANDCustom build command to run instead of the default build. Supported for Node.js, Python, PHP, and .NET.""See per-stack docs
SKIP_PLATFORM_DETECTIONSkip auto-detection of platforms. Only the platform specified via PLATFORM_NAME (or --platform) will be used. Requires PLATFORM_NAME to be set.falsetrue, false
Setting name for .NET appsDescriptionDefaultExample
DOTNET_VERSIONSpecify which .NET version the app is using"""5.0.100"
DOTNET_DEFAULT_VERSIONSpecify which .NET version the app defaults to if none detected"""5.0.100"
DISABLE_DOTNETCORE_BUILDDo not apply .NET Core build even if repo indicates itfalsetrue, false
PROJECTrepo-relative path to directory with .csproj file for build"""src/WebApp1/WebApp1.csproj"
MSBUILD_CONFIGURATIONConfiguration (Debug or Release) that is used to build a .NET Core projectReleaseDebug, Release

When CUSTOM_BUILD_COMMAND is set for .NET apps, it replaces the default dotnet restore and dotnet publish commands. The custom command must output to $DESTINATION_DIR (e.g., dotnet publish -o $DESTINATION_DIR).

Setting name for Nodejs appsDescriptionDefaultExample
NODE_VERSIONSpecify which Node version the app is using"""14.15.0"
NODE_DEFAULT_VERSIONSpecify which Node version the app defaults to if none detected"""14.15.0"
DISABLE_NODEJS_BUILDDo not apply Node.js build even if repo indicates itfalsetrue, false
RUN_BUILD_COMMANDCustom run build command to be run after package install commands"""npm run build"
ENABLE_NODE_MONOREPO_BUILDApply node monorepo build if repo indicates itfalsetrue, false
COMPRESS_DESTINATION_DIRIndicates if the entire output directory needs to be compressed.""false
PRUNE_DEV_DEPENDENCIESOnly the prod dependencies are copied to the output for Node apps.""false
NPM_REGISTRY_URLSpecify the npm registry url."""http://foobar.com/"
YARN_TIMEOUT_CONFIGSpecify the yarn timeout config with a delay in milliseconds."""600000"
Setting name for Python appsDescriptionDefaultExample
PYTHON_VERSIONSpecify which Python version the app is using"""2.7.1"
PYTHON_DEFAULT_VERSIONSpecify which Python version the app defaults to if none detected"""2.7.1"
DISABLE_PYTHON_BUILDDo not apply Python build even if repo indicates itfalsetrue, false
VIRTUALENV_NAMESpecify Python virtual environment name"""antenv2.7"
DISABLE_COLLECTSTATICDisable running collectstatic when building Django apps.falsetrue, false
CUSTOM_REQUIREMENTSTXT_PATHSpecify where a requirements.txt is locating. If not set, default is at root of the repo."""subdir/requirements.txt"
PYTHON_ENABLE_GUNICORN_MULTIWORKERSEnable Gunicorn multi worker multi thread config.falsetrue, false
PYTHON_GUNICORN_CUSTOM_WORKER_NUMOnly works when PYTHON\_ENABLE\_GUNICORN\_MULTIWORKERS is set to true. Specify Gunicorn multi worker number. If not set, default is (2 * CPU core num) + 1(2 * CPU core num) + 1, 1"2"
PYTHON_GUNICORN_CUSTOM_THREAD_NUMOnly works when PYTHON\_ENABLE\_GUNICORN\_MULTIWORKERS is set to true. Specify Gunicorn multi thread number. If not set, default is single thread."""4"
ORYX_DISABLE_PIP_UPGRADERemove the --upgrade flag from the pip install command when targeting a specific package installation directory.falsetrue, false
NGINX_CONF_FILESpecify a customized configuration file to modify nginx.conf file"""newconfigfile.conf"

When CUSTOM_BUILD_COMMAND is set for Python apps, it replaces the default dependency installation (pip install, poetry install, uv sync) but preserves virtual environment setup

Setting name for Php appsDescriptionDefaultExample
PHP_VERSIONSpecify which Php version the app is using"""7.4"
PHP_DEFAULT_VERSIONSpecify which Php version the app defaults to if none detected"""7.4"
PHP_COMPOSER_VERSIONSpecify which Php composer version the app is using"""7.2.15"
PHP__COMPOSER_DEFAULT_VERSIONSpecify which Php composer version the app defaults to if none detected"""7.2.15"
DISABLE_PHP_BUILDDo not apply Php build even if repo indicates itfalsetrue, false
FPM_MAX_CHILDRENThe maximum number of child processes to be created5"20"
FPM_START_SERVERSThe number of child processes created on startupmin_spare_servers + (max_spare_servers - min_spare_servers) / 2"10"
FPM_MAX_SPARE_SERVERSThe desired maximum number of idle server processes3"15"
FPM_MIN_SPARE_SERVERSThe desired minimum number of idle server processes1"5"

When CUSTOM_BUILD_COMMAND is set for PHP apps, it replaces the default composer install command.

Setting name for Java appsDescriptionDefaultExample
JAVA_VERSIONSpecify which Java version the app is using"""14.0.2"
JAVA_DEFAULT_VERSIONSpecify which Java version the app defaults to if none detected"""14.0.2"
MAVEN_VERSIONSpecify which Maven version the app is using"""3.6.3"
MAVEN_DEFAULT_VERSIONSpecify which Maven version the app defaults to if none detected"""3.6.3"
DISABLE_JAVA__BUILDDo not apply Java build even if repo indicates itfalsetrue, false
Setting name for Ruby appsDescriptionDefaultExample
RUBY_VERSIONSpecify which Ruby version the app is using"""2.7.1"
RUBY_DEFAULT_VERSIONSpecify which Ruby version the app defaults to if none detected"""2.7.1"
DISABLE_RUBY__BUILDDo not apply Ruby build even if repo indicates itfalsetrue, false
Setting name for Hugo appsDescriptionDefaultExample
HUGO_VERSIONSpecify which Hugo version the app is using"""0.76.3"
HUGO_DEFAULT_VERSIONSpecify which Hugo version the app defaults to if none detected"""0.76.3"
DISABLE_HUGO_BUILDDo not apply Hugo build even if repo indicates itfalsetrue, false
Setting name for Golang appsDescriptionDefaultExample
GOLANG_VERSIONSpecify which Golang version the app is using"""0.76.3"
GOLANG_DEFAULT_VERSIONSpecify which Golang version the app defaults to if none detected"""0.76.3"
DISABLE_GOLANG_BUILDDo not apply Golang build even if repo indicates itfalsetrue, false

Oryx generated manifest file

oryx-manifest.toml is the orxy-generated manifest file involved in 2 stages (build & run). Full flow explanation by platforms. First the build stage will build the application and autogenerate oryx-manifest.toml. Secondly oryx-manifest.toml is used in the runtime to determine how to run the application. The following are fields supported today inside oryx-manifest.toml:

Node fieldsDescriptionExample
NodeVersionPlatform's version that Oryx will use to run the app"14.15.1"
OutputDirPathOutput is in separate volume due to rsync errors".nuxt"
OperationIdUsed to correlate with logs. Track telemetries whether build is passed or failed."|lTpVCq2KGuY=.e6f14074_"
SourceDirectoryInBuildContainerDirectory inside Docker container containing source code"nodejs/helloworld-nuxtjs/"
PlatformNameName of Oryx supported platform name"nodejs"
CompressDestinationDirDetermines whether app is compressed to allow decompression for performance improvements"false"
nodejs_npm_registry_urlURL of the npm registry"https://foobar.com/"
Golang fieldsDescriptionExample
GolangVersionPlatform's version that Oryx will use to run the app"1.17"
OperationIdUsed to correlate with logs. Track telemetries whether build is passed or failed."|lTpVCq2KGuY=.e6f14074_"
SourceDirectoryInBuildContainerDirectory inside Docker container containing source code"golang/hello-world/"
PlatformNameName of Oryx supported platform name"golang"
CompressDestinationDirDetermines whether app is compressed to allow decompression for performance improvements"false"
Python fieldsDescriptionExample
PythonVersionPlatform's version that Oryx will use to run the app"3.8.6"
virtualEnvNameName of the virtual environment running in the Docker container"pythonenv3.8"
OperationIdUsed to correlate with logs. Track telemetries whether build is passed or failed."|lTpVCq2KGuY=.e6f14074_"
SourceDirectoryInBuildContainerDirectory inside Docker container containing source code"nodejs/helloworld-nuxtjs/"
PlatformNameName of Oryx supported platform name"python"
CompressDestinationDirDetermines whether app is compressed to allow decompression for performance improvements"false"
packagedirPackages will be downloaded to given directory instead of VM. Optional field, must be set as ENV var or passed in as a property in oryx command."." (Example command: oryx build python-flask-sample-app/ --package --property packagedir=.)
packagewheelWheels are built with universal flag. packagedir parameter is required"universal" (Example command: oryx build python-flask-sample-app/ --package --property packagedir=. --property packagewheel=universal)
compress_virtualenvDetermines if app is compressed. When running the app, virtual env must be extracted from this file. Default is false"false"
Dotnet fieldsDescriptionExample
DotNetCoreSdkVersionPlatform's version that Oryx will use to run the app"3.1.406"
StartupDllFileNameExecutable used to run the application"NetCoreApp31.MvcApp.dll"
OperationIdUsed to correlate with logs. Track telemetries whether build is passed or failed."|lTpVCq2KGuY=.e6f14074_"
SourceDirectoryInBuildContainerDirectory inside Docker container containing source code"nodejs/helloworld-nuxtjs/"
PlatformNameName of Oryx supported platform name"dotnet"
CompressDestinationDirDetermines whether app is compressed to allow decompression, for performance improvements"false"
OutputTypeOutputType specified in .csproj"Library"
Php fieldsDescriptionExample
PhpVersionPlatform's version that Oryx will use to run the app"8.0.3"
OperationIdUsed to correlate with logs. Track telemetries whether build is passed or failed."|lTpVCq2KGuY=.e6f14074_"
SourceDirectoryInBuildContainerDirectory inside Docker container containing source code"nodejs/helloworld-nuxtjs/"
PlatformNameName of Oryx supported platform name"php"
CompressDestinationDirDetermines whether app is compressed to allow decompression for performance improvements"false"
Ruby fieldsDescriptionExample
RubyVersionPlatform's version that Oryx will use to run the app"2.7.2"
OperationIdUsed to correlate with logs. Track telemetries whether build is passed or failed."|lTpVCq2KGuY=.e6f14074_"
SourceDirectoryInBuildContainerDirectory inside Docker container containing source code"nodejs/helloworld-nuxtjs/"
PlatformNameName of Oryx supported platform name"ruby"
CompressDestinationDirDetermines whether app is compressed to allow decompression for performance improvements"false"
Java fieldsDescriptionExample
JavaVersionPlatform's version that Oryx will use to run the app"11.0.8"
OperationIdUsed to correlate with logs. Track telemetries whether build is passed or failed."|lTpVCq2KGuY=.e6f14074_"
SourceDirectoryInBuildContainerDirectory inside Docker container containing source code"nodejs/helloworld-nuxtjs/"
PlatformNameName of Oryx supported platform name"java"
CompressDestinationDirDetermines whether app is compressed to allow decompression for performance improvements"false"
Hugo fieldsDescriptionExample
HugoVersionPlatform's version that Oryx will use to run the app"0.81.0"
OperationIdUsed to correlate with logs. Track telemetries whether build is passed or failed."|lTpVCq2KGuY=.e6f14074_"
SourceDirectoryInBuildContainerDirectory inside Docker container containing source code"nodejs/helloworld-nuxtjs/"
PlatformNameName of Oryx supported platform name"hugo"
CompressDestinationDirDetermines whether app is compressed to allow decompression for performance improvements"false"