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.
Navigate to Integrations
Open the Containers tab
Create a new Containers account by pressing the Create 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.
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 button as highlighted below.
The steps of the workflow execution can be configured from the Definition tab. Below is a sample build workflow.
Step 1: Clone Project Sources
This step will clone the Git repository codebase into the Project’s execution working directory. The Git URL will be retrieved from Source Control configured under Project configuration.
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 2: Build Image
Below is the Docker plugin (buildImage operation) configuration. This step will build and push a docker image to the Azure container registry.
The plugin operation by default would look for the Docker File within the TEMP directory. If it exists in some other folder, a relative path has to be specified from TEMP directory for the Docker File plugin input.
Below is the Git project folder structure. Since our Docker File is under the DockerDemo folder in the Git repository, we had to provide the relative path accordingly.
By default, the Docker image and image tag details will be retrieved from your Project Properties. However, you can always provide the details as part of the plugin operation 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 within the Docker plugin can also be used to push the image to the target Docker registry.
If the Container Registry Account is properly configured, it 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 building, Docker image information will also be available in the Artifacts tab of the execution.
Project Configuration
Navigate to Projects and create a blank, standard Project with a logical name (PushDockerImageToAzureContainerRegistry in this case).
Configure the build workflow that has been created in previous steps as shown below.
Source Control
Configure the SCM repository on the Source Control tab as shown below.
Select the Sources section for configuring your source repository
Select the appropriate Source Control Type
Configure source repository details. For more detailed steps of source control configuration, please refer to Configure Source Control in FlexDeploy
Project Properties
To configure Project-specific properties, navigate to Configuration → Properties as shown below.
Select the target Registry Account.
Docker Image Name and Docker Image Tag are essential to build the Docker image.
Target Properties
Topology
Navigate to Topology. 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.
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 allows modifying the Endpoint and properties.
Properties | 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. |
Below given are the env-specific values which need to be updated.
Build Execution
For detailed steps on how to initiate Build and push docker image please refer to Build execution through FlexDeploy for Docker plugin
Congratulations! You have successfully completed the Push Docker Image to Azure Container Registry(ACR) tutorial.
Now that you have configured FlexDeploy to push image to the Azure container registry, it is extremely easy to replicate the same for other container registry 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.