Docker Compose is a tool for defining and running multi-container Docker applications. It uses YAML files to configure the services and containers that make up an application. BuildKit is a new build engine that is included with Docker since version 18.09. It provides faster and more efficient builds compared to the traditional Docker build engine.
By default, Docker Compose uses the traditional Docker build engine, but it’s possible to enable BuildKit by configuring Docker Compose. In this article, we’ll show how to enable BuildKit in Docker Compose.
Prerequisites
Before we begin, ensure that you have the following prerequisites:
- Docker Compose installed
- Docker version 18.09 or higher
Step 1: Create a Docker Compose File
First, we need to create a Docker Compose file. This file defines the services that make up our application. We will create a simple example that builds a web application using BuildKit.
Create a new directory for your project and change into it:
$ mkdir myproject$ cd myproject
Create a new file called docker-compose.yml
and add the following contents:
version: '3'services:web:build:context: .dockerfile: Dockerfileimage: my-web-app
This file defines a service called web
. The service uses the Dockerfile in the current directory to build an image. The resulting image is tagged with the name my-web-app
.
Step 2: Enable BuildKit
To enable BuildKit in Docker Compose, set the DOCKER_BUILDKIT
environment variable to 1
.
You can set the environment variable in your shell before running Docker Compose:
$ export DOCKER_BUILDKIT=1$ docker-compose build
Or you can set the environment variable in your Docker Compose file:
version: '3'services:web:build:context: .dockerfile: Dockerfileextra_hosts:- "example.com:host_ip"network_mode: "host"image: my-web-appenvironment:DOCKER_BUILDKIT: 1
In this example, we set the DOCKER_BUILDKIT
environment variable to 1
in the web
service.
Step 3: Build and Run the Application
Now that we have enabled BuildKit, we can build and run our application.
To build the image, run:
$ docker-compose build
Docker Compose will use BuildKit to build the image.
To run the application, run:
$ docker-compose up
This will start the web
service and any other services defined in your Docker Compose file.
Conclusion
BuildKit is a new build engine that provides faster and more efficient builds compared to the traditional Docker build engine. In this article, we showed how to enable BuildKit in Docker Compose. By enabling BuildKit, you can speed up your Docker builds and take advantage of the latest Docker features.