Tutorial: Prepare an application for Azure Kubernetes Service (AKS)

In this tutorial, part one of seven, a multi-container application is prepared for use in Kubernetes. Existing development tools such as Docker Compose are used to locally build and test an application. You learn how to:

  • Clone a sample application source from GitHub
  • Create a container image from the sample application source
  • Test the multi-container application in a local Docker environment

Once completed, the following application runs in your local development environment:

Image of Kubernetes cluster on Azure

In subsequent tutorials, the container image is uploaded to an Azure Container Registry, and then deployed into an AKS cluster.

Before you begin

This tutorial assumes a basic understanding of core Docker concepts such as containers, container images, and docker commands. For a primer on container basics, see Get started with Docker.

To complete this tutorial, you need a local Docker development environment running Linux containers. Docker provides packages that configure Docker on a Mac, Windows, or Linux system.

Azure Cloud Shell does not include the Docker components required to complete every step in these tutorials. Therefore, we recommend using a full Docker development environment.

Get application code

The sample application used in this tutorial is a basic voting app. The application consists of a front-end web component and a back-end Redis instance. The web component is packaged into a custom container image. The Redis instance uses an unmodified image from Docker Hub.

Use git to clone the sample application to your development environment:

git clone https://github.com/Azure-Samples/azure-voting-app-redis.git

Change directories so that you are working from the cloned directory.

cd azure-voting-app-redis

Inside the directory is the application source code, a pre-created Docker compose file, and a Kubernetes manifest file. These files are used throughout the tutorial set.

Create container images

Docker Compose can be used to automate building container images and the deployment of multi-container applications.

Use the sample docker-compose.yaml file to create the container image, download the Redis image, and start the application:

docker-compose up -d

When completed, use the docker images command to see the created images. Three images have been downloaded or created. The azure-vote-front image contains the front-end application and uses the nginx-flask image as a base. The redis image is used to start a Redis instance.

$ docker images

REPOSITORY                   TAG        IMAGE ID            CREATED             SIZE
azure-vote-front             latest     9cc914e25834        40 seconds ago      694MB
redis                        latest     a1b99da73d05        7 days ago          106MB
tiangolo/uwsgi-nginx-flask   flask      788ca94b2313        9 months ago        694MB

Run the docker ps command to see the running containers:

$ docker ps

CONTAINER ID        IMAGE             COMMAND                  CREATED             STATUS              PORTS                           NAMES
82411933e8f9        azure-vote-front  "/usr/bin/supervisord"   57 seconds ago      Up 30 seconds       443/tcp, 0.0.0.0:8080->80/tcp   azure-vote-front
b68fed4b66b6        redis             "docker-entrypoint..."   57 seconds ago      Up 30 seconds       0.0.0.0:6379->6379/tcp          azure-vote-back

Test application locally

To see the running application, enter http://localhost:8080 in a local web browser. The sample application loads, as shown in the following example:

Image of Kubernetes cluster on Azure

Clean up resources

Now that the application's functionality has been validated, the running containers can be stopped and removed. Do not delete the container images - in the next tutorial, the azure-vote-front image is uploaded to an Azure Container Registry instance.

Stop and remove the container instances and resources with the docker-compose down command:

docker-compose down

When the local application has been removed, you have a Docker image that contains the Azure Vote application, azure-front-front, for use with the next tutorial.

Next steps

In this tutorial, an application was tested and container images created for the application. You learned how to:

  • Clone a sample application source from GitHub
  • Create a container image from the sample application source
  • Test the multi-container application in a local Docker environment

Advance to the next tutorial to learn how to store container images in Azure Container Registry.