Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel7

Objective

You have a working docker project and the source code is managed in a Git repository. The goal of the tutorial is to push a docker image to the Azure container registry. 

This process will include:

  • cloning the application from a Git repository

  • building the docker image

  • push the docker image to the Azure container registry

We will walk through each of the FlexDeploy features that will be created/configured to accomplish this goal and have the docker image published to the Azure container registry in a very short amount of time.

Checklist

...

Checklist

...

Description

...

Docker Registry Address

...

Target Azure Container Registry URL

...

Docker Registry User

...

Azure Client ID to push/pull images against Azure Container Registry

...

Docker Registry Token/Password

...

Password for the above Azure Client ID

...

Docker Registry User permission

...

The Client ID must have relevant access to push/pull images from Azure Container Registry

Configure Cloud specific credential

To configure credential details according to the cloud provider, please refer to the document. Docker Registry Setup For Cloud Providers

Configure Container account

Configure Azure Container Account under Topology. FlexDeploy will connect to the Azure container registry and push the docker image.

  1. Navigate to the Topology Tab

  2. Select Integrations from the left-hand pane

  3. Navigate to the Containers tab under Topology

  4. Create a new Containers account with the “+” button. Create a new Docker Registry account of provider type “DockerRegistry”

...

It should have a Registry Address, Registry User, and Registry Token/Password configured in it.

...

  1. Docker Registry Token/Password is a password field and hence needs to be kept hidden. To update the same click on the pencil icon as shown below

  2. next update the Azure Client Key value under Secret Text. This is to make sure no one else can retrieve the password

...

Git repository structure

The Git repository should be a docker based application. Dockerfile should be present in application to build the image.

The Sample Git repository structure is given below:

...

Build Workflow

Navigate to the Workflows tab and create a workflow using the “+”(Click to create new Workflow) button as highlighted below.

...

Build Workflow

  1. Navigate to the Workflows Tab

  2. Select the “+” button from the left-hand pane to create a new workflow with type as Build.

...

The Workflow Group and Subgroup define the folder hierarchy. Once both workflows are created it should look like the below. No constraint on workflow or folder naming convention.

...

Table of Contents
minLevel1
maxLevel7

Objective

You have a working Docker project and the source code is managed in a Git repository. The goal of this tutorial is to push a Docker image to the Azure container registry. 

This process will include:

  • Cloning the application from a Git repository

  • Building the Docker image

  • Pushing the Docker image to the Azure container registry

We will walk through each of the FlexDeploy features that will be created/configured to accomplish this goal and have the Docker image published to the Azure container registry in a very short amount of time.

Checklist

Checklist

Description

Docker Registry Address

Target Azure Container Registry URL

Docker Registry User

Azure Client ID to push/pull images against Azure Container Registry

Docker Registry Token/Password

Password for the above Azure Client ID

Docker Registry User permission

The Client ID must have relevant access to push/pull images from Azure Container Registry

Configure Cloud-Specific Credential

To configure credential details according to the cloud provider, please refer to this document: Docker Registry Setup For Cloud Providers

Configure Container Account

FlexDeploy will connect to the Azure container registry using the container account details provided.

  1. Navigate to Integrations

  2. Open the Containers tab

  3. Create a new Containers account by pressing the Create button. Create a new Docker Registry account of provider type DockerRegistry

    image-20240315-193955.pngImage Added

It should have a Registry Address, Registry User, and Registry Token/Password configured in it.

Git Repository Structure

The Git repository should be a Docker-based application. The Docker File should be present in the application to build the image.

A sample Git repository structure is given below:

...

Build Workflow

Navigate to Workflows and create a workflow using the (blue star) button as highlighted below.

...

The steps of the workflow execution can be configured through from the Workflow Definition section tab.

...

Below given is a sample build workflow to build and push docker image to the Azure container registry.

...

Step -i1: Clone Git RepositoryProject Sources

This step will clone the Git repository codebase into the project Project’s execution working directory. The Git URL will be retrieved from Source Control configured under Project Configurationconfiguration.

...

