Developing Dockerized .NET Framework and .NET Core Applications
Docker is a platform for packaging, distributing, running, and managing applications. When you package your applications as Docker images, they all have the same shape. You can deploy, manage, secure, and upgrade them all in the same way. All Dockerized applications have the same requirements to run them: a Docker Engine running on a compatible operating system. Applications run in isolated environments, so you can host different application platforms and different platform versions on the same machine with no interference.
In the .NET world, this means you can run multiple workloads on a single Windows machine. They could be ASP.NET websites, or Windows Communication Foundation (WCF) apps running as .NET console applications or .NET Windows Services. In the previous chapter we looked at Dockerizing legacy .NET applications without any code changes, but Docker has some simple expectations about how applications running inside containers should behave so that they can get the full benefit of the platform.
In this chapter we'll look at how to build applications so that they can take complete advantage of the Docker platform, including:
- The integration points between Docker and your application
- Configuring your application with config files and environment variables
- Monitoring applications with health checks
- Running distributed solutions with components in different containers
This will help you develop .NET and .NET Core applications that behave in a way Docker expects so that you can manage them fully with Docker.
We will cover the following topics in this chapter:
- Building good citizens for Docker
- Separating dependencies
- Breaking up monolithic applications