DevOps toolkit - All-in-one bundle with multiple CLI tools
1.9K
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.
📢 Found an issue or want to request a new tool? Open an issue on GitHub
Some tools require glibc and cannot be included in Alpine-based bundles:
| Tool | Reason | Available As |
|---|---|---|
| duckdb | Requires glibc (Alpine uses musl) | Standalone image only |
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.
The Dynamic Injection pattern works as follows:
components/ directory for toolsinstall.sh is copied to a temporary build context.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
./build-all-in-one.sh
The script will:
install.sh files.build-context directorypostgres.sh, aws-cli.sh)ops-toolchain:latestTo add a new tool to the mega image:
Create a new directory under components/:
mkdir components/my-tool
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
Rebuild the all-in-one image:
./build-allinone.sh
That's it! No Dockerfile editing required.
This repository includes an automated workflow that keeps Docker Hub image descriptions synchronized with component READMEs.
sync-dockerhub-descriptions.ymlTriggers:
components/**/README.md files are updated in the main branchFunctionality:
components/ directoryRequirements:
DOCKER_TOKEN secret must be configured in repository settingsTo update a Docker Hub image description:
components/{component}/README.mdmain branchThe workflow uses the entire README content as the "full description" on Docker Hub, preserving all markdown formatting.
When adding new components:
Created and maintained by:
Content type
Image
Digest
sha256:3a13657e4…
Size
346.6 MB
Last updated
23 days ago
docker pull toolkitbox/all