Build and Push Applications
Introduction
In this article you will learn how to build and push your application containers using Torizon IDE Extension 2. This will provide you with a ready-to-deploy container images. You will also learn how to push to DockerHub and Torizon Cloud, leveraging the automated tasks from the Extension.
Prerequisites
Build only:
Push to DockerHub:
Push to Torizon Cloud:
- Torizon Cloud credentials.zip file. See How to get Torizon Cloud credentials.zip for more information.
- Torizon Cloud API v2 client token. See Creating a New Torizon Cloud API v2 Client for more information.
Build and Push the Production Docker Image
Use one of the push-release-<arch\>
tasks.
These tasks can build the application based in the production Dockerfile and push the image to the DockerHub. The image will be dockerUserLogin/applicationName:archSelected
.
There is one task for each architecture supported by Torizon OS:
push-release-arm64
push-release-arm
push-release-amd64
Inputs are needed to complete the task and are asked in the start of the task:
Docker registry user login
: the Docker registry user login to use to push the image to DockerHub.Docker registry password
: the Docker registry password to use to push the image to DockerHub. This will be stored as a secret in the VS Code vault.
Build, Push and Generate the Docker-compose for Production
After the project development cycle is finished, the next step is to generate a production image. The production image is the image that will be used to create a package to push to Torizon Cloud.
The production image is generated using the create-production-image
task.
This task has automation steps to build the production Docker image and push it to the DockerHub registry.
The production Docker image is based in the Dockerfile
file.
Inputs are needed to complete the task and are asked in the start of the task:
Docker namespace
: the Docker namespace to use to build the image, push it to DockerHub and set in thedocker-compose.prod.yml
. The image name will bedockerNamespace/applicationName:dockerTag
.Docker tag to use in the production image
: the Docker tag to use in the production image. The image name will bedockerNamespace/applicationName:dockerTag
.Docker registry password
: the Docker registry password to use to push the image to DockerHub. This will be stored as a secret in the VS Code vault.Container architecture
: the architecture to build the Docker image. This will be shown as itens to select. Select the architecture that matches the target device.
Wait for the task to finish. The production Docker image will be built and pushed to DockerHub. The docker-compose.prod.yml
file will be updated with the new image and version set by the user inputs, you should have something like the image below in the terminal tab on the finish of the task:
This is the flow of the create-production-image
task:
- Build the application Docker image based in the
Dockerfile
; - Push the application Docker image to the DockerHub registry;
- Generate the production
docker-compose.prod.yml
file;
The generated docker-compose.prod.yml
file is based on the docker-compose.yml
file, the -debug
services are removed and environment variables are set to production values. This file can be used to create a new docker-compose
package in Torizon Cloud.
The generated docker-compose.prod.yml
file is not intended to be edited manually.
If you need to change some rule or service in the docker-compose.prod.yml
file, you need to edit the docker-compose.yml
file and run the create-production-image
task again.
Build and Push the Application to Torizon Cloud
Use the tcb-platform-publish
task.
This task will build the production image based on the Dockerfile, push it to DockerHub, create the docker-compose
and push it to the Torizon Cloud. This creates a new application package ready for updates in Torizon Cloud.
This task needs the credentials.zip
file from Torizon Cloud in the root of the project folder. You can get it from the Torizon Cloud.
Check the How to Get Torizon Cloud credentials.zip documentation for more information.
After you have generated a production image, and the docker-compose.prod.yml
, you can create a Torizon Cloud docker-compose
package.
This package can be used to deploy, or trigger an update, to a device fleet.
Inputs are needed to complete the task and are asked in the start of the task:
Docker registry password
: the Docker registry password to use to push the image to DockerHub. This will be stored as a secret in the VS Code vault.Container architecture
: the architecture to build the Docker image. This will be shown as itens to select. Select the architecture that matches the target device.
Docker namespace
: the Docker namespace to use to build the image, push it to DockerHub and set in thedocker-compose.prod.yml
. The image name will bedockerNamespace/applicationName:dockerTag
.Docker tag to use in the production image
: the Docker tag to use in the production image. The image name will bedockerNamespace/applicationName:dockerTag
The Docker tag to use in the production image
input is shown only if the docker_tag
property is not set in the .vscode/settings.json
.
See Workspace Settings for more information.
At the end of the tasks, if all was successful, you will see the following message in the terminal tab:
And the package will be available in the Torizon Cloud: