Nx Tools
OverviewIntroduction

Introduction

The Nx Tools Container plugin provides comprehensive executors and generators for building and managing OCI-compliant container images within Nx workspaces.

The @nx-tools/nx-container plugin streamlines container image workflows in Nx monorepos by providing a unified interface for multiple container build engines and automated image management capabilities.

Key Features

  • Multi-Engine Support: Build container images using your preferred container engine:
  • Automated Image Management: Intelligent tag generation and OCI Image Format Specification compliant labeling
  • Project Scaffolding: Code generators to quickly configure container builds for your applications

Getting Started

Installation

To add the @nx-tools/nx-container plugin to your Nx workspace, run the following command:

npx nx add @nx-tools/nx-container

This command will:

  • Install the plugin package
  • Configure the plugin in your nx.json file
  • Set up default configurations for your workspace

Task Inference

The plugin automatically detects projects suitable for containerization and adds a container task to any project containing a Dockerfile. This intelligent inference eliminates the need for manual task configuration in most cases.

Viewing Inferred Tasks

To inspect the automatically inferred tasks for any project:

  • Using Nx Console: Open the project details view for comprehensive task visualization
  • Using CLI: Execute nx show project <project-name> to display project configuration and available tasks

Configuration

Plugin Configuration

Configure the @nx-tools/nx-container plugin in your workspace's nx.json file within the plugins array:

nx.json
{
  "plugins": [
    {
      "plugin": "@nx-tools/nx-container",
      "options": {
        "defaultEngine": "docker",
        "defaultRegistry": "docker.io"
      }
    }
  ]
}

Alternative Engine Configuration

You can customize the default build engine and registry to match your infrastructure requirements:

nx.json
{
  "plugins": [
    {
      "plugin": "@nx-tools/nx-container",
      "options": {
        "defaultEngine": "podman",
        "defaultRegistry": "ghcr.io"
      }
    }
  ]
}

Supported Engines:

  • docker (default) - Standard Docker builds with BuildKit
  • podman - Rootless container builds

Common Registries:

  • docker.io - Docker Hub (default)
  • ghcr.io - GitHub Container Registry
  • gcr.io - Google Container Registry
  • Custom registry URLs

Build your application

nx container appName

To use a different engine, you need to update the options.engine property of your project target or use the INPUT_ENGINE environment variable. All possible values are docker (the default) and podman

For more details about all available options, please refer to the build executor documentation.

Last updated on

On this page