{"action":"created","issue":{"url":"https://api.github.com/repos/dockerland/dockmaster/issues/1","repository_url":"https://api.github.com/repos/dockerland/dockmaster","labels_url":"https://api.github.com/repos/dockerland/dockmaster/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/dockerland/dockmaster/issues/1/comments","events_url":"https://api.github.com/repos/dockerland/dockmaster/issues/1/events","html_url":"https://github.com/dockerland/dockmaster/issues/1","id":189806845,"number":1,"title":"define discovery of dockmaster.yml files","user":{"login":"briceburg","id":490144,"avatar_url":"https://avatars.githubusercontent.com/u/490144?v=3","gravatar_id":"","url":"https://api.github.com/users/briceburg","html_url":"https://github.com/briceburg","followers_url":"https://api.github.com/users/briceburg/followers","following_url":"https://api.github.com/users/briceburg/following{/other_user}","gists_url":"https://api.github.com/users/briceburg/gists{/gist_id}","starred_url":"https://api.github.com/users/briceburg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briceburg/subscriptions","organizations_url":"https://api.github.com/users/briceburg/orgs","repos_url":"https://api.github.com/users/briceburg/repos","events_url":"https://api.github.com/users/briceburg/events{/privacy}","received_events_url":"https://api.github.com/users/briceburg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"Skrath","id":150869,"avatar_url":"https://avatars.githubusercontent.com/u/150869?v=3","gravatar_id":"","url":"https://api.github.com/users/Skrath","html_url":"https://github.com/Skrath","followers_url":"https://api.github.com/users/Skrath/followers","following_url":"https://api.github.com/users/Skrath/following{/other_user}","gists_url":"https://api.github.com/users/Skrath/gists{/gist_id}","starred_url":"https://api.github.com/users/Skrath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Skrath/subscriptions","organizations_url":"https://api.github.com/users/Skrath/orgs","repos_url":"https://api.github.com/users/Skrath/repos","events_url":"https://api.github.com/users/Skrath/events{/privacy}","received_events_url":"https://api.github.com/users/Skrath/received_events","type":"User","site_admin":false},"assignees":[{"login":"Skrath","id":150869,"avatar_url":"https://avatars.githubusercontent.com/u/150869?v=3","gravatar_id":"","url":"https://api.github.com/users/Skrath","html_url":"https://github.com/Skrath","followers_url":"https://api.github.com/users/Skrath/followers","following_url":"https://api.github.com/users/Skrath/following{/other_user}","gists_url":"https://api.github.com/users/Skrath/gists{/gist_id}","starred_url":"https://api.github.com/users/Skrath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Skrath/subscriptions","organizations_url":"https://api.github.com/users/Skrath/orgs","repos_url":"https://api.github.com/users/Skrath/repos","events_url":"https://api.github.com/users/Skrath/events{/privacy}","received_events_url":"https://api.github.com/users/Skrath/received_events","type":"User","site_admin":false},{"login":"briceburg","id":490144,"avatar_url":"https://avatars.githubusercontent.com/u/490144?v=3","gravatar_id":"","url":"https://api.github.com/users/briceburg","html_url":"https://github.com/briceburg","followers_url":"https://api.github.com/users/briceburg/followers","following_url":"https://api.github.com/users/briceburg/following{/other_user}","gists_url":"https://api.github.com/users/briceburg/gists{/gist_id}","starred_url":"https://api.github.com/users/briceburg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briceburg/subscriptions","organizations_url":"https://api.github.com/users/briceburg/orgs","repos_url":"https://api.github.com/users/briceburg/repos","events_url":"https://api.github.com/users/briceburg/events{/privacy}","received_events_url":"https://api.github.com/users/briceburg/received_events","type":"User","site_admin":false},{"login":"twslade","id":1391619,"avatar_url":"https://avatars.githubusercontent.com/u/1391619?v=3","gravatar_id":"","url":"https://api.github.com/users/twslade","html_url":"https://github.com/twslade","followers_url":"https://api.github.com/users/twslade/followers","following_url":"https://api.github.com/users/twslade/following{/other_user}","gists_url":"https://api.github.com/users/twslade/gists{/gist_id}","starred_url":"https://api.github.com/users/twslade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twslade/subscriptions","organizations_url":"https://api.github.com/users/twslade/orgs","repos_url":"https://api.github.com/users/twslade/repos","events_url":"https://api.github.com/users/twslade/events{/privacy}","received_events_url":"https://api.github.com/users/twslade/received_events","type":"User","site_admin":false},{"login":"superterran","id":2163715,"avatar_url":"https://avatars.githubusercontent.com/u/2163715?v=3","gravatar_id":"","url":"https://api.github.com/users/superterran","html_url":"https://github.com/superterran","followers_url":"https://api.github.com/users/superterran/followers","following_url":"https://api.github.com/users/superterran/following{/other_user}","gists_url":"https://api.github.com/users/superterran/gists{/gist_id}","starred_url":"https://api.github.com/users/superterran/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/superterran/subscriptions","organizations_url":"https://api.github.com/users/superterran/orgs","repos_url":"https://api.github.com/users/superterran/repos","events_url":"https://api.github.com/users/superterran/events{/privacy}","received_events_url":"https://api.github.com/users/superterran/received_events","type":"User","site_admin":false},{"login":"wrsenn","id":6423750,"avatar_url":"https://avatars.githubusercontent.com/u/6423750?v=3","gravatar_id":"","url":"https://api.github.com/users/wrsenn","html_url":"https://github.com/wrsenn","followers_url":"https://api.github.com/users/wrsenn/followers","following_url":"https://api.github.com/users/wrsenn/following{/other_user}","gists_url":"https://api.github.com/users/wrsenn/gists{/gist_id}","starred_url":"https://api.github.com/users/wrsenn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wrsenn/subscriptions","organizations_url":"https://api.github.com/users/wrsenn/orgs","repos_url":"https://api.github.com/users/wrsenn/repos","events_url":"https://api.github.com/users/wrsenn/events{/privacy}","received_events_url":"https://api.github.com/users/wrsenn/received_events","type":"User","site_admin":false},{"login":"chrispotter","id":7069752,"avatar_url":"https://avatars.githubusercontent.com/u/7069752?v=3","gravatar_id":"","url":"https://api.github.com/users/chrispotter","html_url":"https://github.com/chrispotter","followers_url":"https://api.github.com/users/chrispotter/followers","following_url":"https://api.github.com/users/chrispotter/following{/other_user}","gists_url":"https://api.github.com/users/chrispotter/gists{/gist_id}","starred_url":"https://api.github.com/users/chrispotter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrispotter/subscriptions","organizations_url":"https://api.github.com/users/chrispotter/orgs","repos_url":"https://api.github.com/users/chrispotter/repos","events_url":"https://api.github.com/users/chrispotter/events{/privacy}","received_events_url":"https://api.github.com/users/chrispotter/received_events","type":"User","site_admin":false},{"login":"SamTay","id":7246591,"avatar_url":"https://avatars.githubusercontent.com/u/7246591?v=3","gravatar_id":"","url":"https://api.github.com/users/SamTay","html_url":"https://github.com/SamTay","followers_url":"https://api.github.com/users/SamTay/followers","following_url":"https://api.github.com/users/SamTay/following{/other_user}","gists_url":"https://api.github.com/users/SamTay/gists{/gist_id}","starred_url":"https://api.github.com/users/SamTay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SamTay/subscriptions","organizations_url":"https://api.github.com/users/SamTay/orgs","repos_url":"https://api.github.com/users/SamTay/repos","events_url":"https://api.github.com/users/SamTay/events{/privacy}","received_events_url":"https://api.github.com/users/SamTay/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/dockerland/dockmaster/milestones/1","html_url":"https://github.com/dockerland/dockmaster/milestones/current","labels_url":"https://api.github.com/repos/dockerland/dockmaster/milestones/1/labels","id":2140254,"number":1,"title":"current","description":null,"creator":{"login":"briceburg","id":490144,"avatar_url":"https://avatars.githubusercontent.com/u/490144?v=3","gravatar_id":"","url":"https://api.github.com/users/briceburg","html_url":"https://github.com/briceburg","followers_url":"https://api.github.com/users/briceburg/followers","following_url":"https://api.github.com/users/briceburg/following{/other_user}","gists_url":"https://api.github.com/users/briceburg/gists{/gist_id}","starred_url":"https://api.github.com/users/briceburg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briceburg/subscriptions","organizations_url":"https://api.github.com/users/briceburg/orgs","repos_url":"https://api.github.com/users/briceburg/repos","events_url":"https://api.github.com/users/briceburg/events{/privacy}","received_events_url":"https://api.github.com/users/briceburg/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2016-11-16T19:36:06Z","updated_at":"2016-11-16T19:37:11Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2016-11-16T18:54:15Z","updated_at":"2016-11-17T20:21:07Z","closed_at":null,"body":"Dockmaster is about saving time. Lets allow it to run from anywhere -- no matter the directory you are in -- and be able to quickly target and interact with your compositions/services. \r\n\r\n## proposal ~~1~~ 3 \r\n\r\n### dockmaster.yml lookup order\r\n\r\nThe `dm` command interacts with a [docker-compose](https://github.com/docker/compose/) composition through a dockmaster.yml \"composition configuration file\". This file is _unique_ per composition, and its details are described in #2. This proposal covers the process of locating dockmaster.yml.\r\n\r\n* Assume the \"global configuration file\" defines a list of `composition_paths`  (absolute paths to directories containing subdirectories of compositions), e.g.\r\n\r\n  ```\r\n  /etc/dockmaster/compostions\r\n  |-- accounts.dockerland.org\r\n  |   |-- docker-compose.j2\r\n  |   `-- dockmaster.yml\r\n  |-- machine\r\n  |   |-- docker-compose.yml\r\n  |   |-- Dockerfile-nginx-proxy\r\n  |   |-- dockmaster.yml\r\n  |   `-- nginx-proxy.conf\r\n  `-- registry.dockerland.org\r\n      |-- docker-compose.j2\r\n      `-- dockmaster.yml\r\n  ```\r\n\r\n* Assume the `dm` command takes a path as it's first argument, e.g.\r\n  ```\r\n  dm <path> <command> [args]\r\n  dm accounts.dockerland.org up\r\n  dm . up\r\n  dm ~/compositions/accounts.dockerland.org\r\n  dm /path/to/accounts.dockerland.org/compostion/\r\n  ```\r\n\r\nLookup is performed in the following order\r\n\r\n* IF `path` equals \".\";\r\n  * try  `./dockmaster.yml`\r\n  * fail\r\n* ELSE\r\n  * try `path/dockmaster.yml`\r\n  * IF `path` is relative\r\n    * FOR EACH `compostion_path` in `compostion_paths` (from global configuration file)\r\n      * try `compostion_path/path/dockmaster.yml`\r\n   * fail\r\n  ```\r\n\r\n#### Example usage\r\n\r\n```sh\r\n$ dm registry.dockerland.org ps\r\nConnecting to node-c...\r\n             Name                           Command               State            Ports          \r\n-------------------------------------------------------------------------------------------------\r\nregistrydockerlandorg_registry_1   /bin/registry /etc/docker/ ...   Up      0.0.0.0:32769->5000/tcp\r\n```\r\n\r\n#### Notes\r\n\r\n* having to specify `dm . <command>` for current directory is a little awkward, although pure. \r\n* we intend to provide autocompletion for compostions, so you can type `dm re<tab>`  and it will complete `dm register.dockerland.org`\r\n\r\n\r\n## proposal ~~2~~ 4\r\n\r\n### dmc command for managing configuration\r\n\r\nLets introduce a `dmc` command for configuration management. This command can be used to write to the global configuration (such as managing compostion paths), as well as a the dockmaster.yml compostion configuration file (such as assigning target(s) or registering hooks).\r\n\r\nWe can cover implementation as a separate issue (#3). \r\n"},"comment":{"url":"https://api.github.com/repos/dockerland/dockmaster/issues/comments/261358381","html_url":"https://github.com/dockerland/dockmaster/issues/1#issuecomment-261358381","issue_url":"https://api.github.com/repos/dockerland/dockmaster/issues/1","id":261358381,"user":{"login":"SamTay","id":7246591,"avatar_url":"https://avatars.githubusercontent.com/u/7246591?v=3","gravatar_id":"","url":"https://api.github.com/users/SamTay","html_url":"https://github.com/SamTay","followers_url":"https://api.github.com/users/SamTay/followers","following_url":"https://api.github.com/users/SamTay/following{/other_user}","gists_url":"https://api.github.com/users/SamTay/gists{/gist_id}","starred_url":"https://api.github.com/users/SamTay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SamTay/subscriptions","organizations_url":"https://api.github.com/users/SamTay/orgs","repos_url":"https://api.github.com/users/SamTay/repos","events_url":"https://api.github.com/users/SamTay/events{/privacy}","received_events_url":"https://api.github.com/users/SamTay/received_events","type":"User","site_admin":false},"created_at":"2016-11-17T20:21:07Z","updated_at":"2016-11-17T20:21:07Z","body":"I'm alright with it.. I think it's a bit weird to split all configuration commands into `dmc`, but I see how that trickles down from avoiding options to `dm` command and trying to keep it simple as possible, always `dm <path> <command>`.. I'll continue to think about it but I'm ok with it for now :+1: "}}
{"actor":{"display_login":"SamTay"}}