Skip to content

Plusku Rosetta Stone

stuartpb edited this page Dec 24, 2014 · 14 revisions

This is a quick reference sheet for analogous commands between Plusku, Dokku, and the Heroku Toolbelt.

Note that this is not a series of find-and-replace rules. You should understand the differences in semantics (as explained in the sections linked in the fourth column of the table) before trying to translate from one to another.

Environment

heroku

Heroku toolbelt commands that deal with apps will read the app specified by the "heroku" Git remote in the current repo: You can use the --app or -a command-line option after the command to explicitly specify the app to operate on. (You can also use --remote to specify an alternate remote to pick the app from.)

Some commands (such as fork and apps:destroy) will prompt you to confirm, which can be skipped by specifying the app name with the --confirm <app> option.

dokku

dokku commands are assumed to either be run as a logged-in user on the server, or on a client where dokku is some kind of alias for running dokku commands on the server. See pluchu or the Client page on the Plushu wiki.

Dokku does not support an --app option, so the app must be explicitly specified as a positional argument to each Dokku command that deals with apps.

The listed operations for managing plugins in Dokku are performed as root, with /var/lib/dokku/plugins as the working directory.

plushu

plushu commands are written as they would be run by a client using the pluchu script, which, like the Heroku toolbelt, specifies the app based on the remote specified ("plushu" by default).

If run on the server, or on a client with a simpler alias, the app needs to be explicitly specified for commands that interact with apps, either as the first argument (like the commands as used by Dokku), or with an --app option before the command.

Note that, with Plusku, the --app option only works before the command is specified, unlike Heroku. Also, Plusku does not come with -a as an alias for --app, although this can be added by installing the plushu-app-short-opt plugin.

Commands

heroku dokku plushu Explained
heroku plugins:install <url> git clone <url> <plugin> && dokku plugins-install plushu plugins:install <url>
heroku plugins:uninstall <plugin> rm -rf <plugin> plushu plugins:uninstall <plugin>...
heroku plugins:update [<plugin>] GIT_DIR=<plugin> git pull plushu plugins:update [<plugin>...]
heroku domains dokku url <app> plushu domains:all Domains
heroku config --shell dokku config --shell <app> plushu config
heroku config dokku config <app> plushu config:pretty
heroku fork <destapp> none plushu apps:fork <destapp>
heroku apps:destroy dokku delete <app> plushu apps:destroy
heroku apps:open xdg-open http://$(dokku url <app>) xdg-open $(plushu domains:link | head -n 1) Opening
heroku addons:list none plushu services

Explanations

Domains

heroku domains lists the app's inherent herokuapps.com domain, along with any explicitly-configured domains.

Dokku, out-of-the-box, only recognizes one domain for an app. This may be a subdomain like Heroku's *.herokuapps.com domains, or it may be the name of the app, if the app's name is a full domain (with dots in it).

The base plushu domains command lists only explicitly-added domains added with plushu domains:add, and unlike heroku domains, does not include any inherent domains (which are, in Plushu, provided by plugins other than the plushu-domains plugin). The plushu domains:all subcommand calls out to all Plushu plugins to list the domains provided for an app - a list that will, in the out-of-box Plusku configuration, begin with the app's implicit name (which, like Dokku, can be an implicit full domain).

Opening

The Heroku Toolbelt is designed to be run on the user's local development machine, and as such can launch the machine's browser directly. The Plushu and Dokku interfaces, conversely, are run remotely, and can only communicate with the local machine by outputting text. Both Plushu and Dokku have commands to output an app's location, which can then be used to launch the browser on the local machine using a command like xdg-open.

dokku url outputs an app's inherent domain (as described in the "Domains" section above). As a domain is not a proper URL (as it doesn't specify the schema/protocol), this must be prefixed with "http://" manually for xdg-open to know it should be passed to the browser.

The plushu domains:link command will list the output of plushu domains:all as "http://"-prefixed URLs. Piping this to head -n 1 will select only the first domain (as described above, this will be the app's inherent domain).

Clone this wiki locally