App Services have long been a super simple way to spin up a web app in Azure. The barrier to entry is low, maintenance is easy. It just works. App Services recently got a turbo boost in the form of Azure App Service on Linux. Being able to deploy to Linux is exciting enough; but the real reason this is notable because you can deploy Docker images that will be run as app services.
I cannot over-emphasise just how easy this makes getting a Docker image into Production. Yay Azure!
Applications need configuration. ASP.Net Core applications are typically configured by an
appsettings.json file which might look like so:
With a classic App Service you could override a setting in the
appsettings.json by updating "Application settings" within the Azure portal. You'd do this in the style of creating an Application setting called
Parent:ChildTwo. To be clear: using colons to target a specific piece of config.
You can read about this approach here. Now there's something I want you to notice; consider the colons below:
If you try and follow the same steps when you're using Web App for Containers / i.e. a Docker image deployed to an Azure App Service on Linux you cannot use colons:
When you hover over the error you see this message:
This field can only contain letters, numbers (0-9), periods ("."), and underscores ("_"). Using
. does not work alas.
So it turns out you just can't configure App Services on Linux.
No, of course you can and here I can help. After more experimentation than I'd like to admit I happened upon the answer. Here it is:
Where you use
: on a classic App Service, you should use a
__ (double underscore) on an App Service with containers. So
Parent__ChildOne instead of
Parent:ChildOne. It's as simple as that.
Honestly? No idea. I can't find any information on the matter. Let me know if you find out.