Below given is the Git code structure and corresponding exported codebase during execution as a result of the above step.

Git Codebase

...

EXPORTED CODEBASE

...

Step -ii2: Build and Push the docker image to the Azure container registryImage

Below given is the Docker plugin (buildImage operation) configurationsconfiguration. The below This step will build and push a docker image to the Azure container registry.

...

The plugin operation by default would look for Dokerfile under the Docker File within the TEMP directory. In case the same exist If it exists in some other folder, a relative path has to be specified from TEMP directory for the Docker File plugin input.

Below given is the Git project folder structure. Since our Dockerfile Docker File is under the DockerDemo folder in the Git repository, we had to provide the relative path accordingly.

...

By default docker , the Docker image and image tag details will be retrieved from your Project Properties. However, one you can always provide the details as part of the plugin operation input(highlighted in above of the plugin operation diagram). Plugin operation input shall input, while will take precedence over Project Properties.

We have also marked the Push Image to Repository checkbox to ensure the created image is push to the Azure container registry. The pushImage operation under within the Docker plugin can also be used to push the image to the target docker Docker registry.

If the Container Registry Account is properly configured, it would will push the image to Docker Registry when the build executes. In our case, the image is pushed to the Azure container registry as can be observed below.

...

After Build docker building, Docker image information will also be available in the Artifacts sectiontab of the execution.

...

Project

...

Configuration

Navigate to the Project tab Projects and create a blank, standard Project with a logical name (PushDockerImageToAzureContainerRegistry in this case).

...

Configure the Build build workflow that has been created in previous steps as shown below.

...

Anchor
Source_Control
Source_Control
Source Control

Configure the Source SCM repository under Source Control as shown below.

...

To configure Project specific Source Control one first need to navigate to the Project Configuration tab.

...

Next, expand the SOURCE CONTROL option from the left-hand pane.

...

on the Source Control tab as shown below.

...

  1. Select the Sources section for configuring your source repository

  2. Select the appropriate Source Control Type

  3. Configure Source Repositorysource repositorydetails. For more detailed steps of Source Control source control configuration, please refer to Configure Source Control in FlexDeploy

Anchor
Project_properties
Project_properties
Project Properties

To configure Project specific settings one can navigate to Configuration Properties as shown below.

...

To configure Project-specific

...

properties, navigate to

...

Configuration

...

Properties as shown

...

below.

...

  1. Select the target Registry Account.

  2. Docker Image Name and Docker Image Tag are essential to build the docker Docker image.

Target Properties

Topology

Navigate to the Topologyfrom the Menu. The Page with the Target Groups, Environments and Endpoints sections will be displayed. Choose a Target Group on the left, or create a new one. You will see a list of Environments on the right with colored circles representing each Target

...

Click on Docker Target Group and click on the Development EnvironmentTarget

...

Color coding represents:

  • RED - The Endpoint is not configured

  • YELLOW - some of the required properties are not set,

  • GREEN - all required properties are set and the Endpoint is configured

...

Clicking the environment row for DEV Dev allows modifying the Endpoint and properties. Below are the environment-specific values which need to be updated.

...

Properties

Property

Mandatory

field

Description

Docker Server

Optional

Docker server address. Required if Docker Unix Socket is not set.

Docker Server Port

Optional

The port to connect to on the Docker server.

Docker Unix Socket

Optional

The socket the Docker daemon listens on

The default value is [/var/run/docker.sock]

Registry Account

Optional

Docker Registry account with relevant details

GIT Path

Optional

Path to the Git executable. Required only if git is not on PATH

.

...

.

...

Build Execution

For detailed steps on how to initiate Build build and push docker image Docker images, please refer to Build execution Execution through FlexDeploy for Docker pluginPlugin

Congratulations! You have successfully completed the Push Docker Image to Azure Container Registry (ACR) tutorial.

Now that you have configured FlexDeploy to push image images to the Azure container registry, it is extremely easy to replicate the same for other container registry registries as well. Simply use the Copy Project feature and a new project will be created with all of the configuration completed already. You just need to make the necessary configuration changes.