{"id":50623168,"url":"https://github.com/hiroitozzz/compose-lazy","last_synced_at":"2026-06-06T14:01:28.179Z","repository":{"id":355199278,"uuid":"1225093797","full_name":"HiroItozzz/compose-lazy","owner":"HiroItozzz","description":"A smart CLI wrapper for docker compose with interactive selection support.","archived":false,"fork":false,"pushed_at":"2026-06-01T12:25:27.000Z","size":154,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T13:25:38.278Z","etag":null,"topics":["cli","docker","docker-compose","python","utility"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HiroItozzz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-30T00:08:45.000Z","updated_at":"2026-06-01T12:17:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/HiroItozzz/compose-lazy","commit_stats":null,"previous_names":["hiroitozzz/fast-dcp","hiroitozzz/compose-lazy"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/HiroItozzz/compose-lazy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HiroItozzz%2Fcompose-lazy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HiroItozzz%2Fcompose-lazy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HiroItozzz%2Fcompose-lazy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HiroItozzz%2Fcompose-lazy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HiroItozzz","download_url":"https://codeload.github.com/HiroItozzz/compose-lazy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HiroItozzz%2Fcompose-lazy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33984824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","docker","docker-compose","python","utility"],"created_at":"2026-06-06T14:00:45.424Z","updated_at":"2026-06-06T14:01:28.171Z","avatar_url":"https://github.com/HiroItozzz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compose Lazy\n\u003e 🚀 A smart `docker compose` wrapper — interactive selection × multi-repository workspace management\n\n\n\n## Overview\nA CLI tool designed to streamline workflows for developers who frequently use `docker compose`.  \nIn addition to short aliases for common commands, it features interactive selection of compose files, profiles, and services, and a workspace system that lets you operate any registered repository from anywhere in the filesystem — no `cd` required.  \nAvailable on PyPI — install instantly with `pipx install compose-lazy` or `uv tool install compose-lazy`.\n\n[日本語版README](README_ja.md)もあります。\n\n## Highlights\n\n### Basic Commands\nInstalling compose-lazy adds three commands to your PATH automatically.\n\n| Command | Description |\n|---|---|\n| `dcpu` | Alias for `docker compose up` |\n| `dcpe` | Alias for `docker compose exec` |\n| `dcp` | Alias for other subcommands (`build`, `logs`, `stop`, etc.) |\n\nEach command supports multiple options. See the [List of Commands](#list-of-commands) for details.\n\n### Multi-Repo Workspace\nRegister named groups of repositories as a *workspace* and operate all of them at once —\n**from any directory, without `cd`**.\n\nOnce registered, compose-lazy remembers each repository's path and compose files.\nYou can launch, exec into, or check the status of any container regardless of where you currently are in the filesystem.\n\n```bash\n# Register a repository with specific compose files\n$ dcp ws register\nPlease enter a new directory path: /path/to/repo\n☑ Found 2 docker-compose files!\n    1. docker-compose.yml\n    2. docker-compose.prod.yml\nEnter your choices (e.g., 1,3,4) or 'q' to quit: 1\n\n☑ Found 1 registered workspace!\n    1. myproject\nOr '0' for a new entry.\nEnter your choice or 'q' to quit: 0\nPlease enter a new workspace name: myproject\n\n☑ Registered new path to myproject: /path/to/repo (docker-compose.yml)\n\n# Launch all repos in a workspace with their registered compose files\n$ dcp ws up\n☑ Found 1 registered workspace!\n    1. myproject\nEnter your choice or 'q' to quit: 1\n\n───── 📂 myproject ────────────────────────────────────────────────────────────────────────────────────\n▷ Executing `docker compose -f docker-compose.yml up -d` in MYPROJECT.\n\n# Exec into a service in a selected repo interactively\n$ dcp ws exec\n☑ Found 2 repositories!\n    1. /path/to/repo-a\n    2. /path/to/repo-b\nEnter your choice or 'q' to quit: 1\n\n☑ Found 2 services!\n    1. app\n    2. db\nEnter your choice or 'q' to quit: 1\nPlease enter the rest of `docker compose exec app ...`: bash\n▷ Executing `docker compose -f docker-compose.yml exec app bash` in REPO-A.\n```\n\nWorkspace configuration is stored in `~/.config/compose-lazy`.\n\n### Interactive Selection\nRunning `-f`, `-pf`, or `-s` without arguments auto-detects compose files, profiles, and services, letting you choose interactively.\n\n```bash\n$ dcpu -f\n☑ Found 2 compose files!\n    1. docker-compose.yml\n    2. docker-compose.prod.yml\nEnter your choices (e.g., 1,3,4) or 'q' to quit: 2\n▷ Executing `docker compose -f docker-compose.prod.yml up`.\n\n$ dcp re -pf   # `re`start\n☑ Found 2 profiles!\n    1. dev\n    2. prod\nEnter your choices (e.g., 1,3,4) or 'q' to quit: 1\n▷ Executing `docker compose --profile dev restart`.\n\n$ dcp l -s   # `l`ogs\n☑ Found 3 services!\n    1. app\n    2. db\n    3. frontend\nEnter your choices (e.g., 1,3,4) or 'q' to quit: 1,2\n▷ Executing `docker compose logs app db`.\n```\n\nFor `exec`/`run`, interactive selection starts automatically when no service name is given.\n\n```bash\n$ dcpe   # `e`xec\n☑ Found 3 services!\n    1. app\n    2. db\n    3. frontend\nEnter your choice or 'q' to quit: 1\n▷ Executing `docker compose exec app bash`.\n```\n\n\n## 🔧 Install compose-lazy\n### Quick Install\n```bash\n# Using pipx\npipx install compose-lazy\n# OR using uv\nuv tool install compose-lazy\n```\n### Not familiar with Python tooling?\n\nIf you don't have `pipx` or `uv` installed yet:\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows\u003c/summary\u003e\n\n```bash\npython -m pip install --user pipx\npython -m pipx ensurepath\n# Restart terminal, then:\npipx install compose-lazy\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003emacOS\u003c/summary\u003e\n\n```bash\nbrew install pipx\npipx ensurepath\npipx install compose-lazy\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eLinux (Ubuntu/Debian)\u003c/summary\u003e\n\n```bash\npip install pipx\npipx ensurepath\npipx install compose-lazy\n```\n\u003c/details\u003e\n\n## Features\n\n- **Interactive Selection**: auto-detect and interactively select compose files, profiles, and services\n- **Multi-Repo Workspace**: run docker compose commands across multiple repositories at once with `dcp ws`\n- **Location-Independent**: operate any registered repository from anywhere — no need to `cd` into the project directory\n- **Short Aliases**: `dcp u`, `dcp b`, `dcp e` — fewer keystrokes for common commands\n- **Dedicated Commands**: `dcpu` and `dcpe` for frequent up/exec workflows\n- **Cross-Platform**: Works on Windows, macOS, and Linux\n\n## FAQ\n### Why use pipx or uv tool instead of pip?\n\nBoth `pipx` and `uv tool` install CLI tools in isolated environments, so compose-lazy won't conflict with other Python packages. The commands (`dcp`, `dcpu`, `dcpe`) are available globally without activating a virtual environment. `uv tool` is the faster alternative if you already use uv.\n\n## Requirements\n\n- Python 3.11+\n- Docker with Compose V2 (`docker compose` — not `docker-compose`)\n- A `docker-compose.yml` (or `*compose*.yml/yaml`) in the current directory for interactive selection features\n\n## List of Commands\n\n\u003e **Common options** (available for all commands): `-s`, `-f FILE...`, `-pf PROFILE...`, `-p PROJECT`\n\u003e\n\u003e ⚠️ Note: `-f`, `-pf`, `-p` are passed before the subcommand in the actual docker compose syntax,  \n\u003e but in compose-lazy they are specified after the subcommand (e.g. `dcp up -f FILE`).\n\n| Bash Command                         | Executed Docker Command                                  |\n|--------------------------------------|----------------------------------------------------------|\n| dcp                                  | - (Show help)                                            |\n| dcpu [SERVICE...] [-d] [-b] [-w]     | docker compose up [SERVICE...]                           |\n| dcpe [SERVICE]                       | docker compose exec SERVICE bash                         |\n| dcpe [SERVICE] [COMMANDS...]         | docker compose exec SERVICE [COMMANDS...]                |\n| dcp up(u) [SERVICE...]               | docker compose up [SERVICE...]                           |\n| dcp up(u) -d                         | docker compose up -d                                     |\n| dcp up(u) -b                         | docker compose up --build                                |\n| dcp up(u) -w                         | docker compose up --wait                                 |\n| dcp build(b) [SERVICE...]            | docker compose build [SERVICE...]                        |\n| dcp exec(e) [SERVICE]                | docker compose exec SERVICE bash                         |\n| dcp exec(e) [SERVICE] [COMMANDS...]  | docker compose exec SERVICE [COMMANDS...]           |\n| dcp run [SERVICE]                    | docker compose run SERVICE bash                          |\n| dcp restart(re) [SERVICE...]         | docker compose restart [SERVICE...]                      |\n| dcp ps [SERVICE...] [-a] [-st STATUS]| docker compose ps [SERVICE...] [--all] [--status ...]    |\n| dcp logs(l) [SERVICE...] [-fo]       | docker compose logs [SERVICE...] [-f]                    |\n| dcp stop(s) [SERVICE...]             | docker compose stop [SERVICE...]                         |\n| dcp down [-ro]                       | docker compose down [--remove-orphans]                   |\n| dcp workspace(ws) register(reg)      | Register a new repo to a workspace interactively         |\n| dcp workspace(ws) delete(del)        | Delete a repo from a workspace interactively             |\n| dcp workspace(ws) list(li)           | List all registered workspaces                           |\n| dcp workspace(ws) up(u)              | docker compose up -d for each repo in a workspace        |\n| dcp workspace(ws) build(b)           | docker compose build for each repo in a workspace        |\n| dcp workspace(ws) exec(e)            | docker compose exec interactively for a selected repo    |\n| dcp workspace(ws) restart(re)        | docker compose restart for each repo in a workspace      |\n| dcp workspace(ws) ps                 | docker compose ps for each repo in a workspace           |\n| dcp workspace(ws) stop(s)            | docker compose stop for each repo in a workspace         |\n| dcp workspace(ws) down               | docker compose down for each repo in a workspace         |\n\nand more... see `dcp --help` for the full list of supported commands and options.\n\n## License\n\nMIT LICENSE","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiroitozzz%2Fcompose-lazy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhiroitozzz%2Fcompose-lazy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiroitozzz%2Fcompose-lazy/lists"}