Sign inSign up

toolkitbox/all

By toolkitbox

Updated 23 days ago

DevOps toolkit - All-in-one bundle with multiple CLI tools

Image
0

1.9K

toolkitbox/all repository overview

Toolkitbox

A modular Docker image build system for DevOps/SysAdmin tools and clients. You can use a single image with all tools included, individual images per tool, or bundles grouped by kind of tool.

GitHub Stars GitHub Issues Docker Pulls

📢 Found an issue or want to request a new tool? Open an issue on GitHub

Available Images

Bundle Images
ImageDescriptionComponentsSizeDocker PullBadges
allAll tools in one imageall components340.9 MBdocker pull toolkitbox/allDocker Pulls
cloudCloud Bundleaws-cli, azure-cli, gcloud281.4 MBdocker pull toolkitbox/cloudDocker Pulls
databasesDatabases Bundlepostgres, mysql, mariadb, mongo, redis, sqlite67.7 MBdocker pull toolkitbox/databasesDocker Pulls
Individual Tools
ToolVersionsSizeDocker PullBadges
aws-clilatest,v145.3 MBdocker pull toolkitbox/aws-cliDocker Pulls
azure-clilatest132.5 MBdocker pull toolkitbox/azure-cliDocker Pulls
gcloudlatest152.1 MBdocker pull toolkitbox/gcloudDocker Pulls
mariadblatest,v10.3,v10.417.2 MBdocker pull toolkitbox/mariadbDocker Pulls
mongolatest,v3.6,v4.453.2 MBdocker pull toolkitbox/mongoDocker Pulls
mysqllatest,v5.6,v5.717.2 MBdocker pull toolkitbox/mysqlDocker Pulls
postgreslatest,v10,v11,v9.68.7 MBdocker pull toolkitbox/postgresDocker Pulls
redislatest,v4,v59.9 MBdocker pull toolkitbox/redisDocker Pulls
sqlitelatest,v38.2 MBdocker pull toolkitbox/sqliteDocker Pulls
duckdbv1.4.4-docker pull toolkitbox/duckdbDocker Pulls
Standalone Only (Not in Bundles)

Some tools require glibc and cannot be included in Alpine-based bundles:

ToolReasonAvailable As
duckdbRequires glibc (Alpine uses musl)Standalone image only

Overview

This system allows you to dynamically build a "mega image" containing multiple tools without manually editing Dockerfiles. Simply add a new component directory with an install.sh script, and the orchestrator automatically includes it in the build.

This repository builds an individual image for each component as well, allowing for flexible usage and an all-in-one image.

Architecture

The Dynamic Injection pattern works as follows:

  1. Component Discovery: The orchestrator scans the components/ directory for tools
  2. Script Collection: Each component's install.sh is copied to a temporary build context
  3. Dynamic Installation: The Dockerfile iterates through all collected scripts and executes them
  4. Clean Build: Temporary files are removed to keep the final image lean

Project Structure

.gitignore                   # Ignores .build-context directory
build-mega-image.sh          # Orchestrator script (main entry point)
build-single.sh              # Script to build individual component images
Dockerfile.bundle            # Generic Dockerfile for mega image
components/                  # Component library
├── postgres/
│   ├── install.sh           # Latest PostgreSQL client installer
│   └── v11-legacy/          # Legacy version (not included in bundle)
│       └── Dockerfile       # Standalone Dockerfile for PG 11
└── aws-cli/
└── install.sh           # AWS CLI installer

Quick Start

Building the all-in-one Image
./build-all-in-one.sh

The script will:

  • Discover all components with install.sh files
  • Create a temporary .build-context directory
  • Copy and rename component installers (e.g., postgres.sh, aws-cli.sh)
  • Build the Docker image tagged as ops-toolchain:latest

Adding New Components

To add a new tool to the mega image:

  1. Create a new directory under components/:

    mkdir components/my-tool
    
  2. Create an install.sh script:

    cat > components/my-tool/install.sh <<'EOF'
    #!/bin/bash
    set -e
    
    echo "Installing my-tool..."
    apk add --no-cache my-tool
    
    # Verify installation
    if command -v my-tool &> /dev/null; then
        echo "my-tool installed successfully"
    else
        echo "ERROR: my-tool installation failed"
        exit 1
    fi
    EOF
    
  3. Rebuild the all-in-one image:

    ./build-allinone.sh
    

That's it! No Dockerfile editing required.

Automated Docker Hub Description Sync

This repository includes an automated workflow that keeps Docker Hub image descriptions synchronized with component READMEs.

Workflow: sync-dockerhub-descriptions.yml

Triggers:

  • Automatically when components/**/README.md files are updated in the main branch
  • Manually via GitHub Actions UI (workflow_dispatch)

Functionality:

  1. Authenticates with Docker Hub API
  2. Iterates through all components in components/ directory
  3. Updates the Docker Hub description for each image using its README.md content

Requirements:

  • DOCKER_TOKEN secret must be configured in repository settings
  • Docker Hub repositories must exist before running the workflow
Updating Component Descriptions

To update a Docker Hub image description:

  1. Edit the component's README: components/{component}/README.md
  2. Commit and push to the main branch
  3. The workflow will automatically sync the description to Docker Hub

The workflow uses the entire README content as the "full description" on Docker Hub, preserving all markdown formatting.

Contributing

When adding new components:

  1. Follow the component guidelines above
  2. Test the installation script in isolation first
  3. Verify the individual and all-in-one image builds successfully
  4. Update documentation if adding complex components
  5. Create a comprehensive README.md in the component directory (it will be synced to Docker Hub)

Author

Created and maintained by:

Tag summary

Content type

Image

Digest

sha256:3a13657e4

Size

346.6 MB

Last updated

23 days ago

docker pull toolkitbox/all