Rambo Docker Tools — CLI for docker-compose generation
Project description
🐳 Rambo Docker Tools (RDT)
RDT is a CLI tool for generating production-ready docker-compose.yml files in seconds. Pick a service, answer a few questions (or skip them entirely with --yes), and RDT writes the compose block, volumes, healthchecks, resource limits, and .env variables for you.
Features
- Interactive wizard — guided prompts for port, volume, credentials, and dependencies
- Script mode — fully non-interactive via flags (
--yes,--port,--volume, etc.) - 30+ service presets across 8 categories (see Available Services)
- Smart Mapping — automatically detects and links related services (e.g. pgAdmin → PostgreSQL, Grafana → Prometheus)
.env/.env.examplegeneration — credentials are written to environment files automatically- Artifact generation — config files (nginx.conf, prometheus.yml, traefik.yml, …) are scaffolded automatically
- Resource limits — every service ships with sane CPU and RAM caps
- Healthchecks — databases and brokers include ready-to-use healthcheck configs
- Service removal — cleanly remove services, orphaned env vars, and companion files
- Project diagnostics —
rdt doctorvalidates your stack before you start it - Multi-language UI — English and Russian, switchable at any time
- Agentic Skill — includes dedicated instructions for AI coding agents to use RDT autonomously
- MCP Server — Model Context Protocol server (
rdt-mcp) for native integration with Claude Desktop, Cursor, Windsurf, and any other MCP-compatible AI client
Available Services
| Category | Services |
|---|---|
| Web Servers | Nginx (Reverse Proxy), Nginx (Static), Nginx (SPA), Apache (Static), Apache + PHP, Traefik |
| Relational DB | PostgreSQL, MySQL, MariaDB, MS SQL Server, Oracle DB (XE) |
| NoSQL / Cache | MongoDB, Redis, Valkey, Cassandra, InfluxDB |
| Search / Logging | Elasticsearch, OpenSearch, Logstash, Filebeat, Kibana, Seq |
| Message Brokers | Kafka (KRaft), RabbitMQ |
| Identity / Auth | Keycloak |
| Monitoring | Prometheus, Grafana, Zookeeper |
| Admin Tools | pgAdmin, phpMyAdmin, Kafka UI, Mongo Express |
Run rdt list at any time to see the full list with images and default ports.
Installation
Prerequisites
- Python 3.10+
- Docker & Docker Compose (required only for the
rdt upcommand)
Option 1 — pipx (recommended for CLI tools)
pipx installs CLI tools in isolated environments and makes them available system-wide — no manual venv needed.
# Install pipx if you don't have it
pip install pipx
pipx ensurepath # add pipx bin dir to PATH (restart terminal after)
# Install RDT from PyPI
pipx install rdt-rambo
# With MCP server support
pipx install "rdt-rambo[mcp]"
# Or install directly from GitHub (no PyPI account needed)
pipx install git+https://github.com/Skr0ls/RDT.git
Option 2 — pip (inside a virtual environment)
# From PyPI
pip install rdt-rambo
# With MCP server support
pip install "rdt-rambo[mcp]"
# Or from GitHub
pip install git+https://github.com/Skr0ls/RDT.git
Option 3 — from source (for development)
# 1. Clone the repository
git clone https://github.com/Skr0ls/RDT.git
cd RDT
# 2. Create and activate a virtual environment
python -m venv .venv
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
# macOS / Linux
source .venv/bin/activate
# 3. Install in editable mode (add [mcp] for MCP server support)
pip install -e .
pip install -e ".[mcp]"
Verify installation
rdt --version
rdt --help
Publishing a new release to PyPI
For maintainers only.
# 1. Install build tools
pip install build twine
# 2. Build the distribution packages
python -m build
# → creates dist/rdt_rambo-X.Y.Z.tar.gz and dist/rdt_rambo-X.Y.Z-py3-none-any.whl
# 3. Upload to PyPI
twine upload dist/*
# You will be prompted for your PyPI API token
# Or upload to TestPyPI first to verify
twine upload --repository testpypi dist/*
After upload, users can install with pipx install rdt-rambo or pip install rdt-rambo.
🖥️ Usage
Interactive mode
Run rdt with no arguments to open the interactive menu:
rdt
Use the arrow keys to navigate and Enter to confirm. The menu offers all commands described below.
Commands
rdt init — Initialize a project
Creates a base docker-compose.yml with the shared rambo-net network.
rdt init # create docker-compose.yml in the current directory
rdt init --file my-compose.yml # custom file name
rdt init --force # overwrite an existing file
rdt add <service> — Add a service
Adds a configured service block to docker-compose.yml and writes credentials to .env.
# Interactive wizard (default)
rdt add postgres
# Script mode — use all defaults, no prompts
rdt add postgres --yes
# Custom port and volume path
rdt add postgres --yes --port 5433 --volume ./data/pg
# Add Redis and declare it depends on Postgres
rdt add redis --yes --depends-on postgres
# Generate unique random passwords instead of placeholders
rdt add postgres --hardcore --yes
# Target a custom compose file
rdt add mysql --yes --file infra/docker-compose.yml
| Flag | Short | Description |
|---|---|---|
--yes |
-y |
Skip the wizard and apply defaults |
--port |
-p |
Override the default host port |
--volume |
Named volume or local path for data (e.g. ./data/pg) |
|
--depends-on |
Add a depends_on entry (repeatable) |
|
--hardcore |
Generate unique random credentials | |
--no-ports |
Do not publish ports outside the Docker network | |
--network |
Network type or name: bridge | host | none | <external-net> |
|
--container-name |
Explicit container name | |
--set |
Override any wizard answer: key=value (repeatable) |
|
--hc-interval |
Healthcheck interval (e.g. 10s) |
|
--hc-timeout |
Healthcheck timeout (e.g. 5s) |
|
--hc-retries |
Healthcheck retry count | |
--hc-start-period |
Healthcheck start period (e.g. 30s) |
|
--file |
-f |
Path to the compose file (default: docker-compose.yml) |
rdt list — Browse available services
Prints a table of all supported services with their category, image, and default port.
rdt list
rdt up — Start containers
A thin proxy around docker compose up.
rdt up # start in detached mode (default)
rdt up --no-detach # stream logs to stdout
rdt up --file infra/docker-compose.yml
rdt remove <service> — Remove a service
Removes a service block from docker-compose.yml, optionally cleaning up orphaned .env variables and companion config files.
# Interactive — picks the service from a list
rdt remove
# Remove a specific service
rdt remove postgres
# Also remove orphaned .env variables
rdt remove postgres --clean-env
# Also remove companion config files (e.g. prometheus/prometheus.yml)
rdt remove postgres --clean-artifacts
# Skip all confirmation prompts
rdt remove postgres --yes --clean-env --clean-artifacts
# Target a custom compose file
rdt remove postgres --file infra/docker-compose.yml
| Flag | Short | Description |
|---|---|---|
--yes |
-y |
Skip confirmation prompts |
--clean-env |
Remove orphaned .env / .env.example variables |
|
--clean-artifacts |
Delete companion config files generated for the service | |
--file |
-f |
Path to the compose file (default: docker-compose.yml) |
rdt doctor — Diagnose your project
Runs a full health check of your Docker project and reports any issues before you start the stack.
rdt doctor # check the default docker-compose.yml
rdt doctor --file infra/compose.yml # check a custom file
Checks performed:
| Check | What it verifies |
|---|---|
| Docker | Docker daemon is reachable |
| Compose | Docker Compose v2 is available |
| Compose valid | File passes docker compose config |
| Env vars | All ${VAR} references in the compose file are set in .env |
| Port conflicts | Mapped host ports are not already in use |
| Dangling deps | depends_on references only existing services |
| Companion files | Bind-mounted config files exist on disk |
rdt lang — Change the interface language
rdt lang # interactive language picker
rdt lang list # show current and available languages
rdt lang set en # switch to English
rdt lang set ru # switch to Russian
The language preference is stored in ~/.rdt/config.json and can also be overridden per-session with the RDT_LANG environment variable:
RDT_LANG=en rdt add postgres
🤖 AI Agent Integration
RDT offers two complementary ways to integrate with AI coding assistants and autonomous agents.
Option A — MCP Server (recommended for broad ecosystem support)
The rdt-mcp server exposes all RDT functionality as typed Model Context Protocol tools. Any MCP-compatible client — Claude Desktop, Cursor, Windsurf, VS Code Copilot, Continue — can discover and call them directly without running shell commands.
Install with MCP support:
pip install "rdt-rambo[mcp]"
# or
pipx install "rdt-rambo[mcp]"
Configure your client (example for Claude Desktop — claude_desktop_config.json):
{
"mcpServers": {
"rdt": { "command": "rdt-mcp" }
}
}
The server exposes 7 tools: rdt_init, rdt_add, rdt_remove, rdt_list, rdt_doctor, rdt_check, rdt_up. Each tool accepts typed parameters and returns structured JSON — no shell output to parse.
→ Full MCP documentation: docs/en/mcp-server.md
Option B — Agentic Skill (Augment / prompt-injection based clients)
For AI assistants that work by injecting instructions into context (such as Augment Code), use the provided skill file:
This file contains precise instructions, API rules, and a catalog reference specifically formatted for LLMs. Point your agent to this file and ask it to "Initialize a Postgres + Redis backend stack using the rules in rdt-skill.md".
Which to use?
| MCP Server | Skill | |
|---|---|---|
| Works in Claude Desktop, Cursor, Windsurf | ✅ | ❌ |
| Works in Augment Code | ✅ | ✅ |
| Structured JSON responses | ✅ | ❌ |
| No shell execution needed | ✅ | ❌ |
| Zero extra dependencies | ❌ | ✅ |
🔗 Smart Mapping
When you add an admin or monitoring tool, RDT scans the existing services in your compose file and automatically suggests a connection:
| Tool | Detects & links to |
|---|---|
| pgAdmin | PostgreSQL |
| phpMyAdmin | MySQL / MariaDB |
| Mongo Express | MongoDB |
| Kafka UI | Kafka |
| Grafana | Prometheus |
In interactive mode you are asked to confirm; in --yes / script mode the first matching service is applied automatically.
📁 Generated Files
| File | Description |
|---|---|
docker-compose.yml |
Compose config with all added services |
.env |
Environment variables with actual values |
.env.example |
Safe-to-commit template with empty values |
💡 Quick Example
# Bootstrap a project with Postgres + pgAdmin
rdt init
rdt add postgres --yes --port 5432 --volume ./data/pg
rdt add pgadmin --yes
rdt doctor # validate before starting
rdt up
# Spin up a full monitoring stack (Prometheus + Grafana)
rdt init
rdt add prometheus --yes
rdt add grafana --yes
rdt check # verify compose syntax
rdt up
# Remove a service and clean up its files
rdt remove postgres --yes --clean-env --clean-artifacts
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file locker_room_tolls_rdt-2.1.1.tar.gz.
File metadata
- Download URL: locker_room_tolls_rdt-2.1.1.tar.gz
- Upload date:
- Size: 71.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db034fb8240cdc3c3cc1d2a562b7f1fa3103983fcab5422c6ce7e5e24139664a
|
|
| MD5 |
a1da9e4d35b8ee819bd2be5d413a7023
|
|
| BLAKE2b-256 |
fdc085e5aaad5f73315390692091dfaddf8d0fbb8d6684c60e4b1e485b78b345
|
File details
Details for the file locker_room_tolls_rdt-2.1.1-py3-none-any.whl.
File metadata
- Download URL: locker_room_tolls_rdt-2.1.1-py3-none-any.whl
- Upload date:
- Size: 76.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cceb58e54b7a0aff86881fb00366bba913e148bd38bb52fd520c90c87ba6f56
|
|
| MD5 |
bf4ea4ea89aa6ea287e3ed288b7c04e2
|
|
| BLAKE2b-256 |
a4b1aa46b50972a58eacede64008ec4e312a907163896c485a8794f47c7b9d0c
|