Containers on Azure App Service

This is a relatively new feature provided by Azure and is currently in preview at the time of writing. Azure App Service is another PaaS that provides a managed environment for deploying applications. App Service can be automatically scaled up and out based on rules and conditions, and containers can be created on these new nodes. Web Apps for Containers provides all the benefits of Azure App Service with an additional benefit. When provisioning an App Service, customers are bound by the given platform in terms of .NET version and operating system. Customers cannot control the operating system version or the .NET version. However, when deploying containers on top of App Service, the container images can consist of any .NET runtime, framework, and SDK. Moreover, the container image can be based on any compatible version of the base operating system. In short, containers on App Service provide much more flexibility for provisioning an environment. It is also cost-effective compared to IaaS container options; however, there is reduced control on virtual machines. This option, however, provides key-hole access to the underlying services and servers.

This option necessitates that the images are stored on some registry. It could be Azure Container Registry, Docker Hub, or any private registry. It is not possible to upload a Dockerfile targeting Windows images to App Service; however, this option of using Docker Compose and Kubernetes is available for Linux containers.

The complexity of creating and maintaining applications with Web Apps for Containers is considerably lower compared to other options. It's a great solution for demo and dev/test environments.