Nx Tools

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