Step 1: Prepare the Environment

Ensure that the necessary tools and environments are set up before proceeding with the deployment. This involves installing Docker and configuring Docker Buildx.

# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

# Enable experimental features for Docker Buildx
export DOCKER_CLI_EXPERIMENTAL=enabled

# Install Buildx
docker buildx install

Step 2: Define the Dockerfile

Utilize the provided Dockerfile to build the application. This example uses a multi-stage build process to create the final images efficiently.

# syntax=docker/dockerfile:1

ARG GO_VERSION=1.23

FROM golang:${GO_VERSION}-alpine AS gobase
COPY . /src
WORKDIR /src

# Build the application
FROM gobase AS build
RUN go build -o my_app main.go

Step 3: Configure Docker-Compose

Create a docker-compose.yml file to manage multiple services, including the application and its dependencies.

version: "3"

services:
  db:
    build: .
    command: ./entrypoint.sh
    image: docker.io/tonistiigi/db
  webapp:
    build:
      context: .
      dockerfile: Dockerfile.webapp
      args:
        buildno: 1

Step 4: Set Up Entry Point Script

Create the entrypoint.sh script which serves as the starting point of the application. This script should be executable.

#!/bin/sh

# Start the application
exec /usr/local/bin/my_app

Make sure the script is executable:

chmod +x entrypoint.sh

Step 5: Build the Images with Buildx

Utilize Docker Buildx to build images across multiple platforms and ensure the output is stored appropriately:

# Create a new Buildx builder instance
docker buildx create --name mybuilder
docker buildx use mybuilder

# Build and push the images to the repository
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .

Step 6: Run the Services

Once the images are built and pushed, run the services using Docker Compose.

docker-compose up -d

Step 7: Verify the Deployment

After starting the services, verify that everything is running as expected. You can check the logs and the status of the containers.

# Check the status of the services
docker-compose ps

# View logs for the web application
docker-compose logs webapp

Step 8: Clean Up

Once deployment is verified, if you need to remove the containers or services, use the following command:

docker-compose down

Apply these steps in the listed order to achieve a successful production deployment using Docker Buildx.

Sources:

  • The content is based on official Docker Buildx documentation and examples from published Dockerfiles and snippets.