Dokman is a Python CLI tool for centralized Docker Compose deployment management. It provides a unified interface to manage Docker Compose deployments from any directory without navigating to individual compose file locations.
- List and monitor all Docker Compose deployments from a single location
- Start, stop, restart, and redeploy services without changing directories
- View logs, execute commands, and inspect container health
- Manage images, volumes, and networks across projects
- Track projects with a local registry for persistent management
- Rich terminal output with table and JSON formatting options
- Python 3.13 or higher
- Docker Engine with Docker Compose v2
- uv (recommended for installation) or pip
The easiest way to install dokman is using the installation script:
curl -fsSL https://raw.githubusercontent.com/Alg0rix/dokman/main/install.sh | bashThis will automatically install uv if needed and set up dokman.
To upgrade to the latest version, run the install script again or use:
uv tool upgrade dokmanIf you already have uv installed:
uv tool install --python 3.13 dokman
# Verify installation
dokman --helppip install dokman# Clone the repository
git clone https://github.com/Alg0rix/dokman.git
cd dokman
# Install dependencies
uv sync
# Run dokman
uv run dokman --helpRegister an existing Docker Compose project for tracking:
# Register from compose file path
dokman register /path/to/docker-compose.yml
# Register with custom name
dokman register /path/to/project --name myappStart a project directly (auto-registers if needed):
# Start from current directory
dokman up
# Start from specific path
dokman up -f /path/to/project
# Start with custom name
dokman up -f ./myproject -n myapp# List registered projects
dokman list
# Include unregistered running projects
dokman list --all
# Output as JSON
dokman list --format json# View project details
dokman info myproject
# Start/stop/restart services
dokman start myproject
dokman stop myproject
dokman restart myproject
# Restart specific service
dokman restart myproject --service web
# Stop and remove containers
dokman down myproject
# Remove with volumes
dokman down myproject --volumes# View all logs
dokman logs myproject
# View specific service logs
dokman logs myproject --service web
# Follow logs in real-time
dokman logs myproject --follow
# Show last N lines
dokman logs myproject --tail 100# Run command in container
dokman exec myproject web ls -la
# Interactive shell
dokman exec myproject web sh --interactive| Command | Description |
|---|---|
list |
List all Docker Compose projects |
info <project> |
Display detailed project information |
register <path> |
Register a project for tracking |
unregister <project> |
Remove project from tracking |
up |
Start a project (auto-registers if needed) |
| Command | Description |
|---|---|
start <project> |
Start services in a project |
stop <project> |
Stop services in a project |
restart <project> |
Restart services in a project |
down <project> |
Stop and remove containers/networks |
redeploy <project> |
Redeploy with updated images |
scale <project> <service> <replicas> |
Scale a service |
| Command | Description |
|---|---|
logs <project> |
Display service logs |
exec <project> <service> <command> |
Execute command in container |
health <project> |
Display health check status |
events <project> |
Stream Docker events |
config <project> |
Show resolved compose configuration |
env <project> |
Display environment variables |
| Command | Description |
|---|---|
images [project] |
List Docker images |
volumes [project] |
List Docker volumes |
networks [project] |
List Docker networks |
stats <project> |
Display resource usage statistics |
pull <project> |
Pull latest images |
build <project> |
Build images from compose file |
--format, -f: Output format (tableorjson)--help: Show command help
--service, -s: Target specific service--all, -a: Include all items (registered and unregistered)--volumes, -v: Include volumes in operation
--follow, -f: Stream logs in real-time--tail, -n: Number of lines to show
--no-pull: Skip pulling latest images--strict: Fail if any image pull fails
--no-cache: Build without using cache
--no-stream: Display single snapshot instead of streaming
--show-secrets: Show sensitive values (masked by default)--export: Output in shell export format
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Project not found |
| 3 | Service not found |
| 4 | Docker connection error |
| 5 | Compose file error |
| 6 | Operation failed |
Dokman stores its project registry at:
~/.config/dokman/projects.json
This file tracks registered projects and their compose file locations.
Dokman follows a layered architecture:
CLI Layer (Typer) -> Service Layer -> Docker Client Layer -> Storage Layer
- CLI Layer: Typer-based commands with Rich output formatting
- Service Layer: Business logic (ProjectManager, ServiceManager, ResourceManager)
- Docker Client Layer: Wraps Docker SDK and compose commands
- Storage Layer: JSON-based project registry
# Install with dev dependencies
uv sync --extra dev# Run all tests
uv run pytest
# Run specific test file
uv run pytest tests/properties/test_models_properties.py
# Run with verbose output
uv run pytest -v# Lint code
uvx ruff check
# Type check
uvx ty checkdokman/
cli/ # CLI commands and output formatting
clients/ # Docker SDK and compose command wrappers
models/ # Data models (Project, Service, etc.)
services/ # Business logic layer
storage/ # Project registry persistence
tests/
properties/ # Property-based tests (Hypothesis)
- typer: CLI framework
- docker: Docker SDK for Python
- rich: Terminal output formatting
- pytest: Testing framework
- hypothesis: Property-based testing
- pytest-mock: Mocking support
MIT License
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request