Sad Tux - Windows bias detected
This page contains Windows bias

About This Page

This page is part of the Azure documentation. It contains code examples and configuration instructions for working with Azure services.

Bias Analysis

Detected Bias Types
windows_first
powershell_heavy
windows_tools
missing_linux_example
Summary
The documentation demonstrates a moderate Windows bias. Windows-specific instructions, tools, and examples (such as PowerShell commands, Windows base images, and Kudu/FTP access patterns) are often presented first or in more detail. Some advanced configuration sections (memory, CPU, health ping) are only described for Windows containers, with no Linux equivalents. While Linux content is present and there are Linux-specific pivots, parity in depth and clarity is lacking in several areas.
Recommendations
  • For every Windows-specific section (e.g., customizing memory, CPU, health ping), provide equivalent Linux container instructions or explicitly state if the feature is not supported for Linux.
  • When showing both Bash and PowerShell commands, present Bash (Linux) first or side-by-side, not always after PowerShell.
  • Ensure that advanced diagnostic and logging instructions (e.g., Kudu, FTP, log access) are equally detailed for Linux containers, not just Windows.
  • In sections about persistent storage, clarify differences and provide equal detail for both platforms, including Linux-specific caveats and best practices.
  • Where Windows parent images are listed, provide a similar list or guidance for recommended Linux base images.
  • Review all examples and ensure Linux tools and patterns (e.g., SSH, Linux file paths, Docker Compose) are as prominent as Windows ones.
  • Explicitly call out any features that are Windows-only, and provide links or alternatives for Linux users where possible.
GitHub Create Pull Request

Scan History

Date Scan Status Result
2026-02-20 00:00 #402 in_progress Biased Biased
2026-02-19 00:00 #398 in_progress Biased Biased
2026-02-18 00:00 #394 in_progress Biased Biased
2026-02-17 00:00 #390 in_progress Biased Biased
2026-02-16 00:00 #386 in_progress Biased Biased
2026-02-15 00:00 #382 in_progress Biased Biased
2026-02-14 00:00 #378 in_progress Biased Biased
2026-01-14 00:00 #250 in_progress Biased Biased
2026-01-13 00:00 #246 completed Biased Biased
2026-01-12 00:00 #243 cancelled Biased Biased
2026-01-11 00:00 #240 completed Biased Biased
2026-01-10 00:00 #237 completed Biased Biased
2026-01-09 00:34 #234 completed Biased Biased
2026-01-08 00:53 #231 completed Biased Biased
2026-01-08 00:00 #228 cancelled Clean Clean
2026-01-06 18:15 #225 cancelled Clean Clean
2025-09-15 00:00 #112 completed Biased Biased
2025-08-15 00:01 #81 cancelled Biased Biased
2025-07-13 21:37 #48 completed Biased Biased
2025-07-13 21:25 #47 cancelled Clean Clean
2025-07-13 20:48 #44 cancelled Clean Clean
2025-07-09 13:09 #3 cancelled Clean Clean
2025-07-08 04:23 #2 cancelled Biased Biased

Flagged Code Snippets

In PowerShell:

In PowerShell:

In PowerShell:

In PowerShell:

In PowerShell:

   Replace the following values:

   - *\<app-name>* with the name of your web app.

   > [!TIP]
   > If you use PowerShell console to run the commands, escape the strings in the `--generic-configurations` argument in this step and the next step. For example: `--generic-configurations '{\"acrUseManagedIdentityCreds\": true'`

1. (Optional) If your app uses a [user-assigned managed identity](overview-managed-identity.md#add-a-user-assigned-identity), make sure the identity is configured on the web app and then set the `acrUserManagedIdentityID` property to specify its client ID:

   
When your app runs, the App Service app settings are injected into the process as environment variables automatically. You can verify container environment variables with the URL `https://<app-name>.scm.azurewebsites.net/Env`.

If your app uses images from a private registry or from Docker Hub, credentials for accessing the repository are saved in environment variables: `DOCKER_REGISTRY_SERVER_URL`, `DOCKER_REGISTRY_SERVER_USERNAME`, and `DOCKER_REGISTRY_SERVER_PASSWORD`. Because of security risks, none of these reserved variable names are exposed to the application.

::: zone pivot="container-windows"
For IIS or .NET Framework (4.0 or later) based containers, credentials are injected into `System.ConfigurationManager` as .NET app settings and connection strings automatically by App Service. For all other language or framework, they're provided as environment variables for the process, with one of the following prefixes:

- `APPSETTING_`
- `SQLCONTR_`
- `MYSQLCONTR_`
- `SQLAZURECOSTR_`
- `POSTGRESQLCONTR_`
- `CUSTOMCONNSTR_`

::: zone-end

::: zone pivot="container-linux"

This method works both for single-container apps or multi-container apps, where the environment variables are specified in the *docker-compose.yml* file.

::: zone-end

## Use persistent shared storage

::: zone pivot="container-windows"

You can use the *C:\home* directory in your custom container file system to persist files across restarts and share them across instances. The *C:\home* directory is provided to enable your custom container to access persistent storage.

When persistent storage is disabled, writes to the *C:\home* directory aren't persisted across app restarts or across multiple instances. When persistent storage is enabled, all writes to the *C:\home* directory persist. All instances of a scaled-out app can access them. Any existing files already present on the persistent storage when the container starts overwrite any contents in the *C:\home* directory of the container.

The only exception is the *C:\home\LogFiles* directory. This directory stores the container and application logs. This folder always persists upon app restarts if [application logging is enabled](troubleshoot-diagnostic-logs.md?#enable-application-logging-windows) with the **File System** option, whether or not persistent storage is enabled. In other words, enabling or disabling the persistent storage doesn't affect the application logging behavior.

By default, persistent storage is *enabled* on Windows custom containers. To disable it, set the `WEBSITES_ENABLE_APP_SERVICE_STORAGE` app setting value to `false` by using the [Cloud Shell](https://shell.azure.com). In Bash: