{"id":23742919,"url":"https://github.com/nwesterhausen/total-compose-cli","last_synced_at":"2026-04-12T09:46:59.466Z","repository":{"id":47235617,"uuid":"401353564","full_name":"nwesterhausen/total-compose-cli","owner":"nwesterhausen","description":"Bash cli script to simplify running docker-compose on multiple docker-compose files, spread across many directories.","archived":false,"fork":false,"pushed_at":"2024-06-02T17:47:40.000Z","size":83,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-17T07:07:49.199Z","etag":null,"topics":["bash","bash-script","cli","docker","docker-compose"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/nwesterhausen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2021-08-30T13:28:21.000Z","updated_at":"2023-02-16T20:36:15.000Z","dependencies_parsed_at":"2022-09-17T06:52:05.064Z","dependency_job_id":null,"html_url":"https://github.com/nwesterhausen/total-compose-cli","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nwesterhausen%2Ftotal-compose-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nwesterhausen%2Ftotal-compose-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nwesterhausen%2Ftotal-compose-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nwesterhausen%2Ftotal-compose-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nwesterhausen","download_url":"https://codeload.github.com/nwesterhausen/total-compose-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239889688,"owners_count":19713824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bash","bash-script","cli","docker","docker-compose"],"created_at":"2024-12-31T11:48:54.471Z","updated_at":"2026-03-05T11:30:19.640Z","avatar_url":"https://github.com/nwesterhausen.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# total-compose-cli\n\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nwesterhausen/total-compose-cli?style=plastic)\n\ntotal-compose is a docker-compose helper which lets you specify docker-compose.yml files using\nkeywords (names) and do so from the comfort of $HOME regardless of where the compose file\nis at. \n\ntotal-compose started as a hardcoded shell script but this is the attempt to make it generic and\nusable by other people (and by myself on other machines). You can run the install script or\nmanually install. See the [installation](#installation) section for details on what happens during\nthe installation.\n\nTo read its config, total-compose will use [`yq`](http://mikefarah.github.io/yq/)\nto parse and understand what commands you give it. Because docker will already be present, \nby default, `yq` is invoked using `docker run --rm -v \"${$CONFDIR}\":/workdir mikefarah/yq`.\n`$CONFDIR` is the directory container the config file, so by default is `~/.total-compose`.\nThe way total-compose calls `yq` can be modified by editing the `$YQ` variable in the \n`total-compose` file.\n\n## Installation\n\nRun the `install.sh` script. Here's what it does:\n\n1. checks that `docker`, `docker-compose`, and `git` are installed\n\n\tNote: These must be set up ahead of time.\n\t[docker-ce](https://docs.docker.com/engine/install/) \n\t[docker-compose](https://docs.docker.com/compose/install/)\n\n2. clones this repository to `~/.total-compose`\n3. links the `total-compose.sh` script to a discovered bin folder in either `~/bin` or `~/.local/bin`\n\n\tNote: If neither of those directories exist, either create one of them and add \n\tit to your $PATH in .profile or manually link the total-compose.sh into a location\n\tyou can call it from.\n\n## Additional Requirements\n\nRunning total-compose requires your user be a member of the docker group, otherwise\nyou will need to run total-compose as a superuser or other user with permissions on\nthe docker daemon.\n\n## Usage\n\n```\ntotal-compose v1.0.0\nUsage: total-compose [options] [servicegroup] [action]\n\nValid option flags:\n  -c, --config=   Path of config file if not using ~/.total-compose/config.yaml\n  --no-color      Disable color output\n\nTo see valid actions, run 'docker-compose help'.\n\nservicegroup must not match a docker-compose subcommand and must match one of the\ndefined names in the config file. If it doesn't match a name in the config file,\nit becomes part of the 'action' parameter.\n\ntotal-compose simplifies calling docker-compose on the compose files specified in\nthe config file. Any command you can perform with docker-compose can be performed\nwith this tool. This tool calls 'docker-compose -f FILE_LOCATION [action]' depending\non which service name you provided. If no action is provided, this will check\ncurrent status for the services in the docker-compose file. (docker-compose ps)\n\nConfig used: config.yaml in /home/nwest/.total-compose\n\nThe following service stacks were read from the configuration file:\nwho     ~/whoami/docker-compose.yml\n        Simple whoami service which sits and answers with whoami.\n```\n\n### Example\n\nI have a [repository](https://github.com/nwesterhausen/compose-repo/tree/main) of compose files\nand the config file I used with total-compose to manage composing in bulk.\n\n```yaml\n# ~/.total-compose/config.yaml\nservices:\n  - name: who\n    location: ~/whoami/docker-compose.yml\n    description: Simple whoami service which sits and answers with whoami.\nassume-yes: false\n```\n\n```\nnwest@ubuntu-server:~$ total-compose who config\nCONFIG: Using config.yaml in /home/nwest/.total-compose.\nwho: /home/nwest/whoami/docker-compose.yml\nservices:\n  whoami:\n    image: traefik/whoami\nversion: '3.9'\n\nnwest@ubuntu-server:~$ total-compose\nCONFIG: Using config.yaml in /home/nwest/.total-compose.\nNo command specified, by default 'ps' will be passed to docker-compose\n is not defined in config, passing it through to docker-compose\nConfirm that you want to apply the action to all stacks (y/n)? y\nWill execute same docker-compose command for all service stacks.\nPerforming this command on all services:\n    docker-compose ps\nwho: /home/nwest/whoami/docker-compose.yml\n     Name         Command   State   Ports\n------------------------------------------\nwhoami_whoami_1   /whoami   Up      80/tcp\n\nnwest@ubuntu-server:~$ total-compose who down\nCONFIG: Using config.yaml in /home/nwest/.total-compose.\nwho: /home/nwest/whoami/docker-compose.yml\nStopping whoami_whoami_1 ... done\nRemoving whoami_whoami_1 ... done\nRemoving network whoami_default\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnwesterhausen%2Ftotal-compose-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnwesterhausen%2Ftotal-compose-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnwesterhausen%2Ftotal-compose-cli/lists"}