diff --git a/.dockerignore b/.dockerignore index 4ae7a89ec..84200e4bd 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,3 +9,5 @@ tests !contrib/dokku-installer.py !contrib/dokku-update !contrib/bash-completion +!contrib/docker +vendor diff --git a/HISTORY.md b/HISTORY.md index dcf5aa7e4..f3a5d875f 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,103 @@ # History +## 0.16.4 + +Install/update via the bootstrap script: + +```shell +wget https://raw.githubusercontent.com/dokku/dokku/v0.16.4/bootstrap.sh +sudo DOKKU_TAG=v0.16.4 bash bootstrap.sh +``` + +### Bug Fixes + +- #3547: @josegonzalez Correct retrieval of resource values for alternative schedulers + +### New Features + +- #3546: @josegonzalez Add ability to trigger an arbitrary plugin hook + +## 0.16.3 + +Install/update via the bootstrap script: + +```shell +wget https://raw.githubusercontent.com/dokku/dokku/v0.16.3/bootstrap.sh +sudo DOKKU_TAG=v0.16.3 bash bootstrap.sh +``` + +### Bug Fixes + +- #3541: @josegonzalez Handle case where image is null on first deploy + +### New Features + +- #3543: @josegonzalez Add ability to clear global domains +- #3517: @josegonzalez SSH key updates +- #3538: @josegonzalez Silence dokku run 'errors' + +### Documentation + +- #3523: @MarcDiethelm Add an example how to specify a Dockerfile for deployment +- #3539: @josegonzalez Warn users when ufw is enabled + +## 0.16.2 + +Install/update via the bootstrap script: + +```shell +wget https://raw.githubusercontent.com/dokku/dokku/v0.16.2/bootstrap.sh +sudo DOKKU_TAG=v0.16.2 bash bootstrap.sh +``` + +### Documentation + +- #3536: @josegonzalez docs: Add documentation for nginx-pre-reload limitation +- #3535: @josegonzalez Add help output for apps:exists + +## 0.16.1 + +Install/update via the bootstrap script: + +```shell +wget https://raw.githubusercontent.com/dokku/dokku/v0.16.1/bootstrap.sh +sudo DOKKU_TAG=v0.16.1 bash bootstrap.sh +``` + +### New Features + +- #3532: @josegonzalez refactor: allow the scheduler to decide if an app is deployed + +### Documentation + +- #3530: @jhstatewide Updated info about supported Ubuntu versions + +## 0.16.0 + +Install/update via the bootstrap script: + +```shell +wget https://raw.githubusercontent.com/dokku/dokku/v0.16.0/bootstrap.sh +sudo DOKKU_TAG=v0.16.0 bash bootstrap.sh +``` + +### Bug Fixes + +- #3527: @josegonzalez Use DOKKU_IMAGE for report command + +### New Features + +- #3528: @josegonzalez feat: add support for quiet ps:scale output +- #3516: @ape-box fix nginx template with Connection header to http_connection +- #3513: @Mayeu Support installing plugins via file:// scheme + +### Documentation + +- #3525: @artofrawr add multi dockerfile plugin to plugins.md +- #3518: @renestalder Add GitLab GIT_STRATEGY for stop_preview_app +- #3506: @vanastassiou Clarify application deployment documentation +- #3512: @Mayeu Update example app in deploy tutorial + ## 0.15.5 Install/update via the bootstrap script: diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index a167f728c..a1b729960 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -29,9 +29,7 @@ ### Additional information -- Container Inspect Output (if applicable): - - 0.13.0+: `dokku inspect APP_NAME` - - <0.13.0: `docker inspect CONTAINER_ID`: WARNING, `docker inspect` will print environment variables for some commands, be sure you're not exposing any sensitive information when posting issues. You may replace these values with XXXXXXX. +- Container Inspect Output (if applicable) via `dokku inspect APP_NAME` - `cat /home/dokku//nginx.conf` (if applicable): - Link to the exact repository being deployed (if possible/applicable): - If a deploy is failing or behaving unexpectedly: @@ -40,5 +38,5 @@ - If using buildpacks, which custom buildpacks are in use - If using a `Dockerfile`, the contents of that file - If it exists, the contents of your `Procfile`. -- Output of failing Dokku commands after running `dokku trace on` - (BEWARE: `trace on` will print environment variables for some commands, be sure you're not exposing any sensitive information when posting issues. You may replace these values with XXXXXXX): +- Output of failing Dokku commands after running `dokku trace:on` + (BEWARE: `trace:on` will print environment variables for some commands, be sure you're not exposing any sensitive information when posting issues. You may replace these values with XXXXXXX): diff --git a/README.md b/README.md index c69901ab7..6597079ca 100644 --- a/README.md +++ b/README.md @@ -98,8 +98,8 @@ A fresh VM running any of the following operating systems: To install the latest stable release, run the following commands as a user who has access to `sudo`: ```shell -wget https://raw.githubusercontent.com/dokku/dokku/v0.15.5/bootstrap.sh -sudo DOKKU_TAG=v0.15.5 bash bootstrap.sh +wget https://raw.githubusercontent.com/dokku/dokku/v0.16.4/bootstrap.sh +sudo DOKKU_TAG=v0.16.4 bash bootstrap.sh ``` You can then proceed to the ip address or domain name associated with your server to complete the web-based installation. diff --git a/contrib/dokku-installer.py b/contrib/dokku-installer.py index 75715215f..ab5cc4be2 100755 --- a/contrib/dokku-installer.py +++ b/contrib/dokku-installer.py @@ -10,7 +10,7 @@ import subprocess import sys import threading -VERSION = 'v0.15.5' +VERSION = 'v0.16.4' hostname = '' try: @@ -37,6 +37,15 @@ if os.path.isfile(key_file): except subprocess.CalledProcessError: pass +ufw_display = 'block' +try: + command = "sudo ufw status" + ufw_output = subprocess.check_output(command, shell=True).strip() + if "inactive" in ufw_output: + ufw_display = 'none' +except subprocess.CalledProcessError: + ufw_display = 'none' + def check_boot(): if 'onboot' not in sys.argv: @@ -77,6 +86,7 @@ def check_boot(): class GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): content = PAGE.replace('{VERSION}', VERSION) + content = content.replace('{UFW_DISPLAY}', ufw_display) content = content.replace('{HOSTNAME}', hostname) content = content.replace('{AUTHORIZED_KEYS_LOCATION}', key_file) content = content.replace('{ADMIN_KEYS}', "\n".join(admin_keys)) @@ -294,6 +304,9 @@ PAGE = """ When enabled, Nginx will be run on port 80 and proxy requests to apps based on hostname. When disabled, a specific port will be setup for each application on first deploy, and requests to that port will be proxied to the relevant app. +
What will app URLs look like?
http://hostname:port
diff --git a/debian/control b/debian/control index c330ff244..bb942b760 100644 --- a/debian/control +++ b/debian/control @@ -1,5 +1,5 @@ Package: dokku -Version: 0.15.5 +Version: 0.16.4 Section: web Priority: optional Architecture: amd64 diff --git a/docs/advanced-usage/plugin-management.md b/docs/advanced-usage/plugin-management.md index 1abaec70f..7850baa78 100644 --- a/docs/advanced-usage/plugin-management.md +++ b/docs/advanced-usage/plugin-management.md @@ -8,6 +8,7 @@ plugin:enable # Enable a previously disabled plugin plugin:install [--core|git-url [--committish tag|branch|commit|--name custom-plugin-name]] # Optionally download git-url (with custom tag/committish) & run install trigger for active plugins (or only core ones) plugin:install-dependencies [--core] # Run install-dependencies trigger for active plugins (or only core ones) plugin:list # Print active plugins +plugin:trigger . # Trigger an arbitrary plugin hook plugin:uninstall # Uninstall a plugin (third-party only) plugin:update [name [committish]] # Optionally update named plugin from git (with custom tag/committish) & run update trigger for active plugins ``` @@ -31,31 +32,31 @@ dokku plugin ``` plugn: dev - 00_dokku-standard 0.15.5 enabled dokku core standard plugin - 20_events 0.15.5 enabled dokku core events logging plugin - apps 0.15.5 enabled dokku core apps plugin - build-env 0.15.5 enabled dokku core build-env plugin - certs 0.15.5 enabled dokku core certificate management plugin - checks 0.15.5 enabled dokku core checks plugin - common 0.15.5 enabled dokku core common plugin - config 0.15.5 enabled dokku core config plugin - docker-options 0.15.5 enabled dokku core docker-options plugin - domains 0.15.5 enabled dokku core domains plugin - enter 0.15.5 enabled dokku core enter plugin - git 0.15.5 enabled dokku core git plugin - logs 0.15.5 enabled dokku core logs plugin - named-containers 0.15.5 enabled dokku core named containers plugin - network 0.15.5 enabled dokku core network plugin - nginx-vhosts 0.15.5 enabled dokku core nginx-vhosts plugin - plugin 0.15.5 enabled dokku core plugin plugin - proxy 0.15.5 enabled dokku core proxy plugin - ps 0.15.5 enabled dokku core ps plugin - repo 0.15.5 enabled dokku core repo plugin - shell 0.15.5 enabled dokku core shell plugin - ssh-keys 0.15.5 enabled dokku core ssh-keys plugin - storage 0.15.5 enabled dokku core storage plugin - tags 0.15.5 enabled dokku core tags plugin - tar 0.15.5 enabled dokku core tar plugin + 00_dokku-standard 0.16.4 enabled dokku core standard plugin + 20_events 0.16.4 enabled dokku core events logging plugin + apps 0.16.4 enabled dokku core apps plugin + build-env 0.16.4 enabled dokku core build-env plugin + certs 0.16.4 enabled dokku core certificate management plugin + checks 0.16.4 enabled dokku core checks plugin + common 0.16.4 enabled dokku core common plugin + config 0.16.4 enabled dokku core config plugin + docker-options 0.16.4 enabled dokku core docker-options plugin + domains 0.16.4 enabled dokku core domains plugin + enter 0.16.4 enabled dokku core enter plugin + git 0.16.4 enabled dokku core git plugin + logs 0.16.4 enabled dokku core logs plugin + named-containers 0.16.4 enabled dokku core named containers plugin + network 0.16.4 enabled dokku core network plugin + nginx-vhosts 0.16.4 enabled dokku core nginx-vhosts plugin + plugin 0.16.4 enabled dokku core plugin plugin + proxy 0.16.4 enabled dokku core proxy plugin + ps 0.16.4 enabled dokku core ps plugin + repo 0.16.4 enabled dokku core repo plugin + shell 0.16.4 enabled dokku core shell plugin + ssh-keys 0.16.4 enabled dokku core ssh-keys plugin + storage 0.16.4 enabled dokku core storage plugin + tags 0.16.4 enabled dokku core tags plugin + tar 0.16.4 enabled dokku core tar plugin ``` Installing a plugin is easy as well using the `plugin:install` command. This command will also trigger the `install` pluginhook on all existing plugins. diff --git a/docs/advanced-usage/resource-management.md b/docs/advanced-usage/resource-management.md index 02227dd88..6e489d0b8 100644 --- a/docs/advanced-usage/resource-management.md +++ b/docs/advanced-usage/resource-management.md @@ -70,11 +70,31 @@ dokku resource:limit --cpu 100 --memory 100 --process-type worker node-js-app #### Displaying Resource Limits -Running the `resource:limits` command without any flags will display the currently configured app reservation. +Running the `resource:limit` command without any flags will display the currently configured default app limits. ```shell -dokku resource:limits node-js-app -=====> resource limits node-js-app information +dokku resource:limit node-js-app +``` + +``` +=====> resource limits node-js-app information [defaults] + cpu: + memory: + memory-swap: 100 + network: 100 + network-ingress: + network-egress: +``` + +This may also be combined with the `--process-type` flag to see app limits on a process-type level. Note that the displayed values are not merged with the defaults. + + +```shell +dokku resource:limit --process-type web node-js-app +``` + +``` +=====> resource limits node-js-app information (web) cpu: 100 memory: 100 memory-swap: @@ -83,64 +103,6 @@ dokku resource:limits node-js-app network-egress: ``` -#### Global Resource Limits - -By default, Dokku does not limit any resources, though these can be specified at the server level via the `--global` flag on the `resource:limit` command. - -```shell -dokku resource:limit --global --memory 200 -``` - -``` -=====> Setting default resource limits - memory: 200 -``` - -This may also be combined with the `--process-type` flag to set global limits on a process-type level: - -```shell -dokku resource:limit --global --memory 150 --process-type web node-js-app -``` - -``` -=====> Setting default resource limits (web) - memory: 150 -``` - -#### Displaying Global Resource Limits - -Running the `resource:limit` command with only the `--global` flag will display the currently configured default limits. - -```shell -dokku resource:limit --global -``` - -``` -=====> resource limits default information - cpu: - memory: 200 - memory-swap: - network: - network-ingress: - network-egress: -``` - -This may also be combined with the `--process-type` flag to see global limits on a process-type level: - -```shell -dokku resource:limit --global --process-type web -``` - -``` -=====> resource limits default information (web) - cpu: - memory-swap: - memory: 150 - network-egress: - network-ingress: - network: -``` - #### Clearing Resource Limits In cases where the values are incorrect - or there is no desire to limit resources - resource limits may be cleared using the `resource:limit-clear` command. @@ -204,11 +166,14 @@ dokku resource:reserve --cpu 100 --memory 100 --process-type worker node-js-app #### Displaying Resource Reservations -Running the `resource:reserve` command without any flags will display the currently configured app reservation. +Running the `resource:reserve` command without any flags will display the currently configured default app reservations. ```shell dokku resource:reserve node-js-app -=====> resource reservation node-js-app information +``` + +``` +=====> resource reservation node-js-app information [defaults] cpu: 100 memory: 100 memory-swap: @@ -217,64 +182,22 @@ dokku resource:reserve node-js-app network-egress: ``` -#### Global Resource Reservations - -By default, Dokku does not reserve any resources, though these can be specified at the server level via the `--global` flag on the `resource:reserve` command. +This may also be combined with the `--process-type` flag to see app reservations on a process-type level. Note that the displayed values are not merged with the defaults. ```shell -dokku resource:reserve --global --memory 200 +dokku resource:reserve --process-type web node-js-app ``` ``` -=====> Setting default resource reservation - memory: 200 -``` - -This may also be combined with the `--process-type` flag to set global reservations on a process-type level: - -```shell -dokku resource:reserve --global --memory 150 --process-type web node-js-app -``` - -``` -=====> Setting default resource reservation (web) - memory: 150 -``` - -#### Displaying Global Resource Reservations - -Running the `resource:reserve` command with only the `--global` flag will display the currently configured default reservation. - -```shell -dokku resource:reserve --global -``` - -``` -=====> resource reservation default information - cpu: - memory: 200 +=====> resource reservation node-js-app information (web) + cpu: 100 + memory: 100 memory-swap: network: network-ingress: network-egress: ``` -This may also be combined with the `--process-type` flag to see global reservations on a process-type level: - -```shell -dokku resource:reserve --global --process-type web -``` - -``` -=====> resource reservation default information (web) - cpu: - memory-swap: - memory: 150 - network-egress: - network-ingress: - network: -``` - #### Clearing Resource Reservations In cases where the values are incorrect - or there is no desire to reserve resources - resource reservations may be cleared using the `resource:reserve-clear` command. diff --git a/docs/assets/favicons/browserconfig.xml b/docs/assets/favicons/browserconfig.xml index 22799d291..459faef80 100644 --- a/docs/assets/favicons/browserconfig.xml +++ b/docs/assets/favicons/browserconfig.xml @@ -2,10 +2,10 @@ - - - - + + + + #da532c diff --git a/docs/assets/favicons/manifest.json b/docs/assets/favicons/manifest.json index b7a48167c..95d504505 100644 --- a/docs/assets/favicons/manifest.json +++ b/docs/assets/favicons/manifest.json @@ -2,37 +2,37 @@ "name": "Dokku", "icons": [ { - "src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.15.5\/docs\/assets\/favicons\/android-chrome-36x36.png", + "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.16.4\/docs\/assets\/favicons\/android-chrome-36x36.png", "sizes": "36x36", "type": "image\/png", "density": "0.75" }, { - "src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.15.5\/docs\/assets\/favicons\/android-chrome-48x48.png", + "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.16.4\/docs\/assets\/favicons\/android-chrome-48x48.png", "sizes": "48x48", "type": "image\/png", "density": "1.0" }, { - "src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.15.5\/docs\/assets\/favicons\/android-chrome-72x72.png", + "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.16.4\/docs\/assets\/favicons\/android-chrome-72x72.png", "sizes": "72x72", "type": "image\/png", "density": "1.5" }, { - "src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.15.5\/docs\/assets\/favicons\/android-chrome-96x96.png", + "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.16.4\/docs\/assets\/favicons\/android-chrome-96x96.png", "sizes": "96x96", "type": "image\/png", "density": "2.0" }, { - "src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.15.5\/docs\/assets\/favicons\/android-chrome-144x144.png", + "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.16.4\/docs\/assets\/favicons\/android-chrome-144x144.png", "sizes": "144x144", "type": "image\/png", "density": "3.0" }, { - "src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.15.5\/docs\/assets\/favicons\/android-chrome-192x192.png", + "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.16.4\/docs\/assets\/favicons\/android-chrome-192x192.png", "sizes": "192x192", "type": "image\/png", "density": "4.0" diff --git a/docs/assets/style.css b/docs/assets/style.css index 8bd0f4f3a..a5e7166f5 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -39,13 +39,13 @@ h1 { font-size: 1.6em; } .header .navbar-brand a { - background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.15.5/docs/assets/dokku.png); + background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.16.4/docs/assets/dokku.png); text-indent: 40px; } .blurb { color: #424242; background-color: #ededed; - background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.15.5/docs/assets/gplaypattern.png); + background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.16.4/docs/assets/gplaypattern.png); padding: 45px 0; text-align: center; } diff --git a/docs/assets/versions.json b/docs/assets/versions.json index 1acd76023..f0af9e36a 100644 --- a/docs/assets/versions.json +++ b/docs/assets/versions.json @@ -12,6 +12,7 @@ "0.12.13", "0.13.4", "0.14.6", - "0.15.5" + "0.15.5", + "0.16.4" ] } diff --git a/docs/community/plugins.md b/docs/community/plugins.md index 0c63f5896..a5f317f9e 100644 --- a/docs/community/plugins.md +++ b/docs/community/plugins.md @@ -57,6 +57,7 @@ The following plugins are available and provided by Dokku maintainers. Where not [Aluxian]: https://github.com/Aluxian [Aomitayo]: https://github.com/Aomitayo [apmorton]: https://github.com/apmorton +[artofrawr]: https://github.com/artofrawr [basgys]: https://github.com/basgys [Benjamin-Dobell]: https://github.com/Benjamin-Dobell [blag]: https://github.com/blag @@ -229,6 +230,7 @@ The following plugins are available and provided by Dokku maintainers. Where not | [Long Timeout](https://github.com/investtools/dokku-long-timeout-plugin) | [investtools][] | 0.4.0+ | | [Monit](https://github.com/cjblomqvist/dokku-monit) | [cjblomqvist][] | 0.3.x | | [Monorepo](https://github.com/iamale/dokku-monorepo) | [iamale][] | 0.4.0+ | +| [Multi Dockerfile](https://github.com/artofrawr/dokku-multi-dockerfile) | [artofrawr][] | 0.4.0+ | | [Node](https://github.com/ademuk/dokku-nodejs) | [ademuk][] | 0.3.x | | [Node](https://github.com/pnegahdar/dokku-node) | [pnegahdar][] | 0.3.x | | [Rollbar](https://github.com/iloveitaly/dokku-rollbar) | [iloveitaly][] | 0.5.0+ | diff --git a/docs/configuration/domains.md b/docs/configuration/domains.md index 1fc18556c..859c0013d 100644 --- a/docs/configuration/domains.md +++ b/docs/configuration/domains.md @@ -6,6 +6,7 @@ domains:add [ ...] # Add domains to app domains:add-global [ ...] # Add global domain names domains:clear # Clear all domains for app +domains:clear-global # Clear global domain names domains:disable # Disable VHOST support domains:enable # Enable VHOST support domains:remove [ ...] # Remove domains from app @@ -27,21 +28,10 @@ scheme://subdomain.domain.tld The `subdomain` is inferred from the pushed application name, while the `domain.tld` is set during initial dokku configuration. It can then be modified with `dokku domains:add-global` and `dokku domains:remove-global`. This value is used as a default TLD for all applications on a host. -If a FQDN such as `other.tld` is used as the application name, the global virtualhost will be ignored and the resulting vhost URL for that application will be `other.tld`. The exception to this rule being that if the FQDN has the same ending as the default vhost (such as `subdomain.domain.tld`), then the entire FQDN will be treated as a subdomain. The application will therefore be deployed at `subdomain.domain.tld.domain.tld`. +If an FQDN such as `dokku.org` is used as the application name, the global virtualhost will be ignored and the resulting vhost URL for that application will be `dokku.org`. -You can optionally override this in a plugin by implementing the `nginx-hostname` plugin trigger. For example, you can reverse the subdomain with the following sample `nginx-hostname` plugin trigger: +You can optionally override this in a plugin by implementing the `nginx-hostname` plugin trigger. If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed. See the [plugin trigger documentation](/docs/development/plugin-triggers.md#nginx-hostname) for more information. -```shell -#!/usr/bin/env bash -set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x - -APP="$1"; SUBDOMAIN="$2"; VHOST="$3" - -NEW_SUBDOMAIN=`echo $SUBDOMAIN | rev` -echo "$NEW_SUBDOMAIN.$VHOST" -``` - -If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed. ## Disabling VHOSTS @@ -88,17 +78,17 @@ dokku domains:report ``` =====> node-js-app domains information Domains app enabled: true - Domains app vhosts: node-js-sample.dokku.org + Domains app vhosts: node-js-app.dokku.org Domains global enabled: true Domains global vhosts: dokku.org -=====> python-sample domains information +=====> python-app domains information Domains app enabled: true - Domains app vhosts: python-sample.dokku.org + Domains app vhosts: python-app.dokku.org Domains global enabled: true Domains global vhosts: dokku.org -=====> ruby-sample domains information +=====> ruby-app domains information Domains app enabled: true - Domains app vhosts: ruby-sample.dokku.org + Domains app vhosts: ruby-app.dokku.org Domains global enabled: true Domains global vhosts: dokku.org ``` diff --git a/docs/configuration/environment-variables.md b/docs/configuration/environment-variables.md index 435372e09..c6a5cfda6 100644 --- a/docs/configuration/environment-variables.md +++ b/docs/configuration/environment-variables.md @@ -92,7 +92,7 @@ The following list config variables have special meaning and can be set in a var | `DOKKU_DETACH_CONTAINER` | none | `--detach` flag | Whether to detach a container started via `dokku run`. | | `DOKKU_QUIET_OUTPUT` | none | `--quiet` flag | Silences certain header output for `dokku` commands. | | `DOKKU_RM_CONTAINER` | none | `dokku config:set`
`--rm-container` flag
`--rm` flag | Whether to keep `dokku run` containers around or not. | -| `DOKKU_TRACE` | none | `dokku trace on`
`dokku trace false`
`--trace` flag | Turn on very verbose debugging. | +| `DOKKU_TRACE` | none | `dokku trace:on`
`dokku trace:off`
`--trace` flag | Turn on very verbose debugging. | | `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | | | `DOKKU_APP_RESTORE` | `1` | `dokku config:set`
`dokku ps:stop` | | | `DOKKU_APP_SHELL` | `/bin/bash` | `dokku config:set` | Allows users to change the default shell used by Dokku for `dokku enter` and execution of deployment tasks. | diff --git a/docs/configuration/ssl.md b/docs/configuration/ssl.md index 63cb930c7..5e44b72f3 100644 --- a/docs/configuration/ssl.md +++ b/docs/configuration/ssl.md @@ -67,17 +67,17 @@ dokku certs:report ``` ``` -=====> node-js-sample - Ssl dir: /home/dokku/node-js-sample/tls +=====> node-js-app + Ssl dir: /home/dokku/node-js-app/tls Ssl enabled: true - Ssl hostnames: *.node-js-sample.org node-js-sample.org + Ssl hostnames: *.node-js-app.org node-js-app.org Ssl expires at: Oct 5 23:59:59 2019 GMT Ssl issuer: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO RSA Domain Validation Secure Server CA Ssl starts at: Oct 5 00:00:00 2016 GMT - Ssl subject: OU=Domain Control Validated; OU=PositiveSSL Wildcard; CN=*.node-js-sample.org + Ssl subject: OU=Domain Control Validated; OU=PositiveSSL Wildcard; CN=*.node-js-app.org Ssl verified: self signed. -=====> python-sample - Ssl dir: /home/dokku/python-sample/tls +=====> python-app + Ssl dir: /home/dokku/python-app/tls Ssl enabled: false Ssl hostnames: Ssl expires at: @@ -90,12 +90,12 @@ dokku certs:report You can run the command for a specific app also. ```shell -dokku certs:report node-js-sample +dokku certs:report node-js-app ``` ``` -=====> node-js-sample ssl information - Ssl dir: /home/dokku/node-js-sample/tls +=====> node-js-app ssl information + Ssl dir: /home/dokku/node-js-app/tls Ssl enabled: true Ssl hostnames: *.dokku.org dokku.org Ssl expires at: Oct 5 23:59:59 2019 GMT @@ -108,7 +108,7 @@ dokku certs:report node-js-sample You can pass flags which will output only the value of the specific information you want. For example: ```shell -dokku certs:report node-js-sample --ssl-enabled +dokku certs:report node-js-app --ssl-enabled ``` ## HSTS Header diff --git a/docs/deployment/methods/dockerfiles.md b/docs/deployment/methods/dockerfiles.md index 4a8458fa9..3139474dd 100644 --- a/docs/deployment/methods/dockerfiles.md +++ b/docs/deployment/methods/dockerfiles.md @@ -29,6 +29,12 @@ For users that require customization in the `build` phase, you may use build arg dokku docker-options:add node-js-app build '--build-arg NODE_ENV=production' ``` +The location of the `Dockerfile` may also be specified. If the location is changed, the repository **must also** have a `Dockerfile` in the root directory in order to trigger a dockerfile-based deploy. + +```shell +dokku docker-options:add node-js-app build '--file Dockerfile.dokku' +``` + Once set, the Dockerfile usage would be as follows: ```Dockerfile diff --git a/docs/deployment/zero-downtime-deploys.md b/docs/deployment/zero-downtime-deploys.md index ebcccc9df..7ebee5124 100644 --- a/docs/deployment/zero-downtime-deploys.md +++ b/docs/deployment/zero-downtime-deploys.md @@ -81,13 +81,13 @@ dokku checks:report ``` ``` -=====> search checks information +=====> node-js-app checks information Checks disabled list: none Checks skipped list: none -=====> python-sample checks information +=====> python-app checks information Checks disabled list: none Checks skipped list: none -=====> ruby-sample checks information +=====> ruby-app checks information Checks disabled list: _all_ Checks skipped list: none ``` @@ -95,11 +95,11 @@ dokku checks:report You can run the command for a specific app also. ```shell -dokku checks:report node-js-sample +dokku checks:report node-js-app ``` ``` -=====> node-js-sample checks information +=====> node-js-app checks information Checks disabled list: none Checks skipped list: none ``` @@ -107,7 +107,7 @@ dokku checks:report node-js-sample You can pass flags which will output only the value of the specific information you want. For example: ```shell -dokku checks:report node-js-sample --checks-disabled-list +dokku checks:report node-js-app --checks-disabled-list ``` ## Customizing checks diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index 253e2921f..a7e52baf7 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -311,6 +311,24 @@ verify_app_name "$APP" # TODO ``` +### `docker-args-process-build` + +- Description: `$PROC_TYPE` may be set to magic `_all_` process type to signify global docker deploy options. +- Invoked by: `dokku ps:rebuild` +- Arguments: `$APP $IMAGE_TAG $IMAGE_SOURCE_TYPE` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +APP="$1"; IMAGE_TAG="$2"; IMAGE=$(get_app_image_name $APP $IMAGE_TAG) +verify_app_name "$APP" + +# TODO +``` + ### `docker-args-process-deploy` - Description: `$PROC_TYPE` may be set to magic `_all_` process type to signify global docker deploy options. @@ -333,7 +351,7 @@ verify_app_name "$APP" - Description: `$PROC_TYPE` may be set to magic `_all_` process type to signify global docker run options. - Invoked by: `dokku run` -- Arguments: `$APP $IMAGE_TAG $IMAGE_SOURCE_TYPE [$PROC_TYPE $CONTAINER_INDEX]` +- Arguments: `$APP $IMAGE_TAG $IMAGE_SOURCE_TYPE` - Example: ```shell @@ -586,6 +604,8 @@ echo "$NEW_SUBDOMAIN.$VHOST" ### `nginx-pre-reload` +> Warning: The arguments INTERNAL_PORT and INTERNAL_IP_ADDRESS are no longer sufficient to retrieve all app listeners. Please run `plugn trigger network-get-listeners APP` within any implementation of `nginx-pre-reload` in order to retrieve all application listeners. + - Description: Run before nginx reloads hosts - Invoked by: `dokku nginx:build-config` - Arguments: `$APP $INTERNAL_PORT $INTERNAL_IP_ADDRESS` @@ -1320,6 +1340,24 @@ DOKKU_SCHEDULER="$1"; APP="$2"; # TODO ``` +### `scheduler-is-deployed` + +> Warning: The scheduler plugin trigger apis are under development and may change +> between minor releases until the 1.0 release. + +- Description: Allows you to check if an app has been deployed +- Invoked by: `dokku ps:rebuild` +- Arguments: `$DOKKU_SCHEDULER $APP` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +DOKKU_SCHEDULER="$1"; APP="$2"; + +# TODO +``` ### `scheduler-logs` > Warning: The scheduler plugin trigger apis are under development and may change diff --git a/docs/development/release-process.md b/docs/development/release-process.md index b462d8df8..66aafc25c 100644 --- a/docs/development/release-process.md +++ b/docs/development/release-process.md @@ -29,7 +29,7 @@ The workflow looks like this: ```shell # having dokku-arch in ../dokku-arch vagrant up build-arch -# wait for "==> build-arch: ==> Finished making: dokku 0.15.5-2 (Mon Feb 22 23:20:37 CET 2016)" +# wait for "==> build-arch: ==> Finished making: dokku 0.16.4-2 (Mon Feb 22 23:20:37 CET 2016)" cd ../dokku-arch git add PKGBUILD .SRCINFO git commit -m 'Update to dokku 0.9.9' diff --git a/docs/development/testing.md b/docs/development/testing.md index 5b4d23c67..90ea77a1a 100644 --- a/docs/development/testing.md +++ b/docs/development/testing.md @@ -32,6 +32,9 @@ While we do provide official packages for a variety of platforms, as our test su # run linter & update vagrant Dokku install from local git clone make lint copyfiles + # build a specific plugin + make go-build-plugin copyplugin PLUGIN_NAME=apps + # execute all bats tests make unit-tests diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index d8fafa13e..a93b60f95 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -6,7 +6,7 @@ Dokku is an extensible, open source Platform as a Service that runs on a single To start using Dokku, you'll need a system that meets the following minimum requirements: -- A fresh installation of [Ubuntu 16.04 x64](https://www.ubuntu.com/download), [Ubuntu 14.04 x64](https://www.ubuntu.com/download), [Debian 8.2 x64](https://www.debian.org/distrib/) or [CentOS 7 x64](https://www.centos.org/download/) *(experimental)* with the FQDN set [1] +- A fresh installation of [Ubuntu x64 - Any currently supported release](https://www.ubuntu.com/download), [Debian 8.2 x64](https://www.debian.org/distrib/) or [CentOS 7 x64](https://www.centos.org/download/) *(experimental)* with the FQDN set [1] - At least 1 GB of system memory [2] You can *optionally* have a domain name pointed at the host's IP, though this is not necessary. @@ -21,8 +21,8 @@ To install the latest stable version of Dokku, you can run the following shell c ```shell # for debian systems, installs Dokku via apt-get -wget https://raw.githubusercontent.com/dokku/dokku/v0.15.5/bootstrap.sh; -sudo DOKKU_TAG=v0.15.5 bash bootstrap.sh +wget https://raw.githubusercontent.com/dokku/dokku/v0.16.4/bootstrap.sh; +sudo DOKKU_TAG=v0.16.4 bash bootstrap.sh ``` The installation process takes about 5-10 minutes, depending upon internet connection speed. diff --git a/docs/getting-started/troubleshooting.md b/docs/getting-started/troubleshooting.md index 627664275..ed8181aad 100644 --- a/docs/getting-started/troubleshooting.md +++ b/docs/getting-started/troubleshooting.md @@ -1,5 +1,38 @@ # Troubleshooting +> New as of 0.17.0 + +``` +trace:on # Enables trace mode +trace:off # Disables trace mode +``` + +## Trace Mode + +By default, Dokku will constrain the amount of output displayed for any given command run. The verbosity of output can be increased by enabling trace mode. Trace mode will turn on the `set -x` flag for bash plugins, while other plugins are free to respect the environment variable `DOKKU_TRACE` and log differently as approprate. Trace mode can be useful to see _where_ plugins are running commands that would otherwise be unexpected. + +To enable trace mode, run `trace:on` + +```shell +dokku trace:on +``` + +``` +-----> Enabling trace mode +``` + +Trace mode can be disabled with `trace:off` + +```shell +dokku trace:off +``` + +``` +-----> Disabling trace mode +``` + +## Common Problems + __Symptom:__ I deployed my app but I am getting the default nginx page. __Solution:__ @@ -41,22 +74,7 @@ __Symptom:__ I want to deploy my app, but while pushing I get the following erro __Solution:__ -The `remote rejected` error does not give enough information. Anything could have failed. - -To enable Dokku tracing, simply run the following command: - -```shell -# since 0.3.9 -dokku trace on -``` - -In versions older than 0.3.9, you can create a `/home/dokku/dokkurc` file containing the following: - -```shell -export DOKKU_TRACE=1 -``` - -This will trace all of Dokku's activity. If this does not help you, create a [gist](https://gist.github.com) containing the full log, and create an issue. +The `remote rejected` error does not give enough information. Anything could have failed. Enable trace mode and begin debugging. If this does not help you, create a [gist](https://gist.github.com) containing the full log, and create an issue. *** diff --git a/docs/home.html b/docs/home.html index c9b240b50..1834dfeae 100644 --- a/docs/home.html +++ b/docs/home.html @@ -10,30 +10,30 @@ Dokku - The smallest PaaS implementation you've ever seen - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - +