Compare commits

...

574 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
98fa428386 Release 0.10.3
# History

## 0.10.3

### Bug Fixes

- #2832: @josegonzalez fix: use python2.7 binary instead of python2 binary
2017-07-09 14:12:16 -06:00
Jose Diaz-Gonzalez
a145333fbd Merge pull request #2832 from dokku/josegonzalez-python27
fix: use python2.7 binary instead of python2 binary
2017-07-09 14:11:32 -06:00
Jose Diaz-Gonzalez
72491257c3 fix: use python2.7 binary instead of python2 binary
On hosts where python3 is the system default python env and there is a minimal server installation, Dokku will silently fail to return the values of json keys.
2017-07-08 17:54:12 -06:00
Jose Diaz-Gonzalez
b009da2710 Release 0.10.2
# History

## 0.10.2

### New Features

- #2827: @josegonzalez feat: allow installation of openresty instead of nginx
2017-07-03 03:40:46 -06:00
Jose Diaz-Gonzalez
def60a510c Merge pull request #2827 from dokku/openresty-support
feat: allow installation of openresty instead of nginx
2017-07-03 03:39:41 -06:00
Jose Diaz-Gonzalez
4ac68cfbaa feat: allow installation of openresty instead of nginx 2017-07-03 03:39:23 -06:00
Jose Diaz-Gonzalez
433a35fac2 Release 0.10.1
# History

## 0.10.1

### Bug Fixes

- #2826: @josegonzalez Fix HISTORY.md generator
2017-07-03 03:09:12 -06:00
Jose Diaz-Gonzalez
6c9746c55e Merge pull request #2826 from dokku/fix-release-notes
Fix HISTORY.md generator
2017-07-03 03:08:55 -06:00
Jose Diaz-Gonzalez
efa99d02b2 fix: set history headers properly
[ci skip]
2017-07-03 03:07:22 -06:00
Jose Diaz-Gonzalez
5269975753 fix: correct headers on release notes 2017-07-03 03:07:02 -06:00
Jose Diaz-Gonzalez
b1ac7ac991 Release 0.10.0
# History

## 0.10.0

### Bug Fixes

- #2820: @josegonzalez Require netcat in debian packaging
- #2774: @fruitl00p Include docker-options in the default `dokku`
- #2778: @zarqman Fix /etc/logrotate.d/dokku on debian
- #2747: @ebeigarts Update herokuish base image on updates using --pull
- #2739: @josegonzalez Use listener_port in nginx.conf.sigil
- #2735: @josegonzalez Ensure we can call ps:report without specifying an application
- #2733: @josegonzalez Add support for new docker package names
- #2730: @weyert Ignore the cache directory when cloning an app
- #2723: @weyert Call non-deprecated plugin:list method

### New Features

- #2803: @iSDP Adding related articles on the Docker Image Deployment page
- #2798: @znz Update CURL_CONNECT_TIMEOUT in docs
- #2795: @josegonzalez docs: Add documentation around adding build-time configuration variables
- #2791: @yazinsai Correct typo in persistent storage docs
- #2789: @h4ckninja Subject-verb agreement
- #2790: @flyinggrizzly Add entry for insecure connection issue in Rails
- #2788: @josegonzalez Flesh out uninstallation documentation
- #2784: @josegonzalez Document special dokku environment variables
- #2773: @znz Update year in footer [ci skip]
- #2768: @znz Ubuntu 12.04 is EOL
- #2769: @lucianopf Fix SlackButton for mobile devices.
- #2763: @ZiadSalah Update vagrant documentation for windows users
- #2764: @joshmanders Create PULL_REQUEST_TEMPLATE.md
- #2758: @AxelTheGerman Update doc location for dokku-git-rev community plugin
- #2757: @nodanaonlyzuul Fix typo from "To use a dockerfiles" to "To use a dockerfile" singular
- #2753: @abrkn Use short-hand method for shutting down all applications in upgrade docs
- #2746: @josegonzalez Add redirect for installation to advanced install docs
- #2738: @josegonzalez Add missing `NO_SSL_SERVER_NAME` to example template
- #2457: @john-doherty Update Digitalocean installation instructions
- #2725: @timaschew Fix typo in application management docs
- #2719: @joshco Clarify that nginx.conf.sigil must be committed to repository
- #2715: @josegonzalez Use urls that are linkable on github

### Documentation

- #2822: @josegonzalez refactor: allow skipping cleanup on a per-application basis
- #2754: @fzerorubigd Add support for set DOKKU_IMAGE per app
- #2815: @markstory Add stickler-ci configuration.
- #2809: @oliw Remove aufs step from Makefile
- #2785: @josegonzalez Add a release-plugin binary
- #2777: @stokarenko Turn on ps-post-stop hook.
- #2781: @fruitl00p Adds docker.io support
- #2766: @josegonzalez Upgrade to herokuish 0.3.29
- #2765: @josegonzalez Install python3-software-properties as an alternative to python-software-properties
- #2642: @chiedo Added better default nginx error pages
- #2678: @callahad Default to secure PCI-compliant SSL setup
- #2734: @josegonzalez Allow quieter report output
2017-07-02 22:08:13 -06:00
Jose Diaz-Gonzalez
4f6e714a9d Merge pull request #2822 from dokku/refactor-cleanup
refactor: allow skipping cleanup on a per-application basis
2017-07-02 21:22:54 -06:00
Jose Diaz-Gonzalez
85f7f22520 fix: add missing space 2017-07-02 17:20:04 -06:00
Jose Diaz-Gonzalez
79f8c1581c refactor: allow skipping cleanup on a per-application basis
Also move all cleanup-related logic into docker_cleanup method
2017-07-02 16:54:26 -06:00
Jose Diaz-Gonzalez
191ae25f63 Merge pull request #2754 from fzerorubigd/fzerorubigd-patch-1
add support for set DOKKU_IMAGE per app
2017-07-02 16:11:58 -06:00
Jose Diaz-Gonzalez
484f3f8299 Merge pull request #2820 from dokku/josegonzalez-patch-1
fix: require netcat in debian packaging
2017-06-30 21:53:11 -06:00
Jose Diaz-Gonzalez
da748b1170 fix: require netcat in debian packaging
Closes #2818

[ci skip]
2017-06-30 21:52:55 -06:00
Jose Diaz-Gonzalez
5835dbd9a4 Merge pull request #2815 from markstory/add-stickler
Add stickler-ci configuration.
2017-06-28 15:31:46 -06:00
Mark Story
f49405d4cf Add stickler-ci configuration.
In talking with @josegonzalez, stickler-ci.com helps reduce the amount of
time maintainers spend reviewing code by automatically giving style
feedback as pull request comments.

I've added linters for shell scripts and go files based on the linting
I could find in the existing make files.
2017-06-28 00:12:09 -04:00
Jose Diaz-Gonzalez
e6103cc49b Merge pull request #2809 from oliw/oliverw/remove-aufs-2
Remove aufs step from Makefile
2017-06-20 15:52:17 -06:00
oli
40001b7287 Remove aufs step from Makefile in favor of aufs provisioning provided by
official docker install script
2017-06-19 21:42:40 -07:00
Jose Diaz-Gonzalez
0e08134a7c Merge pull request #2803 from iSDP/master
Adding related articles on the Docker Image Deployment page
2017-06-10 18:26:58 -04:00
Jose Diaz-Gonzalez
1c6eacd756 docs: re-add new sections
[ci skip]
2017-06-09 14:38:14 -04:00
Jose Diaz-Gonzalez
bec6c6bd66 docs: fix header
[ci skip]
2017-06-09 14:37:26 -04:00
Rémon S
f459745402 Update images.md
Fixing Menu <--> Title mismatch.
2017-06-09 20:20:28 +02:00
Rémon S
65ebd90903 Create images.md
Fixing a little styling error (forgot to add list)
2017-06-09 20:17:44 +02:00
Rémon S
ea30cd8cd2 Create images.md
Added some related articles to make the transition from Docker to Dokku easier to understand.
2017-06-09 20:17:12 +02:00
Jose Diaz-Gonzalez
e6a1a27516 Merge pull request #2798 from znz/update-example-of-timeout
Update CURL_CONNECT_TIMEOUT in docs
2017-06-06 09:25:55 -06:00
Kazuhiro NISHIYAMA
79fea59713 Update CURL_CONNECT_TIMEOUT in docs
Current default of CURL_CONNECT_TIMEOUT is 90.
So 30 is shorter than default.
[ci skip]
2017-06-07 00:18:02 +09:00
Jose Diaz-Gonzalez
e0b03aafe8 Merge pull request #2795 from dokku/josegonzalez-patch-1
docs: Add documentation around adding build-time configuration variables
2017-05-31 17:58:10 -06:00
Jose Diaz-Gonzalez
5b782c1ff4 docs: Add documentation around adding build-time configuration variables
Refs #2776
Closes #1860

[ci skip]
2017-05-31 17:57:47 -06:00
Jose Diaz-Gonzalez
fd0a6905dd Merge pull request #2791 from yazinsai/patch-1
fix typo
2017-05-30 12:01:42 -06:00
Yazin
1e18299364 fix typo 2017-05-30 13:38:27 +01:00
Jose Diaz-Gonzalez
b937f57a72 Merge pull request #2789 from h4ckninja/patch-1
Subject-verb agreement
2017-05-29 15:07:55 -06:00
Jose Diaz-Gonzalez
3fe65fd3fb Merge pull request #2790 from flyinggrizzly/patch-1
Add entry for insecure connection issue in Rails
2017-05-29 14:49:06 -06:00
flyinggrizzly
460af1885a Update troubleshooting.md 2017-05-29 19:42:07 +01:00
flyinggrizzly
370e656209 Add entry for insecure connection issue in Rails
If an application is configured to enforce secure connections and SSL isn't configured for Dokku or the application, browsers will raise an Invalid Connection error.

Entry describes issue, a code resolution for Rails, and points users to the SSL docs.
2017-05-29 17:33:23 +01:00
h4ck ninja
337bc9d10e Subject-verb agreement 2017-05-28 19:00:48 -07:00
Jose Diaz-Gonzalez
8fa40b7a70 Merge pull request #2788 from dokku/josegonzalez-patch-1
docs: Flesh out uninstallation documentation
2017-05-25 22:36:06 -06:00
Jose Diaz-Gonzalez
af71b1b4b3 chore: remove extra whitespace
[ci skip]
2017-05-25 22:35:52 -06:00
Jose Diaz-Gonzalez
4f60297630 docs: link to uninstalling documenation 2017-05-25 22:35:19 -06:00
Jose Diaz-Gonzalez
11aa78a5f9 docs: Flesh out uninstallation documentation
[ci skip]
2017-05-25 22:34:10 -06:00
Jose Diaz-Gonzalez
f4be4ad28d Merge pull request #2785 from dokku/contrib-release-plugin
feat: add a release-plugin bin
2017-05-23 02:37:05 -06:00
Jose Diaz-Gonzalez
cd4ebf5ffc feat: add a release-plugin bin
This binary will allow users to easily script releasing plugins, including uploading private plugins to S3.

[ci skip]
2017-05-23 02:36:16 -06:00
Jose Diaz-Gonzalez
584d4a4619 Merge pull request #2784 from dokku/document-env-vars
Document special dokku environment variables
2017-05-23 01:53:12 -06:00
Jose Diaz-Gonzalez
5061f1e2c8 feat: document special dokku environment variables
This adds a table of environment variables that Dokku will use to change internal behavior.

Not all are fully documented/listed, but this should be enough to get people hacking.

[ci skip]
2017-05-23 01:52:38 -06:00
Jose Diaz-Gonzalez
8602fa9e01 Merge pull request #2774 from fruitl00p/docker-options-help
include docker-options in the default `dokku`
2017-05-22 10:21:14 -06:00
Jose Diaz-Gonzalez
ea10d23133 Merge pull request #2777 from stokarenko/turn-on-ps-post-stop
Turn on ps-post-stop hook.
2017-05-22 10:20:37 -06:00
Jose Diaz-Gonzalez
3d9714446a Merge pull request #2781 from fruitl00p/patch-5
Adds docker.io support
2017-05-19 11:03:06 -04:00
Jose Diaz-Gonzalez
ee14acf735 fix: update min docker-io package
[ci skip]
2017-05-19 11:02:56 -04:00
Robin Speekenbrink
7d9f133824 Adds docker.io support
This (small) PR adds the docker-io package from Ubuntu Xenial as supported docker version

fixes #2775
2017-05-19 16:49:56 +02:00
Jose Diaz-Gonzalez
07f6a26c3e Merge pull request #2778 from zarqman/fix-logrotate
fix /etc/logrotate.d/dokku on debian
2017-05-18 15:23:23 -04:00
thomas morgan
653d6ca1eb fix logrotate config on debian 2017-05-18 13:11:30 -06:00
Sergey Tokarenko
e1263bf55c Turn on ps-post-stop hook. 2017-05-17 20:39:56 +03:00
Robin Speekenbrink
ac96217ac3 aligned docker-options into the default 'dokku' listing of plugins
This PR should list the default enabled docker-options plugin in the help listing. This should ease the `discovery` of the plugin.
2017-05-16 09:26:48 +02:00
Jose Diaz-Gonzalez
d747e146a6 Merge pull request #2773 from znz/update-copyright-year
Update year in footer [ci skip]
2017-05-15 14:50:07 -04:00
Kazuhiro NISHIYAMA
58512b2dea Update year in footer [ci skip] 2017-05-15 21:46:04 +09:00
Jose Diaz-Gonzalez
3d24f376ec Merge pull request #2768 from znz/ubuntu-12.04-is-eol
Ubuntu 12.04 is EOL
2017-05-12 10:11:38 -06:00
Jose Diaz-Gonzalez
954a5dba0b Merge pull request #2769 from lucianopf/master
Fix SlackButton for mobile devices.
2017-05-12 09:59:46 -06:00
Luciano Pellacani Franca
e7e44d431a [ci skip] skip CI
[ci skip] skip CI
2017-05-12 08:04:35 -04:00
Luciano Pellacani Franca
9865908163 Fix SlackButton size with screen lower than 768px
Fix SlackButton size with screen lower than 768px
2017-05-12 08:00:57 -04:00
Kazuhiro NISHIYAMA
ff99cfe3f7 Ubuntu 12.04 is EOL
and not listed in Requirements of README.md.
[ci skip]
2017-05-12 18:09:57 +09:00
Jose Diaz-Gonzalez
944d2c6ac4 Merge pull request #2766 from dokku/2761-herokuish-upgrade
feat: upgrade to herokuish 0.3.29
2017-05-11 09:03:40 -06:00
Jose Diaz-Gonzalez
3b28f0103f feat: upgrade to herokuish 0.3.29
Closes #2761
2017-05-10 23:31:42 -06:00
Jose Diaz-Gonzalez
5d72c7f714 Merge pull request #2765 from dokku/2762-debian-stretch-support
fix: Install python3-software-properties as an alternative to python-software-properties
2017-05-10 23:20:13 -06:00
Jose Diaz-Gonzalez
92c8ca50d1 fix: Install python3-software-properties as an alternative to python-software-properties
Closes #2762

[ci skip]
2017-05-10 23:19:48 -06:00
Jose Diaz-Gonzalez
fb918af050 Merge pull request #2763 from ZiadSalah/Vagrant-Windows-Instructions-Patch
Update vagrant.md
2017-05-10 16:24:55 -06:00
Jose Diaz-Gonzalez
ff536c58df docs: move the messaging into the docblock
[ci skip]
2017-05-10 16:24:44 -06:00
Jose Diaz-Gonzalez
9ff3ae9860 Merge pull request #2764 from joshmanders/patch-1
Create PULL_REQUEST_TEMPLATE.md
2017-05-10 16:18:57 -06:00
Josh Manders
75fe75f7a9 Create PULL_REQUEST_TEMPLATE.md
Puts note about [ci skip] so that CI doesn't trigger when making PR's about docs.
2017-05-10 17:15:50 -05:00
ZiadSalah
79bfd0fd12 Update vagrant.md
Included instructions to run vagrant up dokku-windows if on a windows host
2017-05-10 22:53:10 +01:00
Jose Diaz-Gonzalez
41bbf0a62b Merge pull request #2758 from AxelTheGerman/patch-1
dokku-git-rev has moved to dokku-community
2017-05-08 22:32:27 -06:00
Axel Gustav
6f1206e8a9 dokku-git-rev has moved to dokku-community 2017-05-08 21:28:17 -07:00
Jose Diaz-Gonzalez
74ca540c18 Merge pull request #2757 from nodanaonlyzuul/adjust-small-typo-in-docker-section
Fix typo from "To use a dockerfiles" to "To use a dockerfile" singular
2017-05-08 14:33:10 -06:00
nodanaonlyzuul
36fb3aef22 Fix typo from "To use a dockerfiles" to "To use a dockerfile" singular 2017-05-08 16:23:30 -04:00
Jose Diaz-Gonzalez
694ae52d64 Merge pull request #2753 from abrkn/patch-1
Use short-hand method for shutting down all applications in upgrade docs
2017-05-01 23:39:33 -06:00
Jose Diaz-Gonzalez
ed48542fd8 fix: quote variables 2017-05-01 23:20:28 -06:00
fzerorubigd
4ab147a8a5 add support for set DOKKU_IMAGE per app
fixes #2745
2017-05-02 09:21:58 +04:30
Jose Diaz-Gonzalez
9d57baf5a9 docs: use --quiet flag
[ci skip]
2017-05-01 22:28:30 -06:00
Andreas Brekken
a5b1412d43 Update upgrading.md
Add short-hand method for shutting down all apps. Useful for users with large number of apps.
2017-05-02 11:25:08 +07:00
Jose Diaz-Gonzalez
6e16a1b76a Merge pull request #2747 from ebeigarts/update-herokuish-base-image
Update herokuish base image on updates using --pull
2017-04-27 15:36:58 -06:00
Edgars Beigarts
d468572bf7 Update herokuish base image on updates using --pull
Herokuish update fails if existing herokuish is used by other containers,
using docker build --pull will force to update also the base image.

Setting up herokuish (0.3.28) ...
Removing old herokuish image
Failed to remove image (gliderlabs/herokuish): Error response from daemon: conflict: unable to remove repository reference "gliderlabs/herokuish" (must force) - container dbf2298ab5a5 is using its referenced image 7d4a8d661476
Importing herokuish into docker (around 5 minutes)
2017-04-27 12:39:12 +03:00
Jose Diaz-Gonzalez
cc08da9600 Merge pull request #2746 from dokku/josegonzalez-patch-1
docs: add redirect for installation to advanced install docs
2017-04-26 17:39:36 -06:00
Jose Diaz-Gonzalez
f9f333ca0a docs: add redirect for installation to advanced install docs
[ci skip]
2017-04-26 17:39:11 -06:00
Jose Diaz-Gonzalez
02aca5aac5 Merge pull request #2739 from dokku/2676-listener-port
Use listener_port in nginx.conf.sigil
2017-04-24 09:31:37 -06:00
Jose Diaz-Gonzalez
e719da300f Merge pull request #2642 from chiedo/error-pages
Added better default nginx error pages
2017-04-22 20:27:41 -06:00
Jose Diaz-Gonzalez
a7b929a80e Update 400-error.html
Base it more closely on the rails application error page
2017-04-22 15:44:24 -06:00
Jose Diaz-Gonzalez
c05ceb0aff Update 500-error.html 2017-04-22 15:42:25 -06:00
Jose Diaz-Gonzalez
4194702442 Update 404-error.html
Base it more closely on the rails application error page
2017-04-22 15:42:06 -06:00
Jose Diaz-Gonzalez
04dda5e347 Update 500-error.html
Base it more closely on the rails application error page
2017-04-22 15:40:26 -06:00
Jose Diaz-Gonzalez
cde90620b0 docs: Use listener_port in nginx.conf.sigil example
Refs #2676
2017-04-22 15:18:20 -06:00
Jose Diaz-Gonzalez
dea195df26 fix: Use listener_port in nginx.conf.sigil
Closes #2676
2017-04-22 15:17:15 -06:00
Jose Diaz-Gonzalez
6a441d8ed5 Merge pull request #2738 from dokku/2714-nossl-server-name
Add missing `NO_SSL_SERVER_NAME` to example template
2017-04-22 14:56:26 -06:00
Jose Diaz-Gonzalez
7c6c8feb95 docs: add missing NO_SSL_SERVER_NAME to example template
Also add a link to the default `nginx.conf.sigil`.

[ci skip]
2017-04-22 14:56:09 -06:00
Jose Diaz-Gonzalez
18957dcf39 Merge pull request #2678 from callahad/modern-tls
Update the default cipher suite
2017-04-22 14:42:19 -06:00
Jose Diaz-Gonzalez
7d825f8be0 Merge pull request #2735 from dokku/2721-global-ps-report
Ensure we can call ps:report without specifying an application
2017-04-21 15:15:06 -06:00
Jose Diaz-Gonzalez
518757c47d Merge pull request #2733 from dokku/jg-2732-rpm-docker
fix: use or statements to add support for new docker packages
2017-04-21 15:14:46 -06:00
Jose Diaz-Gonzalez
593f7d42d8 feat: allow any version of docker-ee and docker-ce
[ci skip]
2017-04-21 14:27:24 -06:00
Jose Diaz-Gonzalez
39c117a3cc fix: update herokuish dependency for docker
[ci skip]
2017-04-21 14:26:14 -06:00
Jose Diaz-Gonzalez
4700104303 Merge pull request #2734 from dokku/quiet-report-output
Allow quieter report output
2017-04-21 10:33:17 -06:00
Jose Diaz-Gonzalez
bc4b9dc5f3 fix: only require the docker bin
Docker has this thing where they rebrand the debian package name once a year, and as YUM doesn't resolve anything like a "Provides" field, this is the best we can do (unless they all required the same metapackage).

Note that now we can't ensure a specific minor docker version via RPM, though I feel as though if you choose a crappy OS/package manager and we fail you, thats on you, not Dokku.

Closes #2732
2017-04-21 10:26:24 -06:00
Jose Diaz-Gonzalez
6d21ab20bd fix: minor stylistic change 2017-04-21 10:22:20 -06:00
Jose Diaz-Gonzalez
dea1c86a9b fix: Ensure we can call ps:report without specifying an application
Closes #2721
2017-04-21 00:58:08 -06:00
Jose Diaz-Gonzalez
15021d05c9 feat: allow quieter report output
Users should have the option of suppressing headers, which are not always useful when interacting with dokku in a programmatic fashion.
2017-04-21 00:53:35 -06:00
Jose Diaz-Gonzalez
4639f3c930 fix: use or statements to add support for new docker packages
Closes #2732
[ci skip]
2017-04-20 21:38:25 -06:00
Jose Diaz-Gonzalez
42860dd2a9 feat: require nginx 1.8.0+
[ci skip]
2017-04-20 21:35:29 -06:00
Jose Diaz-Gonzalez
df6ac90812 Merge pull request #2457 from john-doherty/patch-1
Added "Dokku setup using a Mac" steps
2017-04-20 21:08:04 -06:00
Jose Diaz-Gonzalez
53fbaec1fa Merge branch 'master' into patch-1 2017-04-20 21:07:54 -06:00
Jose Diaz-Gonzalez
2f819d1d1c docs: remove header
Also use the account associated with Dokku for referrals.

[ci skip]
2017-04-20 21:06:43 -06:00
Jose Diaz-Gonzalez
c74bd93c58 docs: Respond to comments in digitalocean docs
[ci skip]
2017-04-20 21:04:40 -06:00
Jose Diaz-Gonzalez
9f9ecca59c feat: support nginx 1.8.0 and up 2017-04-20 20:22:11 -06:00
Jose Diaz-Gonzalez
9e021f889f fix: disable ssl tickets
This makes Perfect Forward Secrecy useless.
2017-04-20 20:17:43 -06:00
Jose Diaz-Gonzalez
1c5896c3e3 fix: be pci compliant by default
Developers can override this in a custom nginx.conf.sigil.

While it may be backwards incompatible - and will therefore require a minor release - it does make things much more secure.
2017-04-20 20:15:38 -06:00
Jose Diaz-Gonzalez
4abad29b3a feat: set prefer_server_ciphers to on by default
[ci skip]
2017-04-20 20:14:10 -06:00
Jose Diaz-Gonzalez
3fab901097 fix: drop duplicate config values
[ci skip]
2017-04-20 20:13:44 -06:00
Jose Diaz-Gonzalez
6e0adaead0 Merge pull request #2730 from weyert/bugfix/2711
Fix ticket #2711
2017-04-20 15:19:37 -06:00
Jose Diaz-Gonzalez
55afe3a760 fix: quiet pushd and popd 2017-04-19 13:48:15 -06:00
Weyert de Boer
a61f7f44d6 Merge branch 'master' into bugfix/2711 2017-04-19 03:26:35 +01:00
Weyert de Boer
f0e0e20496 Use pushd and popd instead of cd 2017-04-19 03:26:00 +01:00
Weyert de Boer
3e4f91a78d Attempt to fix the clone command 2017-04-19 03:00:09 +01:00
Josh Manders
fb68a6f4b6 Merge pull request #2725 from timaschew/patch-1
docs: minor typo fix
2017-04-18 09:46:58 -05:00
Anton Wilhelm
5a611b73d0 minor typo fix 2017-04-18 11:28:09 +02:00
Jose Diaz-Gonzalez
7e36d74959 Merge pull request #2723 from weyert/bugfix/2722
Call non-deprecated plugin:list method
2017-04-17 11:01:07 -06:00
Weyert de Boer
442d2cc414 Ensure the plugin listing command is not the deprecated one but the new plugin:list one instead 2017-04-17 16:22:23 +01:00
Jose Diaz-Gonzalez
8cac7ee63f Merge pull request #2719 from joshco/master
clarify requirement to be checked into repo for buildpack apps
2017-04-17 00:38:45 -06:00
Josh
ab29554f3f clarify requirement to be checked into repo for buildpack apps 2017-04-16 12:26:37 -04:00
Jose Diaz-Gonzalez
2803c39fb5 Merge pull request #2715 from dokku/github-usable-docs
Use urls that are linkable on github
2017-04-13 23:24:34 -06:00
Jose Diaz-Gonzalez
0ba9393285 docs: use urls that are linkable on github 2017-04-13 23:09:46 -06:00
Jose Diaz-Gonzalez
6cb8b108db Release 0.9.4
# History

## 0.9.4

### Documentation

- #2710: @josegonzalez Quiet output for git-related commands
2017-04-10 18:36:04 -06:00
Jose Diaz-Gonzalez
9aef43d5a0 Merge pull request #2710 from dokku/quiet-git
Quiet output for git-related commands
2017-04-10 18:35:25 -06:00
Jose Diaz-Gonzalez
8dadc4cf50 fix: de-dent post-extract output 2017-04-10 17:12:46 -06:00
Jose Diaz-Gonzalez
45518fce6c fix: ensure git check-ref-format runs quietly 2017-04-10 17:12:32 -06:00
Jose Diaz-Gonzalez
b21f4b6470 Release 0.9.3
# History

## 0.9.3

### Bug Fixes

- #2706: @josegonzalez fix: ensure nginx conf.d directory exists when running nginx install hook
- #2701: @scjody Set SSH_USER for root commands

### New Features

- #2708: @josegonzalez Document that we will not do buildpack support in the issue tracker

### Documentation

- #2709: @michaelshobbs increase CURL_TIMEOUT and CURL_CONNECT_TIMEOUT defaults
- #2699: @mbreit Add support for git >= 2.11
2017-04-10 13:40:53 -06:00
Jose Diaz-Gonzalez
c52f60f9d7 Merge pull request #2709 from dokku/mh/fix/default-curl-timeouts
increase CURL_TIMEOUT and CURL_CONNECT_TIMEOUT defaults
2017-04-10 13:39:42 -06:00
Jose Diaz-Gonzalez
c815d732eb Merge pull request #2706 from dokku/2686-missing-nginx-dir
fix: ensure nginx conf.d directory exists when running nginx install hook
2017-04-10 12:48:25 -06:00
Michael Hobbs
18849c085a increase CURL_TIMEOUT and CURL_CONNECT_TIMEOUT defaults. fixes #2668 2017-04-10 11:34:09 -07:00
Jose Diaz-Gonzalez
cb62958095 Merge pull request #2708 from dokku/josegonzalez-patch-1
Document that we will not do buildpack support in the issue tracker
2017-04-10 07:46:49 -06:00
Jose Diaz-Gonzalez
4fcfad5df5 docs: Document that we will not do buildpack support in the issue tracker
[ci skip]
2017-04-10 07:46:23 -06:00
Jose Diaz-Gonzalez
5101096518 fix: ensure nginx conf.d directory exists when running nginx install hook
Closes #2686
2017-04-10 00:37:23 -06:00
Jose Diaz-Gonzalez
afef3b94d5 Merge pull request #2701 from plotly/set-ssh-user-for-root
Set SSH_USER for root commands
2017-04-10 00:28:50 -06:00
Jody McIntyre
73a84f90c5 Set SSH_USER for root commands
Previously, SSH_USER was not set for plugin:* or ssh-keys:add, which
contradicts the user-auth trigger documentation.

Fixes #2700
2017-04-07 12:46:09 -04:00
Jose Diaz-Gonzalez
918bc9efe8 Merge pull request #2699 from mbreit/git-worktree
Use git worktree in git_build_app_repo() for git >= 2.11
2017-04-05 11:03:10 -04:00
Moritz Breit
98619733b2 Use git worktree in git_build_app_repo() for git >= 2.11
Git 2.11.0 breaks the git clone approach in git_build_app_repo() in
25ab004c53

git worktree is a much simpler approach but only works for git >= 2.5
so it is not available in Ubuntu 14.04.

Fixes #2512.
2017-04-05 11:45:41 +02:00
Jose Diaz-Gonzalez
2fb712c3a2 Release 0.9.2
# History

## 0.9.2

### New Features

- #2698: @josegonzalez docs: Document that we only care about specific sections
- #2697: @callahad Restore installer note regarding AUFS on Linode
- #2694: @scjody Add documentation note re: git-pre-pull vs. auth

### Documentation

- #2695: @michaelshobbs add tests for pre/post deploy tasks
2017-04-05 00:21:24 -04:00
Jose Diaz-Gonzalez
0fa6503034 Merge pull request #2698 from dokku/josegonzalez-patch-1
docs: Document that we only care about specific sections
2017-04-04 17:05:32 -04:00
Jose Diaz-Gonzalez
fab97a377f docs: Document that we only care about specific sections
Also remove all extra sections that are unused to make this clearer.

[ci skip]
2017-04-04 16:53:15 -04:00
Jose Diaz-Gonzalez
811bf2f9c4 Merge pull request #2697 from callahad/warn-about-aufs-warning
Restore installer note regarding AUFS on Linode
2017-04-04 15:37:38 -04:00
Dan Callahan
20497dabb4 Restore installer note regarding AUFS on Linode
See discussion in: https://github.com/dokku/dokku/issues/2675
Upstream Docker bug: https://github.com/docker/docker/issues/32361
2017-04-04 14:35:09 -05:00
Jose Diaz-Gonzalez
0b430af077 Merge pull request #2694 from plotly/git-pre-pull-security-note
Add documentation note re: git-pre-pull vs. auth
2017-04-04 12:50:37 -04:00
Jody McIntyre
e42e7c3694 Add documentation note re: git-pre-pull vs. auth 2017-04-04 11:40:46 -04:00
Michael Hobbs
eeef120433 Merge pull request #2695 from dokku/mh/chore/deployment-tasks-tests
add tests for pre/post deploy tasks
2017-04-03 16:32:36 -07:00
Michael Hobbs
8950571acb add tests for pre/post deploy tasks 2017-04-03 12:34:41 -07:00
Jose Diaz-Gonzalez
a72a82e29b Release 0.9.1
# History

## 0.9.1

### Bug Fixes

- #2693: @josegonzalez fix: explicitly chown data and data/storage directories
2017-04-03 00:17:02 -04:00
Jose Diaz-Gonzalez
b6adc23bdd Merge pull request #2693 from dokku/josegonzalez-patch-1
fix: explicitly chown data and data/storage directories
2017-04-02 16:17:41 -04:00
Jose Diaz-Gonzalez
8677aadad7 fix: explicitly chown data and data/storage directories
Doing a recursive chown will otherwise screw up dockerfile-based app storage when the uid does not map to herokuish or similar.
2017-04-02 15:07:18 -04:00
Jose Diaz-Gonzalez
a4b8e59c3f Release 0.9.0
# History

## 0.9.0

### Bug Fixes

- #2691: @josegonzalez Fix package building when golang binaries are available
- #2671: @znz Fix variable name
- #2672: @callahad Fix logrotate on Debian
- #2666: @josegonzalez Use correct flag for build arguments when installing herokuish
- #2664: @pvalentim Fix remote name when using --remote option with apps:create

### New Features

- #2689: @mbreit Add dokku-monit to community plugin list
- #2683: @josegonzalez Ensure we have an example for adding keys as another user
- #2682: @josegonzalez Clarify supported stanzas in app.json
- #2679: @callahad Remove unnecessary Linode-specific instructions
- #2670: @znz Remove duplicated `(i.e. `

### Documentation

- #2685: @josegonzalez Pass shellcheck on os x
- #2677: @callahad Prefer HTTP2 to SPDY in nginx-vhosts
- #2673: @michaelshobbs Update to herokuish 0.3.27
- #2674: @michaelshobbs Update sshcommand to 0.7.0
- #2654: @ebeigarts Enable nginx and docker on system startup when using bootstrap.sh on CentOS
- #2546: @michaelshobbs Convert repo plugin to golang
2017-03-31 18:33:39 -06:00
Jose Diaz-Gonzalez
3a5d0716d4 Merge pull request #2691 from dokku/packaging
Fix package building when golang binaries are available
2017-03-31 18:12:44 -06:00
Jose Diaz-Gonzalez
b54a5b3f67 feat: add more lintian overrides for golang-based builds 2017-03-31 17:50:54 -06:00
Jose Diaz-Gonzalez
5b33bd5eda fix: clean up src files in tmp build dir 2017-03-31 17:50:34 -06:00
Jose Diaz-Gonzalez
6d55dd8884 fix: allow skipping go-clean 2017-03-31 17:50:16 -06:00
Jose Diaz-Gonzalez
0fae350256 fix: do not clean src files between builds
This breaks packaging for multiple systems, and should only be done in the tmp build dir.
2017-03-31 17:48:26 -06:00
Jose Diaz-Gonzalez
90015ab594 fix: ensure the Makefile is also removed when calling make src-clean 2017-03-31 17:27:08 -06:00
Jose Diaz-Gonzalez
28281ae4d4 fix: properly detect release builds 2017-03-31 17:08:03 -06:00
Jose Diaz-Gonzalez
4723b27f2c Merge pull request #2690 from znz/fix-contrib/release
Fix some bugs in contrib/release
2017-03-31 16:29:21 -06:00
Kazuhiro NISHIYAMA
de338f4da5 Fix a typo 2017-03-30 21:32:07 +09:00
Kazuhiro NISHIYAMA
d52eac7b35 Fix a typo 2017-03-30 21:31:15 +09:00
Kazuhiro NISHIYAMA
4d01e677ee Add missing $ 2017-03-30 21:30:33 +09:00
Kazuhiro NISHIYAMA
33daa88197 Add missing local 2017-03-30 21:29:59 +09:00
Kazuhiro NISHIYAMA
607a3d88ae CURRENT_VERSION used in fn-repo-update-history-and-commit 2017-03-30 21:27:35 +09:00
Kazuhiro NISHIYAMA
be082e2fe0 Escaping CURRENT_VERSION to avoid too replaced
like change fixed in 5173145653
2017-03-30 21:24:40 +09:00
Kazuhiro NISHIYAMA
27bd578405 $IS_RELEASE is true or false
`[[ "$IS_RELEASE" == "release" ]]` does never match,
because `fn-is-release` outputs `true` or `false` only.
2017-03-30 21:23:15 +09:00
Jose Diaz-Gonzalez
0962ebeadb Merge pull request #2689 from mbreit/dokku-monit-plugin
Add dokku-monit to community plugin list
2017-03-29 09:19:03 -06:00
Moritz Breit
95d9ca8945 Add dokku-monit to community plugin list 2017-03-29 10:00:43 +02:00
Jose Diaz-Gonzalez
e71cd7a939 Merge pull request #2684 from dokku/automated-release
feat: Allow triggering a release via the `contrib/release` script
2017-03-27 23:24:53 -06:00
Jose Diaz-Gonzalez
4bf301c913 chore: group single-line directives that are the same
[ci skip]
2017-03-27 09:32:48 -06:00
Jose Diaz-Gonzalez
0ea9e398bb Merge pull request #2685 from dokku/dockerfile-packaging
Pass shellcheck on os x
2017-03-26 16:23:33 -06:00
Jose Diaz-Gonzalez
2a6ea5d979 Merge pull request #2677 from callahad/prefer-http2
Prefer HTTP2 to SPDY in nginx-vhosts
2017-03-26 13:15:47 -06:00
Jose Diaz-Gonzalez
b8cde503c2 SC2178: Variable was used as an array but is now assigned a string 2017-03-26 05:03:16 -06:00
Jose Diaz-Gonzalez
89c8e1c6a5 SC2086: Double quote to prevent globbing and word splitting 2017-03-26 05:02:03 -06:00
Jose Diaz-Gonzalez
6c66e9850c SC2145: Argument mixes string and array. Use * or separate argument. 2017-03-26 05:00:43 -06:00
Jose Diaz-Gonzalez
fbcc8d8d6c SC2154: disable 2017-03-26 04:59:54 -06:00
Jose Diaz-Gonzalez
e2bbdc968d SC2162: read without -r mangle backslashes 2017-03-26 04:59:10 -06:00
Jose Diaz-Gonzalez
ed7d5623ad fix: attempt to pass shellcheck on os x 2017-03-26 04:38:35 -06:00
Jose Diaz-Gonzalez
217e491e59 feat: Allow triggering a release via the contrib/release script
- Requires docker, git, and package_cloud gems
- Requires the PACKAGECLOUD_API_TOKEN environment variable
- Builds both a deb and rpm, pushing both to packagecloud
- Upgrades the golang build environment to 1.7.5
- Combines both build Dockerfiles into a single, generic env
- Fixes issue where internal-functions file for tar plugin was not executable
- Ensures that built plugins have a callback to clean up their source files before packaging
- Adds support for “betafish” releases, which are untested versions of Dokku that are available via a separate packagecloud repository.
2017-03-25 17:56:42 -06:00
Jose Diaz-Gonzalez
101414dcd3 Merge pull request #2683 from dokku/josegonzalez-patch-1
docs: ensure we have an example for adding keys as another user
2017-03-24 17:35:20 -06:00
Jose Diaz-Gonzalez
edda1e6567 docs: ensure we have an example for adding keys as another user
Closes #2680

[ci skip]
2017-03-24 17:35:05 -06:00
Jose Diaz-Gonzalez
dd7439095a Merge pull request #2682 from dokku/josegonzalez-patch-1
docs: Clarify supported stanzas in app.json
2017-03-24 16:08:31 -06:00
Jose Diaz-Gonzalez
9e3ae9c37c docs: Clarify supported stanzas in app.json
Closes #2681

[ci skip]
2017-03-24 16:08:17 -06:00
Jose Diaz-Gonzalez
b1bd2c17a0 Merge pull request #2679 from callahad/remove-linode-docs
Remove unnecessary Linode-specific instructions
2017-03-23 14:58:48 -06:00
Dan Callahan
a939296981 Prefer HTTP2 to SPDY in nginx-vhosts
1.  SPDY has been deprecated and removed from modern browsers:
    http://caniuse.com/#feat=spdy

2.  HTTP/2 is present in all modern browsers:
    http://caniuse.com/#feat=http2

3.  SPDY and HTTP/2 are mutually exclusive in port-based `listen` directives:
    http://nginx.org/en/docs/http/ngx_http_core_module.html#listen

Caniuse suggests that 74% of global users have a browser that supports
HTTP/2, while only 27% have a browser that supports SPDY. Only IE11 and
Safari support both.

Therefore, when both are available, Dokku should choose HTTP/2 to
maximize the benefit to users.
2017-03-23 15:23:57 -05:00
Dan Callahan
23cfccf424 Remove unnecessary Linode-specific instructions
Modern versions of Docker work just fine on Linode's default kernel
thanks to the `overlay2` storage driver.

Closes #2675
2017-03-23 15:18:10 -05:00
Dan Callahan
071e746c45 Update the default cipher suite
This is the Modern preset from:
https://mozilla.github.io/server-side-tls/ssl-config-generator/
2017-03-23 15:11:57 -05:00
Jose Diaz-Gonzalez
eae2876187 Merge pull request #2673 from dokku/mh/chore/bump-herokuish
update to herokuish 0.3.27
2017-03-23 13:43:24 -06:00
Jose Diaz-Gonzalez
8730bbf0a9 Merge pull request #2674 from dokku/mh/chore/bump-sshcommand
update sshcommand to 0.7.0
2017-03-23 13:43:04 -06:00
Jose Diaz-Gonzalez
1f5e5e5c14 Merge pull request #2654 from ebeigarts/rpm-enable-docker-nginx
Enable nginx and docker on system startup when using bootstrap.sh on CentOS
2017-03-23 13:42:45 -06:00
Michael Hobbs
e8b6e33934 update sshcommand to 0.7.0 2017-03-22 09:33:53 -07:00
Jose Diaz-Gonzalez
9ee6c7aab6 Merge pull request #2671 from znz/fix-var-name
Fix variable name
2017-03-22 10:31:48 -06:00
Jose Diaz-Gonzalez
22a8b914d2 Merge pull request #2670 from znz/fix-typo
Remove duplicated `(i.e. `
2017-03-22 09:59:03 -06:00
Jose Diaz-Gonzalez
dfab96c72e Merge pull request #2672 from callahad/fix-logrotate-debian
Fix logrotate on Debian
2017-03-22 09:58:01 -06:00
Michael Hobbs
7c8fba8fc1 update to herokuish 0.3.27 2017-03-22 08:52:50 -07:00
Dan Callahan
85f4023965 Fix logrotate on Debian
Since we're creating logs as `root:dokku`, the logrotate configuration
needs an `su root dokku` line, just like `su syslog dokku` on ubuntu.
2017-03-22 08:39:46 -05:00
Kazuhiro NISHIYAMA
e9ee47a7c7 Fix variable name
`key` may not be `DOKKU_ROOT`.
2017-03-22 21:31:27 +09:00
Kazuhiro NISHIYAMA
a7c6127f2b Remove duplicated (i.e.
[ci skip]
2017-03-22 21:29:21 +09:00
Jose Diaz-Gonzalez
4e6a699140 Merge pull request #2666 from dokku/josegonzalez-patch-1
Use correct flag for build arguments when installing herokuish
2017-03-21 08:15:29 -06:00
Jose Diaz-Gonzalez
f71644faf6 Use correct flag for build arguments when installing herokuish
Closes #2665

[ci skip]
2017-03-21 08:15:07 -06:00
Michael Hobbs
9a6306c53b Merge pull request #2546 from dokku/mh-repo-golang
convert repo plugin to golang
2017-03-20 11:08:19 -07:00
Michael Hobbs
83d98fb6fb cleanup from master rebase 2017-03-20 09:18:54 -07:00
Michael Hobbs
c501574753 fix overlooked rename of struct method receiver var 2017-03-20 09:16:49 -07:00
Michael Hobbs
f0efdd2ed4 rename DokkuCmd to ShellCmd and use strings.Join instead of fmt.Sprintf 2017-03-20 09:16:49 -07:00
Michael Hobbs
177b45c49b use common.mk for common make variables. use -e when calling make. use golang:1.7.4 image. 2017-03-20 09:16:49 -07:00
Michael Hobbs
fc31b28ab6 restructure to build individual binaries 2017-03-20 09:16:49 -07:00
Michael Hobbs
e61475c7ea add plugin docs regarding compiled languages and command API 2017-03-20 09:15:43 -07:00
Michael Hobbs
c92c0fce37 remove non-existent targets from .PHONY 2017-03-20 09:15:43 -07:00
Michael Hobbs
1a0c308b65 better error msg language 2017-03-20 09:15:43 -07:00
Michael Hobbs
dffbad49b4 refactor out variadic form of GetDeployingAppImageName 2017-03-20 09:15:43 -07:00
Michael Hobbs
b6dffaabee convert repo plugin to golang 2017-03-20 09:15:43 -07:00
Jose Diaz-Gonzalez
8d83803763 Merge pull request #2664 from pvalentim/fix-remote-option
Fix remote name when using --remote option with apps:create
2017-03-20 09:43:37 -06:00
Pedro Valentim
85e5bd7c86 Fix remote name when using --remote option with apps:create 2017-03-20 13:11:14 +00:00
Jose Diaz-Gonzalez
6e4f023a7b Release 0.8.2 2017-03-19 16:20:39 -06:00
Jose Diaz-Gonzalez
8fb817f93c Merge pull request #2660 from dokku/plugin-tarball-support
feat: allow installation of plugins via tarball
2017-03-19 16:17:29 -06:00
Jose Diaz-Gonzalez
49abdb1b5c Merge pull request #2661 from dokku/non-quiet-package-builds
feat: do not run builds in quiet mode
2017-03-19 16:17:24 -06:00
Jose Diaz-Gonzalez
bba368a32d feat: allow installation of plugins via tarball 2017-03-19 16:16:45 -06:00
Jose Diaz-Gonzalez
eaccd8087c feat: do not run builds in quiet mode 2017-03-19 16:15:28 -06:00
Jose Diaz-Gonzalez
3c1fc4a7df Release 0.8.1 2017-03-19 14:06:32 -06:00
Jose Diaz-Gonzalez
c0027e5107 Merge pull request #2659 from jfw/master
Minor clarifications
2017-03-17 17:35:03 -06:00
Jeff Fein-Worton
ed6a4426c7 Minor clarifications 2017-03-17 16:32:33 -07:00
Jose Diaz-Gonzalez
e5a6cf48f7 Merge pull request #2657 from dokku/post-extract-trigger
Add post-extract plugin trigger
2017-03-16 05:51:04 -06:00
Jose Diaz-Gonzalez
dace6873df Add post-extract plugin trigger
This trigger allows you to modify the contents of an application *after* it has been extracted from git/tarball but *before* the image source type is detected. For example, you may wish to autogenerate a Dockerfile based on some other application contents before detecting what type of build process - herokuish or docker file - to use.
2017-03-16 04:25:18 -06:00
Jose Diaz-Gonzalez
d01460f19a Merge pull request #2656 from dokku/2628-fix-global-report-flags
fix: ensure we can call the report subcommand without an app while specifying flags
2017-03-16 03:39:42 -06:00
Jose Diaz-Gonzalez
97e35e796c fix: ensure we can call the report subcommand without an app while specifying flags
Closes #2628
2017-03-16 02:33:51 -06:00
Jose Diaz-Gonzalez
4de0e693ca Merge pull request #2618 from dokku/2356-storage-report
Implement docker-options:report and storage:report
2017-03-15 10:38:09 -06:00
Jose Diaz-Gonzalez
01b30e083f fix: redirect stderr to /dev/null in tests 2017-03-15 09:29:47 -06:00
Edgars Beigarts
7ba063c6bb Enable nginx and docker on system startup when using bootstrap.sh on CentOS 2017-03-15 14:52:29 +02:00
Jose Diaz-Gonzalez
0215e3ec91 fix: redirect domains:default stderr to /dev/null in tests 2017-03-15 03:17:31 -06:00
Jose Diaz-Gonzalez
91aa5255ec fix: ensure we redirect stderr to stdout for test 2017-03-15 02:55:09 -06:00
Jose Diaz-Gonzalez
0d1c8deb57 fix: redirect error output to /dev/null
The checks command is deprecated, so the warning was being captured.
2017-03-15 02:44:38 -06:00
Jose Diaz-Gonzalez
06d2ffaa14 feat: redirect warnings to stderr
Having warnings on stdout doesn’t convey to a user that it is a warning.
2017-03-15 02:44:38 -06:00
Jose Diaz-Gonzalez
6ae948523b fix: redirect error output to /dev/null
The docker-options command is deprecated, so the warning was being captured.
2017-03-15 02:44:38 -06:00
Jose Diaz-Gonzalez
9aaf289fb8 fix: use correct variable 2017-03-15 02:44:38 -06:00
Jose Diaz-Gonzalez
367f6bd5e8 fix: add missing source calls 2017-03-15 02:44:38 -06:00
Jose Diaz-Gonzalez
d9ff7c218d Add deprecation notice 2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
f5cce3c3a3 fix: pass shellcheck 2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
f1897c7a86 feat: implement docker-options:report command
Refs #2356
2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
25e44b5492 docs: use node-js-app as the app name, not node-js-sample 2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
b7dca68375 fix: use correct source path 2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
9bad0795e2 fix: add missing functions 2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
b7da215ab5 feat: implement storage:report command
Refs #2356
2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
35acce84ea chore: use correct path for sourcing 2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
a7f32197f3 refactor: move command to internal-functions 2017-03-15 02:42:10 -06:00
Jose Diaz-Gonzalez
ac8aff1f00 refactor: storage:default is now an alias for storage:help 2017-03-15 02:39:53 -06:00
Jose Diaz-Gonzalez
e99e0b02d4 refactor: move storage:help to internal-functions 2017-03-15 02:38:38 -06:00
Jose Diaz-Gonzalez
621b31839e Merge pull request #2650 from dokku/2627-bare-help-output
Fix help output for nginx and ssh-keys
2017-03-13 10:36:25 -06:00
Jose Diaz-Gonzalez
3c5335056c feat: allow plugin:help and plugin:list subcommands to be run without root 2017-03-12 21:46:58 -06:00
Jose Diaz-Gonzalez
30bf228dc9 docs: swap in plugin:list command 2017-03-12 21:29:25 -06:00
Jose Diaz-Gonzalez
e78a05d6fe feat: mark ps:default command as deprecated 2017-03-12 21:29:12 -06:00
Jose Diaz-Gonzalez
4930003008 feat: create repo:default alias for repo:help 2017-03-12 21:29:01 -06:00
Jose Diaz-Gonzalez
0153bc49bc feat: create tar:default alias for tar:help 2017-03-12 21:28:45 -06:00
Jose Diaz-Gonzalez
48503e9f40 fix: add missing import 2017-03-12 21:28:29 -06:00
Jose Diaz-Gonzalez
ef9b453aa8 refactor: mark storage:list as deprecated 2017-03-12 21:27:36 -06:00
Jose Diaz-Gonzalez
f5552da8ac chore: formatting 2017-03-12 21:26:54 -06:00
Jose Diaz-Gonzalez
6124f2693b feat: make plugin:default an alias of plugin:list 2017-03-12 21:26:46 -06:00
Jose Diaz-Gonzalez
2bcad2014b chore: unify error output when an app is not declared 2017-03-12 21:26:19 -06:00
Jose Diaz-Gonzalez
7bbad9f074 fix: ensure the help output for nginx/ssh-keys renders correctly
Closes #2627

[ci skip]
2017-03-12 21:24:43 -06:00
Jose Diaz-Gonzalez
a5ac4bb08b Merge pull request #2648 from dokku/josegonzalez-patch-1
docs: Note that the remote username is important
2017-03-10 19:47:38 -07:00
Jose Diaz-Gonzalez
3b2bb2ebc6 docs: Note that the remote username is important
[ci skip]
2017-03-10 19:47:26 -07:00
Jose Diaz-Gonzalez
40e4df7e78 Merge pull request #2647 from dokku/jg-2646
fix: properly escape post-install variables
2017-03-09 01:56:44 -07:00
Jose Diaz-Gonzalez
41d3b258bb fix: properly escape post-install variables
Closes #2646

[ci skip]
2017-03-09 01:56:27 -07:00
Chiedo
12b44c865b Exposed function to nginx template 2017-03-08 07:49:21 -05:00
Chiedo
58c2ad8e4b Attempt to fix plugin path 2017-03-07 16:10:46 -05:00
Chiedo
4c354bdcd6 lol 2017-03-07 15:53:16 -05:00
Chiedo
22f670d999 Fixed variable syntax in install script 2017-03-07 14:50:14 -05:00
Chiedo
e5f3dcaaef Quoted Variable usage 2017-03-07 14:38:19 -05:00
Chiedo
3f4b1e69c7 Requested improvements
- Moved the template files
- Replaced . with $PWD
- Made more descriptive errors in the templates
2017-03-07 14:28:38 -05:00
Chiedo
fa286caca2 Switched to templated error pages 2017-03-07 09:14:24 -05:00
Chiedo
3b78e65b2b Added better default nginx error pages 2017-03-06 15:05:58 -05:00
Jose Diaz-Gonzalez
df6f7803d0 Merge pull request #2639 from joshco/docs/alt-unix-users
Add documentation for how to grant other Unix accounts Dokku access
2017-03-06 06:34:26 -07:00
Josh Cohen
e870f844c6 Add documentation for how to grant other Unix accounts Dokku access
without giving them full sudo privileges.
2017-03-06 08:06:24 -05:00
Jose Diaz-Gonzalez
68192dcdbf Merge pull request #2638 from econya/speaking-documentation-link
Improve README with more speaking link to doc.
2017-03-06 02:55:20 -07:00
Felix Wolfsteller
926cb51906 Improve README with more speaking link to doc.
Also, add a full stop somewhere.
2017-03-06 10:23:08 +01:00
Jose Diaz-Gonzalez
e518571f83 Merge pull request #2622 from raphaklaus/master
Allow file names with multiple dots in certs:add command
2017-03-04 16:18:27 -07:00
Jose Diaz-Gonzalez
7586575cf8 Merge pull request #2637 from dokku/fix-ps-report-docs
docs: Add documentation surrounding flags that ps:report accepts
2017-03-04 16:18:03 -07:00
Jose Diaz-Gonzalez
31c9775ef4 docs: Add documentation surrounding flags that ps:report accepts
Closes #2631

[ci skip]
2017-03-04 16:17:27 -07:00
Raphael D. Pinheiro
30de268da7 Merge branch 'master' into master 2017-03-03 15:22:55 -03:00
Jose Diaz-Gonzalez
1e387b3b42 fix: support new docker packages
Refs #2636
2017-03-03 09:04:49 -07:00
raphaklaus
94af35b3b9 Merge branch 'master' of https://github.com/raphaklaus/dokku 2017-03-02 16:39:08 -03:00
raphaklaus
a3989aafaa add grep to find crt and key files 2017-03-02 16:38:25 -03:00
Michael Hobbs
87feed08f5 Merge pull request #2634 from dokku/mh/chore/upgrade-herokuish
update herokuish to 0.3.26
2017-03-02 10:23:57 -07:00
Raphael D. Pinheiro
86eca5af3a Merge branch 'master' into master 2017-03-02 12:01:17 -03:00
Michael Hobbs
246e54a293 update herokuish to 0.3.26 2017-02-28 17:02:33 -07:00
Jose Diaz-Gonzalez
16ff22b457 Merge pull request #2633 from drpoggi/patch-1
update ssl.md
2017-02-28 12:08:10 -07:00
David Poggi
f7a25eb480 update ssl.md
Make sure we're respecting the respectively ;)
2017-02-28 13:20:47 -05:00
Raphael D. Pinheiro
51f5dbcf26 Merge branch 'master' into master 2017-02-28 12:37:52 -03:00
Jose Diaz-Gonzalez
d79a79084e fix: bail early when checking ps output for an undeployed app
Closes #2630
2017-02-27 07:30:21 -07:00
Jose Diaz-Gonzalez
fe54718073 Merge pull request #2629 from znz/fix-certs-help
Fix `certs:help`
2017-02-27 07:13:20 -07:00
Kazuhiro NISHIYAMA
c1cef4f99e Fix certs:help
`certs` requires `app` argument like `certs:info`.
2017-02-27 23:04:54 +09:00
Jose Diaz-Gonzalez
d36f874d0e Merge pull request #2626 from znz/update-command-in-example
Update command in example
2017-02-27 06:49:22 -07:00
Kazuhiro NISHIYAMA
b0c577ddd7 Update command in example 2017-02-27 22:41:42 +09:00
raphaklaus
56b018b4c5 Merge branch 'master' of https://github.com/raphaklaus/dokku 2017-02-24 12:54:40 -03:00
Raphael D. Pinheiro
8bc7cdaaeb Merge branch 'master' into master 2017-02-24 12:42:42 -03:00
raphaklaus
adf0a9ee74 add domain_ssl tar for testing 2017-02-24 12:41:12 -03:00
Jose Diaz-Gonzalez
ba7f9b8f87 Merge pull request #2616 from dokku/2356-apps-report-cleanup
Replace apps subcommand with apps:list
2017-02-23 19:38:40 -07:00
Jose Diaz-Gonzalez
a3ff9b53a8 Merge pull request #2615 from dokku/2356-certs-report
Implement certs:report
2017-02-23 19:38:25 -07:00
Jose Diaz-Gonzalez
0b897df462 Merge pull request #2619 from dokku/2356-ssh-keys-report
Refactor ssh-keys:default
2017-02-23 19:38:11 -07:00
Jose Diaz-Gonzalez
b4899cdb21 Merge pull request #2620 from dokku/2356-proxy-report
Implement domains:report and proxy:report
2017-02-23 19:37:58 -07:00
Jose Diaz-Gonzalez
2fbe5a418f Merge pull request #2617 from dokku/2356-checks-report
Implement checks:report
2017-02-23 19:37:43 -07:00
Raphael D. Pinheiro
8a6bce3745 add multiple dots tar for testing 2017-02-23 16:33:36 -03:00
Raphael D. Pinheiro
b0777a44cb add test to certs:add with multiple dots
Add test to certs:add command to allow multiple dots in file name
2017-02-23 13:44:28 -03:00
Raphael D. Pinheiro
0c98a34094 enhance regex to allow multiple dots in file names
removed remaining *
2017-02-23 13:27:50 -03:00
Raphael D. Pinheiro
088b7f360e enhance regex to allow multiple dots in file names
things like mydomain.com.crt and mydomain.com.key will be better interpreted
2017-02-23 13:25:33 -03:00
Jose Diaz-Gonzalez
54429a095c feat: implement domains:report command
Also deprecate `domains:default` in favor of `domains:report`

Refs #2356
2017-02-20 23:17:35 -07:00
Jose Diaz-Gonzalez
282979eef4 refactor: move domains:help to internal-functions 2017-02-20 22:50:07 -07:00
Jose Diaz-Gonzalez
48653e5663 chore: properly name functions 2017-02-20 22:44:51 -07:00
Jose Diaz-Gonzalez
ec2e2bc4cc refactor: alias nginx:default to nginx:help 2017-02-20 22:39:53 -07:00
Jose Diaz-Gonzalez
885aa47b18 refactor: move nginx:help to internal-functions 2017-02-20 22:35:52 -07:00
Jose Diaz-Gonzalez
225840b79d refactor: move proxy:help to internal-functions 2017-02-20 21:52:05 -07:00
Jose Diaz-Gonzalez
0e899cdd13 feat: implement proxy:report command
Also deprecate `proxy:default` in favor of `proxy:report`

Refs #2356
2017-02-20 21:52:02 -07:00
Jose Diaz-Gonzalez
6906ead6ae Merge pull request #2592 from dokku/2535-dockerfile-ssl-port
fix: always set a default ssl port for apps with ssl enabled
2017-02-20 21:20:44 -07:00
Jose Diaz-Gonzalez
e441594981 chore: use correct source path 2017-02-20 20:11:53 -07:00
Jose Diaz-Gonzalez
448b6e9ac1 refactor: alias ssh-keys:default to ssh-keys:help 2017-02-20 20:09:09 -07:00
Jose Diaz-Gonzalez
a09560542b refactor: move ssh-keys:help to internal-functions 2017-02-20 20:08:38 -07:00
Jose Diaz-Gonzalez
adc3b24ed7 docs: use node-js-app as sample app name
[ci skip]
2017-02-20 20:04:07 -07:00
Jose Diaz-Gonzalez
4026291572 SC2005: Useless echo? Instead of 'echo $(cmd)', just use 'cmd'. 2017-02-20 19:22:18 -07:00
Jose Diaz-Gonzalez
59f6ad9479 Correct docs for checks:report
[ci skip]
2017-02-20 19:07:10 -07:00
Jose Diaz-Gonzalez
dd4960f1ce refactor: move checks:help to internal-functions 2017-02-20 18:19:37 -07:00
Jose Diaz-Gonzalez
3b3eefcb73 refactor: deprecate the checks command in favor of checks:report 2017-02-20 18:19:37 -07:00
Jose Diaz-Gonzalez
cbcb720228 feat: implement checks:report command
Refs #2356
2017-02-20 18:19:31 -07:00
Jose Diaz-Gonzalez
d73c07de68 cleanup: move from apps to apps:list subcommand for tests and docs 2017-02-20 17:24:09 -07:00
Jose Diaz-Gonzalez
cd3e637387 refactor: move apps:help to internal-functions 2017-02-20 17:22:41 -07:00
Jose Diaz-Gonzalez
9614f7dca2 feat: implement apps:list
Also deprecate the `apps` command in favor of `apps:list`
2017-02-20 17:18:29 -07:00
Jose Diaz-Gonzalez
84fab30c09 refactor: move certs:help into internal-functions 2017-02-20 17:11:53 -07:00
Jose Diaz-Gonzalez
cb71d8a0be fix: clean up certs help output 2017-02-20 16:51:46 -07:00
Jose Diaz-Gonzalez
507ae1de33 fix: ensure certs:info doesn’t output error information when ssl files are missing 2017-02-20 16:50:38 -07:00
Jose Diaz-Gonzalez
dcb88226b5 refactor: ensure that certs:default and certs:info are deprecated in favor of certs:report
Refs #2356
2017-02-20 16:47:14 -07:00
Jose Diaz-Gonzalez
51217521e3 feat: add certs:report
Refs #2356
2017-02-20 16:39:43 -07:00
Jose Diaz-Gonzalez
05bf33805f Merge pull request #2504 from mbtamuli/apps_report_subcommand
Adds the `report` subcommand for all plugin
2017-02-20 13:56:45 -07:00
Jose Diaz-Gonzalez
3506c100c7 Merge branch 'master' into apps_report_subcommand 2017-02-20 13:55:37 -07:00
Jose Diaz-Gonzalez
8639d1768c Merge pull request #2586 from bevand10/patch-1
Behind-proxy support for herokuish install
2017-02-20 13:50:04 -07:00
Jose Diaz-Gonzalez
779d281c57 Merge pull request #2612 from dokku/2609-ensure-vhost-file-existence
Ensure VHOST files exist before executing commands against them
2017-02-20 13:49:03 -07:00
Jose Diaz-Gonzalez
815630ffe1 Merge pull request #2613 from emveeoh/patch-2
Update linode.md to reflect latest Linode.com process
2017-02-19 20:04:38 -05:00
Michael van Olden
189366097e Update linode.md to reflect latest Linode.com process
[ci skip]
Linode now supports KVM virtualization on all VMs by default. So, this verbiage was completely removed.
GRUB 2 is now one of the default options in the Kernel Menu. The additional Ubuntu packages are no longer required. Wording changed to reflect updated instructions.
2017-02-19 20:01:57 -05:00
Jose Diaz-Gonzalez
7c30babdec fix: Ensure VHOST files exist before executing commands against them
Closes #2609
2017-02-19 19:57:09 -05:00
Jose Diaz-Gonzalez
618395df5e Merge pull request #2605 from andyjeffries/master
Added information on SSL_CERT_FILE build failure
2017-02-15 11:52:08 -05:00
Jose Diaz-Gonzalez
ef7d913cd7 Merge branch 'master' into master 2017-02-15 11:52:00 -05:00
Andy Jeffries
daa8faa3aa Added information on SSL_CERT_FILE build failure 2017-02-15 16:08:02 +00:00
Jose Diaz-Gonzalez
336ffc9b09 Update functions 2017-02-05 13:39:49 -05:00
Michael Hobbs
44b48a55a5 Merge pull request #2594 from dokku/mh/chore/upgrade-herokuish
upgrade to herokuish v0.3.25
2017-02-01 16:45:06 -08:00
Michael Hobbs
0de2c28c92 upgrade to herokuish v0.3.25 2017-02-01 11:52:19 -08:00
Dave Bevan
4f8bea8f35 Merge branch 'master' into patch-1 2017-01-30 10:01:10 +00:00
Jose Diaz-Gonzalez
aae7401888 fix: always set a default ssl port for apps with ssl enabled
Closes #2535
2017-01-30 03:04:02 -05:00
Dave Bevan
96a0c2531d Update deb.mk
Updates as requested
2017-01-27 12:02:55 +00:00
Jose Diaz-Gonzalez
99378af668 Merge pull request #2587 from dokku/2494-custom-deploy-branch
Allow specifying the deploy branch via DOKKU_DEPLOY_BRANCH
2017-01-26 11:23:36 -07:00
Dave Bevan
9f9b3374bd Make docker build --build-args optional
Change the proxy-sensing --build-args such that they only added if defined.
2017-01-26 10:34:02 +00:00
Jose Diaz-Gonzalez
2efcbcc9bb Merge pull request #2588 from dokku/2466-vagrant-ssh-config
Clarify when the `~/.ssh/config` settings need to match `vagrant ssh-config output`
2017-01-26 00:46:57 -07:00
Jose Diaz-Gonzalez
7cac755c98 Clarify when the ~/.ssh/config settings need to match vagrant ssh-config output
Closes #2466

[ci skip]
2017-01-26 00:46:35 -07:00
Jose Diaz-Gonzalez
0aeee7ea28 Allow specifying the deploy branch via DOKKU_DEPLOY_BRANCH
Closes #2494
2017-01-26 00:32:23 -07:00
Dave Bevan
f393fa0442 Behind-proxy support for herokuish install
Inject http proxy envvars to docker build command to allow package installation behind corporate proxies.

These envvars (http_proxy and https_proxy) are standard, and usually configured via system-wide /etc/profile.d files.

In cases where these envvars are not configured, the additions appear to be mute and non-destructive.
2017-01-25 17:37:26 +00:00
Jose Diaz-Gonzalez
f24e777921 Merge pull request #2583 from dokku/jg-apps-clone
feat: implement application cloning
2017-01-24 11:37:38 -07:00
Jose Diaz-Gonzalez
c82c9562b6 fix: use correct check for skipping a rebuild 2017-01-24 02:54:26 -07:00
Jose Diaz-Gonzalez
d473c1635f docs: add a note about errors that can occur for non-generic config
[ci skip]
2017-01-23 12:03:16 -07:00
Jose Diaz-Gonzalez
33a7619eac Update commands
[ci skip]
2017-01-22 22:55:40 -07:00
Jose Diaz-Gonzalez
dd517a3dd1 Update application-management.md
[ci skip]
2017-01-22 22:55:28 -07:00
Jose Diaz-Gonzalez
143b4802c3 fix: use correct verb
[ci skip]
2017-01-22 22:55:09 -07:00
Jose Diaz-Gonzalez
a564eae9f1 feat: implement application cloning
Application cloning can be used to setup review applications based on an existing application. This is useful in CI/CD pipelines where a developer may wish to verify code in a custom environment without overwriting a shared staging environment.
2017-01-22 21:39:30 -07:00
Jose Diaz-Gonzalez
83bf99c8d0 Merge pull request #2580 from znz/fix-font-url
Fix font URL
2017-01-20 09:11:45 -07:00
Kazuhiro NISHIYAMA
5173145653 Fix font URL
It is broken since
a00a9219da (diff-d93d3d701f4e262a6177c91d4e0b9a36R10)
2017-01-20 23:47:07 +09:00
Jose Diaz-Gonzalez
1f0173ad7b Merge pull request #2578 from dokku/josegonzalez-patch-1
Require specific versions for dokku-maintained packages
2017-01-19 17:34:26 -07:00
Jose Diaz-Gonzalez
bdb38ceaa8 Require specific versions for dokku-maintained packages
Closes #2450

[ci skip]
2017-01-19 17:34:09 -07:00
Jose Diaz-Gonzalez
bb0c587fff Merge pull request #2576 from znz/remove-unused
Remove unused variable
2017-01-19 17:22:46 -07:00
Kazuhiro NISHIYAMA
fec2f8e38e Remove unused variable 2017-01-20 00:26:51 +09:00
Jose Diaz-Gonzalez
b0afcee389 Merge pull request #2573 from ebeigarts/parallel-recomends
Recommend parallel package for faster ps:restore
2017-01-18 02:44:56 -07:00
Edgars Beigarts
33c9bc9908 Recommend parallel package for faster ps:restore 2017-01-18 09:25:08 +02:00
Jose Diaz-Gonzalez
e233e916aa docs: move sponsors and backers section up 2017-01-16 15:43:12 -07:00
Jose Diaz-Gonzalez
eb5d4d0708 docs: move badges to newline
[ci skip]
2017-01-16 15:42:25 -07:00
Jose Diaz-Gonzalez
3a8e80c530 fix: use correct markup for link
[ci skip]
2017-01-16 15:38:35 -07:00
Jose Diaz-Gonzalez
c72d7e0686 Merge pull request #2475 from pranavgoel25/update-docs
Minor readme and sponsor changes
2017-01-16 15:37:53 -07:00
Jose Diaz-Gonzalez
5b92085c29 Merge branch 'master' into update-docs 2017-01-16 15:37:36 -07:00
Jose Diaz-Gonzalez
4e7b1c77e3 Merge pull request #2557 from dokku/dokku-cli-improvements
Dokku cli improvements
2017-01-16 15:32:11 -07:00
Jose Diaz-Gonzalez
e83f3e0011 Merge pull request #2570 from OmgImAlexis/master
add dokku report command for 0.4.10+
2017-01-16 00:56:31 -07:00
Alexis Tyler
b874692d06 add dokku report command for 0.4.10+ 2017-01-16 18:25:20 +10:30
Jose Diaz-Gonzalez
b7511829ad Merge pull request #2569 from OmgImAlexis/patch-1
Reload nginx after adding default vhost file
2017-01-16 00:49:55 -07:00
Alexis Tyler
f5f2a5f171 Reload nginx after creating default vhost file 2017-01-16 18:12:11 +10:30
Jose Diaz-Gonzalez
12500d7d3c Merge pull request #2566 from dokku/josegonzalez-patch-1
Move "new as of" note to correct section
2017-01-15 01:36:37 -07:00
Jose Diaz-Gonzalez
927d569db5 Move "new as of" note to correct section
Also move note up.

[ci skip]
2017-01-15 01:07:12 -07:00
Jose Diaz-Gonzalez
eec41bf4e7 Merge pull request #2565 from dokku/josegonzalez-patch-1
Update persistent storage to reference the sample app as normal
2017-01-15 01:05:21 -07:00
Jose Diaz-Gonzalez
f0ecac5998 Update persistent storage to reference the sample app as normal
[ci skip]
2017-01-15 01:05:08 -07:00
Jose Diaz-Gonzalez
feaaf4f4b0 Merge pull request #2564 from ka7/spelling
Spelling
2017-01-14 14:42:27 -07:00
klemens
e09d093239 spelling fixes 2017-01-14 22:38:27 +01:00
klemens
fc4b7ce0ee spelling fixes 2017-01-14 22:35:24 +01:00
Jose Diaz-Gonzalez
dbf0de9e65 Merge pull request #2500 from dokku/2479-jg-suppress-output-on-submodule-success
Suppress output unless the `git submodule update` call fails
2017-01-14 14:13:48 -07:00
Jose Diaz-Gonzalez
8497bd6d70 chore: remove extra newline
[ci skip]
2017-01-14 14:08:22 -07:00
Jose Diaz-Gonzalez
67f05b8eed fix: show error message when there is no DOKKU_REMOTE_HOST available 2017-01-14 14:02:14 -07:00
Jose Diaz-Gonzalez
0f5dec1797 refactor: rename variable usage to DOKKU_REMOTE_HOST
This allows us to make it a local variable
2017-01-14 14:00:21 -07:00
Jose Diaz-Gonzalez
24c4f25dd0 fix: set DOKKU_GIT_REMOTE to a default of dokku 2017-01-14 13:58:45 -07:00
Jose Diaz-Gonzalez
ab93fefd5b Merge pull request #2508 from OmarShehata/master
Add default functions for all commands
2017-01-13 22:37:29 -07:00
Jose Diaz-Gonzalez
e726bb1df8 Merge pull request #2519 from tkalus/tk-2474-dup_nginx_server_name
Fix for #2474
2017-01-13 22:34:17 -07:00
Jose Diaz-Gonzalez
a8abd40abe Merge pull request #2555 from dokku/2463-enhanced-restore
Skip failing applications when running ps:restore on boot
2017-01-13 17:30:01 -07:00
Jose Diaz-Gonzalez
06fa58ff47 chore: remove extra space
[ci skip]
2017-01-13 17:29:51 -07:00
Jose Diaz-Gonzalez
0de746da4e fix shellcheck issues 2017-01-13 16:20:13 -07:00
Jose Diaz-Gonzalez
24552f2b9b Merge pull request #2560 from ebeigarts/rpm-doc
Improve install documentation on CentOS
2017-01-12 09:51:59 -07:00
Edgars Beigarts
90510378c8 Improve install documentation on CentOS 2017-01-12 13:28:39 +02:00
Jose Diaz-Gonzalez
a22f6596dc Merge pull request #2554 from dokku/2480-add-ssl-ports
Add ssl ports when generating a self-signed certificate
2017-01-10 14:00:04 -07:00
Jose Diaz-Gonzalez
c216b3be7f feat: add support for --global flag when calling dokku domains 2017-01-09 02:34:48 -07:00
Jose Diaz-Gonzalez
6e00064cb3 fix: Properly parse flags in the dokku client
- Respect the --app flag
- Respect the --trace flag
- Skip the second argument after both --app and --remote flags
- The `--global` flag should be set as is when specified after a “valid” command
- Fix issues when checking if the --app flag should be passed via ssh
- Use APP as the variable name for the current app
2017-01-09 02:33:45 -07:00
Jose Diaz-Gonzalez
594b41cc70 fix: properly handle argument parsing when skip is set to true
Previously, using the --app flag would mean that we would stop properly parsing all proceeding flags, so the --app flag would only work when set last.
2017-01-09 02:13:52 -07:00
Jose Diaz-Gonzalez
9272e40178 fix: skip following argument when current argument is --app 2017-01-09 02:12:18 -07:00
Jose Diaz-Gonzalez
e107c19dbf chore: remove extra local declarations 2017-01-09 01:31:10 -07:00
Justin Clark
13c78e8e9a Add exceptions back to dokku_client.sh for plugins that should not be passed an app name implicitly 2017-01-09 01:30:49 -07:00
Jose Diaz-Gonzalez
5ddcf06ce9 feat: add the ability to specify a remote via the --remote flag
Closes #2523
2017-01-09 01:15:22 -07:00
Jose Diaz-Gonzalez
70f3e3407f chore: prefix functions with fn- 2017-01-09 00:44:13 -07:00
Jose Diaz-Gonzalez
332c429e31 refactor: make variables local and move them into correct functions 2017-01-09 00:37:54 -07:00
Jose Diaz-Gonzalez
b23c602079 chore: remove extra whitespace in client
[ci skip]
2017-01-09 00:36:35 -07:00
Jose Diaz-Gonzalez
13ef76127d Suppress output unless the git submodule update call fails
This will give a bit more warning to developers as to what might be going on, allowing them to respond appropriately.

Closes #2479
2017-01-08 22:04:14 -07:00
Jose Diaz-Gonzalez
0e0012cca1 fix: remove extra closing tag 2017-01-08 21:43:37 -07:00
Jose Diaz-Gonzalez
37a2edc558 Merge pull request #2556 from dokku/cleanup-fonts
docs: use slightly better font style for docs
2017-01-08 21:38:05 -07:00
Jose Diaz-Gonzalez
2629be5651 docs: use slightly better font style for docs
- switch to native fonts
- use smaller sidebar text
- set proper line-height

[ci skip]
2017-01-08 21:37:44 -07:00
Jose Diaz-Gonzalez
815c612261 feat: add support for using parallel to restore apps
By using parallel, we take advantage of the fact that a server may have multiple cores, thus enabling restores to complete faster.

Refs #2463
2017-01-08 20:49:14 -07:00
Jose Diaz-Gonzalez
831fdeb030 fix: allow ps_start to fail during a ps:restore
Instead of blocking the start of each app based on whether the previous app started, we simply log and continue.

Closes #2463
2017-01-08 20:17:23 -07:00
Jose Diaz-Gonzalez
bcfa60ae98 feat: save the ssl certificate to the APP_SSL_PATH
This allows later retrieval of the csr in cases where the developer forgot to save it locally.
2017-01-08 19:36:17 -07:00
Jose Diaz-Gonzalez
82c11a2b2c fix: call post-certs-update on the application before updating domains
This ensures that we set the proper ssl ports.

Closes #2480
Closes #2528
2017-01-08 19:35:49 -07:00
Jose Diaz-Gonzalez
a967990be7 chore: remove unnecessary cd in certs:add
This was used before we started using `plugn` for triggering subshell calls to dokku.
2017-01-08 19:35:04 -07:00
Jose Diaz-Gonzalez
87573b81bb Release 0.8.0 2017-01-08 17:22:30 -07:00
Jose Diaz-Gonzalez
66ef66644f Merge pull request #2553 from dokku/release
Release code
2017-01-08 16:55:14 -07:00
Jose Diaz-Gonzalez
e46b0952e2 feat: add release-related Dockerfiles
These two docker files are used to create deb and rpm packages which are later extracted and pushed to packagecloud.

[ci skip]
2017-01-08 16:49:41 -07:00
Jose Diaz-Gonzalez
6ab9e04ba6 fix: allow overriding both DOKKU_VERSION and GIT_REV via environment variables 2017-01-08 16:41:05 -07:00
Jose Diaz-Gonzalez
4740ee1edc Merge pull request #2552 from dokku/build-on-osx
Build on osx
2017-01-08 05:25:45 -07:00
Jose Diaz-Gonzalez
f3113296ee fix: ensure man-db is installed when generating man pages
[ci skip]
2017-01-08 05:25:30 -07:00
Jose Diaz-Gonzalez
6c8c4de398 feat: skip checking for /etc/os-release
On OSX, this file does not exist

[ci skip]
2017-01-08 05:25:30 -07:00
Michael Hobbs
6d5d919a06 Merge pull request #2544 from dokku/mh-update-herokuish
update herokuish to 0.3.29
2017-01-03 10:52:50 -08:00
Michael Hobbs
7af00ef744 update herokuish to 0.3.29 2017-01-03 09:36:37 -08:00
Jose Diaz-Gonzalez
5f86962c06 Merge pull request #2539 from ebeigarts/dokku-rm
Fix dokku-installer.service removal
2016-12-28 14:07:04 -07:00
Edgars Beigarts
171e9625f6 Fix dokku-installer.service removal 2016-12-28 07:32:19 +02:00
Jose Diaz-Gonzalez
1f91b33f46 Merge pull request #2518 from dokku/josegonzalez-patch-1
Use same check for dockerfile apps during a tar build
2016-12-23 02:25:28 -07:00
Jose Diaz-Gonzalez
e6bd877b48 Merge pull request #2533 from facundomedica/patch-1
Solution to problem related to firewall
2016-12-16 13:53:26 -05:00
facundomedica
127dd7334f Update troubleshooting.md 2016-12-16 15:52:19 -03:00
facundomedica
3f219a3f8e Solution to problem related to firewall
Resume: Ubuntu 16.04 seems to have the firewall enabled by default, which prohibits the access to apps.
Original issue: https://github.com/dokku/dokku/issues/2532
2016-12-16 15:17:36 -03:00
Jose Diaz-Gonzalez
fb5cc76585 Merge pull request #2531 from slava-vishnyakov/patch-1
Document rebuilding app after mounting storage
2016-12-15 10:50:07 -05:00
Slava Vishnyakov
c5117cb42f Update application-deployment.md 2016-12-15 18:48:22 +03:00
Slava Vishnyakov
4c86f88816 Update application-deployment.md 2016-12-15 18:47:58 +03:00
Slava Vishnyakov
f100a3ee4c Update application-deployment.md 2016-12-15 18:46:52 +03:00
Slava Vishnyakov
a53c61b4d8 Update persistent-storage.md 2016-12-15 18:46:16 +03:00
Slava Vishnyakov
88f37028a2 Update application-deployment.md 2016-12-15 17:15:38 +03:00
Slava Vishnyakov
42b1666fbe Update persistent-storage.md 2016-12-15 17:15:00 +03:00
Slava Vishnyakov
de9f495e2c storage needs deploy too 2016-12-15 14:22:52 +03:00
Slava Vishnyakov
cda2e3d048 Re-deploying/restarting 2016-12-15 14:19:41 +03:00
Mriyam Tamuli
49b01143a0 Correct apps:report to not exit if one app is not deployed 2016-12-11 13:26:07 +05:30
Jose Diaz-Gonzalez
991bb4d7f0 Merge pull request #2526 from dokku/mh-deploy-tasks-bug
actually fail deploy when app.json script fails
2016-12-09 17:45:15 -07:00
Michael Hobbs
c9a1a94cc1 actually fail deploy when app.json script fails 2016-12-09 15:10:07 -08:00
Jose Diaz-Gonzalez
819608b940 Merge pull request #2525 from OmarShehata/patch-1
Plugin-triggers typo: dokkku -> dokku
2016-12-09 02:47:44 -07:00
Omar Shehata
dda58a82f9 Plugin-triggers typo: dokkku -> dokku 2016-12-09 03:46:25 -06:00
Turtle Kalus
eae3d463df Fix for dokku/dokku#2474
`SSL_SERVER_NAME` should contain items found in the ssl certs
(E.G. CommonName and AltNames), but not already in the `NOSSL_SERVER_NAME`
list. That will avoid the dups in the `nginx.conf` and kill the warning
initially cited in dokku/dokku#2474
2016-12-07 23:43:30 +00:00
Jose Diaz-Gonzalez
8f816c3433 Merge pull request #2522 from stackforgehq/fix/2521
Docs: Fix #2521
2016-12-07 11:19:46 -07:00
Josh Manders
88f2dc7f60 Docs: Fix #2521 2016-12-06 21:04:37 -06:00
Jose Diaz-Gonzalez
da44c240d7 Use same check for dockerfile apps during a tar build 2016-12-04 15:20:09 -07:00
Jose Diaz-Gonzalez
cd2ae7ea92 Merge pull request #2517 from dokku/josegonzalez-patch-1
Update docs regarding if the ssh-keys plugin should be in use
2016-12-03 20:23:26 -07:00
Jose Diaz-Gonzalez
23c71c8d69 Update docs regarding if the ssh-keys plugin should be in use
[ci skip]
2016-12-03 20:23:19 -07:00
Omar Shehata
58d774a316 Added default for storage plugin to list 2016-12-03 19:38:48 +00:00
Omar Shehata
f2a4f61920 Added ssh-keys plugin default to list 2016-12-03 19:36:11 +00:00
Omar Shehata
1f47803324 Added certs plugin default to info 2016-12-03 19:27:49 +00:00
Omar Shehata
0062227c57 Revert "Added certs default help function"
This reverts commit d001fcc896.
2016-12-03 19:08:25 +00:00
Omar Shehata
010c89e810 Revert "Added ssh-keys default help function"
This reverts commit 74db5b9d3b.
2016-12-03 19:08:02 +00:00
Omar Shehata
0fed122a99 Revert "Added storage default help function"
This reverts commit 4294793452.
2016-12-03 19:07:34 +00:00
Jose Diaz-Gonzalez
21feb6874a Merge pull request #2511 from IlyaSemenov/default_site_docs
Clarify instructions for arranging default nginx site
2016-12-02 18:31:04 -07:00
Jose Diaz-Gonzalez
ec1b0b530f Merge pull request #2515 from sgloutnikov/dreamhost_doc_update
Update DreamHost Cloud install instructions.
2016-12-02 18:30:03 -07:00
Stefan Gloutnikov
71ee7e73a7 Update DreamHost Cloud install instructions. 2016-12-02 12:53:39 +02:00
Mriyam Tamuli
a574a6db1c Quotes unquoted variable 2016-12-02 00:00:10 +05:30
Ilya Semenov
d4b85999af Clarify instructions for arranging default nginx site 2016-12-01 13:21:57 +07:00
Mriyam Tamuli
45f8b8ccc8 Adds the report subcommand to the ps plugin 2016-12-01 11:39:18 +05:30
Jose Diaz-Gonzalez
f7479250c3 Merge pull request #2510 from IlyaSemenov/domains_set
Add domains:set and domains:set-global commands
2016-11-28 18:18:51 -07:00
Jose Diaz-Gonzalez
0f448748e8 Merge pull request #2495 from dokku/jg-2469-create-authorized-keys
Create the user's `authorized_keys` file if it does not exist
2016-11-28 13:53:49 -07:00
Jose Diaz-Gonzalez
d5a013a973 Merge pull request #2496 from dokku/jg-2435-nginx-http2-detection
Detect nginx versions that support HTTP/2 well
2016-11-28 13:12:49 -07:00
Ilya Semenov
6a9b3f6df2 Add domains:set and domains:set-global commands 2016-11-28 22:44:06 +07:00
Jose Diaz-Gonzalez
8398ff7a76 Merge pull request #2509 from kjschulz/master
Map dokku-community user in plugins.md
2016-11-27 21:36:05 -07:00
John Schulz
4070779d41 Merge branch 'master' into kjschulz-master 2016-11-27 23:34:36 -05:00
John Schulz
cce2a41db6 Forgot to map dokku-community github user.
[ci skip]
2016-11-27 23:34:08 -05:00
Jose Diaz-Gonzalez
15ee3b2e62 Merge pull request #2506 from simonkotwicz/minor-doc-fixes
fix some typos in deployment docs
2016-11-27 21:30:11 -07:00
Simon Kotwicz
86b5b71f28 fix some typos in deployment docs 2016-11-27 22:22:21 -05:00
Mriyam Tamuli
d04b0f7cca Use dokku helpers to output to stderr 2016-11-28 08:46:30 +05:30
Omar Shehata
4294793452 Added storage default help function 2016-11-28 03:06:30 +00:00
Jose Diaz-Gonzalez
8058252426 Merge pull request #2505 from kjschulz/master
Add Dokku Wordpress plugin to docs
2016-11-27 20:05:08 -07:00
Omar Shehata
810ba72879 Added nginx default help function 2016-11-28 03:03:30 +00:00
Omar Shehata
74db5b9d3b Added ssh-keys default help function 2016-11-28 02:59:32 +00:00
Omar Shehata
80e0bcc743 Merge branch 'master' of https://github.com/dokku/dokku 2016-11-28 02:56:37 +00:00
Jose Diaz-Gonzalez
6f91a34f74 Merge pull request #2507 from dokku/josegonzalez-patch-1
Update upgrade docs to point out sshcommand and plugn upgrading as well
2016-11-27 19:55:23 -07:00
Jose Diaz-Gonzalez
a1d3477345 docs: upgrade sshcommand and plugn as well
[ci skip]
2016-11-27 19:55:02 -07:00
Omar Shehata
d001fcc896 Added certs default help function 2016-11-28 02:53:46 +00:00
Mriyam Tamuli
8d60d071df Docs and help text for apps:report subcommand 2016-11-27 19:24:57 +05:30
John Schulz
f71611f5a1 Updated author name to dokku-community 2016-11-26 18:24:52 -05:00
John Schulz
0d54423618 Removing outdated dokku-wordpress-template plugin 2016-11-26 15:19:02 -05:00
John Schulz
fcba766a75 Add Dokku Wordpress plugin to docs. 2016-11-26 14:53:43 -05:00
Mriyam Tamuli
608cdcf3c1 Adds the report subcommand to the apps plugin 2016-11-26 22:37:54 +05:30
Jose Diaz-Gonzalez
b6f57b32b0 Merge pull request #2503 from mlebkowski/patch-2
update the dokku-acl link
2016-11-25 12:18:57 -07:00
Maciej Łebkowski
e4fee97d9b update the dokku-acl link 2016-11-25 16:03:44 +01:00
Jose Diaz-Gonzalez
0dfe92100f Update plugins.md
[ci skip]
2016-11-24 09:37:03 -07:00
Jose Diaz-Gonzalez
7a2c1ba3ec Merge pull request #2497 from stackforgehq/docs/change-features-heading
make features heading more clear [skip ci]
2016-11-24 09:36:27 -07:00
Josh Manders
72aa611d2a make features heading more clear [skip ci] 2016-11-22 18:35:26 -06:00
Jose Diaz-Gonzalez
7cfbdf34ec Merge pull request #2485 from znz/fix-domains-add-global
Fix bug when VHOST without newline
2016-11-21 22:10:10 -07:00
Jose Diaz-Gonzalez
334eabafb5 Merge pull request #2489 from stackforgehq/feature/plugin-uninstall-trigger
add plugin uninstall trigger
2016-11-21 22:09:36 -07:00
Jose Diaz-Gonzalez
50b1c9d5c6 Detect nginx versions that support HTTP/2 well
Certain versions of nginx have bugs that prevent HTTP/2 from properly responding to all clients, thus causing applications to be unavailable.

Closes #2435
2016-11-21 19:33:50 -07:00
Jose Diaz-Gonzalez
4e25639de4 Create the user's authorized_keys file if it does not exist
Closes #2469
2016-11-21 19:08:33 -07:00
Josh Manders
63817fc6f3 add warning 2016-11-20 17:49:02 -06:00
Jose Diaz-Gonzalez
970647b4ae Merge pull request #2378 from knjcode/skip_finish_process_when_checks_disabled
Skip container finish processing when zero downtime is disabled
2016-11-20 16:46:14 -07:00
Jose Diaz-Gonzalez
ef113a475c Merge pull request #2484 from nahtnam/patch-1
Update troubleshooting.md
2016-11-20 16:19:43 -07:00
Jose Diaz-Gonzalez
9abe7e2b75 Merge pull request #2492 from dokku/jg-2481-proxy-command
Fix iteration on all apps for `dokku proxy` command
2016-11-20 16:19:10 -07:00
Jose Diaz-Gonzalez
f5ea960de3 Merge pull request #2493 from dokku/minor-doc-fixes
Clarify checks documentation
2016-11-20 16:15:33 -07:00
Jose Diaz-Gonzalez
8d6f32e1e3 docs: reword zero downtime docs to make them flow better
[ci skip]
2016-11-20 16:12:26 -07:00
Jose Diaz-Gonzalez
d7bc6976ed docs: Mention that ports are ignored in CHECKS doc
Closes #2487

[ci skip]
2016-11-20 16:07:05 -07:00
Jose Diaz-Gonzalez
f6c072fa2b docs: remove extra output 2016-11-20 15:38:01 -07:00
Jose Diaz-Gonzalez
95239a5731 docs: remove unnecessary example 2016-11-20 15:37:21 -07:00
Jose Diaz-Gonzalez
9951a16ccc docs: standardize on node-js-app as the app name
We’ll probably want to update this to whatever the hip language of the day is, but for now, having the same reference everywhere works.
2016-11-20 15:37:05 -07:00
Jose Diaz-Gonzalez
7ac47d2e61 Fix iteration on all apps for dokku proxy command
Closes #2481
2016-11-20 15:15:40 -07:00
Josh Manders
d4475e582d pass plugin to uninstall 2016-11-17 16:06:57 -06:00
Josh Manders
c4c7886037 add plugin uninstall trigger 2016-11-17 12:55:08 -06:00
Jose Diaz-Gonzalez
c98ab6684f Merge pull request #2488 from stackforgehq/docs/bump-font-size
Docs: Bump font size
2016-11-15 12:33:48 -05:00
Josh Manders
434672a8dd bump font size 2016-11-15 11:17:12 -06:00
Jose Diaz-Gonzalez
f6a0c3d5f8 Merge pull request #2486 from OmarShehata/patch-1
Fixing typo & broken link in docs
2016-11-15 08:24:04 -07:00
Omar Shehata
729677c41a Fixing broken link
The old link seems to not exist anymore. Not sure if this is what's intended to be linked to, but seems like the closest thing.
2016-11-15 09:12:38 -06:00
Omar Shehata
6c10fd4c39 Fixing typo
Changed from "Move information" to  "More information"
2016-11-15 09:09:11 -06:00
Kazuhiro NISHIYAMA
ccc44b0c16 Fix bug when VHOST without newline 2016-11-14 22:21:41 +09:00
nahtnam
faaf81d6e9 Update troubleshooting.md
Add `killed` symptom to troubleshooting guide.
2016-11-12 22:05:05 -08:00
Jose Diaz-Gonzalez
d7c8e47e78 Merge pull request #2464 from sseemayer/master
Remove duplicate SSL hostnames
2016-11-08 10:53:35 -07:00
Jose Diaz-Gonzalez
39ced08b12 Merge pull request #2452 from mbtamuli/resolve_duplicate_ssh_key
Solves SSH Key problem when admin user already exists
2016-11-06 14:48:00 -07:00
Jose Diaz-Gonzalez
e62f35f207 Merge pull request #2477 from ebeigarts/dokku-redeploy
Fix dokku-redeploy systemd script to start only after docker
2016-10-31 01:53:56 -06:00
Edgars Beigarts
14833e22cb Fix dokku-redeploy systemd script to start only after docker
According to https://docs.docker.com/engine/admin/host_integration/#/systemd
it should use After=docker.service and it works at least on CentOS 7.
2016-10-31 09:49:49 +02:00
Jose Diaz-Gonzalez
9c5783215f Merge pull request #2406 from dokku/2252-trigger-post-create
Use apps_create method when renaming an application. Closes #2252
2016-10-29 21:16:55 -06:00
Jose Diaz-Gonzalez
180582df2e Merge pull request #2407 from dokku/2367-core-post-deploy
Move core post-deploy triggers to core-post-deploy
2016-10-29 21:16:45 -06:00
Jose Diaz-Gonzalez
255a533708 Merge pull request #2470 from fteychene/patch-1
Add new community plugin : Build hook
2016-10-29 21:16:28 -06:00
Jose Diaz-Gonzalez
2d70a10a14 Merge pull request #2465 from polettix/2446-add-ssh-keys
Patch GH #2446 "Adding a file with two ssh-key..."
2016-10-29 21:16:02 -06:00
Jose Diaz-Gonzalez
58e2391cdb Merge pull request #2454 from onbjerg/patch-1
Return exit 1 in config:get if no ENV file exists (#2447)
2016-10-29 21:14:33 -06:00
Jose Diaz-Gonzalez
ab51c3b4b4 Merge pull request #2419 from ebeigarts/centos
Support for CentOS 7
2016-10-29 21:14:14 -06:00
Pranav Goel
2e1d8def40 Update SPONSORS.md 2016-10-29 14:30:42 +05:30
Pranav Goel
efa88d0087 Update README.md 2016-10-29 14:29:28 +05:30
Jose Diaz-Gonzalez
a7e4b7e3c6 Merge pull request #2472 from mainto/patch-1
Update plugins.md
2016-10-27 08:12:20 -06:00
Deokhyun Ko
25e5db5a5b Update plugins.md
Added "Access" plugin
2016-10-27 05:39:43 -06:00
Francois Teychene
aca8d0c682 Add new community plugin
Add new community plugin build hook.
This plugin provide a way for application to define scripts in their codebase to be executed before the project build (Dockerfile or Herokuish).

Use case :
A Java application with only an ADD of the generated fat jar in the Dockerfile.
The plugin allow the user to define a script to run the compilation before the docker build execution.
2016-10-20 15:04:16 +02:00
Edgars Beigarts
65c2cffc6a Fix sshcommand on CentOS with sudo
CentOS 7 resets path with $ sudo by default

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
2016-10-19 17:25:54 +03:00
Flavio Poletti
a2bacd8096 Patch GH #2446 "Adding a file with two ssh-key..."
This is a proposed change for addressing GH #2446 "Adding a file with
two ssh-keys can result in an error" (see
https://github.com/dokku/dokku/issues/2446).

The following checks are performed:

- validity of key contents when read from a file
- key contents only contains one single line/key
- authorized_keys file is ultimately valid

The last test is an extension over the previous implementation in that
all lines in the file are checked.

The commit also includes extensions to the relevant test file to
excercise the new checks. It also takes care to save and then restore
the authorized_keys file.
2016-10-16 16:32:16 +02:00
Stefan Seemayer
030405b93d Remove duplicate SSL hostnames
Ref dokku/dokku-letsencrypt#76

Certificates provided by Let's Encrypt can have the domain provided in
the Subject Name field listed again in the Subject Alt Name fields,
leading to the same domain getting listed twice by get_ssl_hostnames()
that in turn leads to a duplicate server_name field in the nginx
configuration.

This patch adds a sort -u to ensure that every SSL hostname will only be
listed once.
2016-10-16 15:58:08 +02:00
Mriyam Tamuli
10bb4900c0 Correct indentation 2016-10-13 19:13:29 +05:30
Mriyam Tamuli
48b3dffecb Proper usernames 2016-10-13 15:55:59 +05:30
Mriyam Tamuli
056ff73c28 Proper usernames 2016-10-13 05:18:45 +05:30
John Doherty
62b5ca20df Added "Dokku setup using a Mac" steps
It would be great to add additional blocks for Windows and Linux
2016-10-11 00:33:01 +01:00
Jose Diaz-Gonzalez
3200c169f4 Expand the digitalocean documentation a bit
[ci skip]
2016-10-09 16:36:57 -06:00
Jose Diaz-Gonzalez
4f7e9d4d58 Clarify installation documentation.
[ci skip]
2016-10-09 16:34:24 -06:00
Oliver
d6443d7560 Return exit 1 in config:get if no ENV file exists 2016-10-08 19:15:39 +02:00
Mriyam Tamuli
35f1161453 Solves SSH Key problem when admin user already exists 2016-10-08 14:53:53 +05:30
Jose Diaz-Gonzalez
95dc3ca20e Merge pull request #2451 from mbtamuli/document_logs_plugin
Document the logs plugin
2016-10-07 18:42:05 -04:00
Mriyam Tamuli
28c29da166 Document the logs plugin 2016-10-08 04:05:51 +05:30
Jose Diaz-Gonzalez
c0d3b8c9a9 Merge pull request #2437 from vishnubhagwan/patch-1
Update installation.md
2016-09-29 10:29:23 -07:00
Michael Hobbs
1834ec8087 Merge pull request #2442 from znz/fix-is_tag_force_available
Fix `is_tag_force_available` bug when docker major version up
2016-09-29 07:55:50 -07:00
Kazuhiro NISHIYAMA
22c9441ddb Fix is_tag_force_available bug when docker major version up 2016-09-29 21:27:47 +09:00
vishnubhagwan
9018fee0e2 Update installation.md 2016-09-29 14:53:20 +05:30
vishnubhagwan
5ec1dea555 Update installation.md
Yep .... done as you said..
2016-09-29 14:31:21 +05:30
vishnubhagwan
6d002425bc Update installation.md
Removed bold sentence and blockquote remains
2016-09-29 00:52:16 +05:30
vishnubhagwan
93b47cb85f Update installation.md
Added blockquotes..
2016-09-29 00:33:29 +05:30
vishnubhagwan
b4cbaae757 Update installation.md 2016-09-28 23:53:57 +05:30
Jose Diaz-Gonzalez
11a945c86e Merge pull request #2433 from alexgleason/patch-2
Add robots.txt plugin to community docs
2016-09-27 12:59:31 -06:00
Alex Gleason
90f16945f1 Update plugins.md 2016-09-27 14:43:43 -04:00
Alex Gleason
f40e010ab0 Add robots.txt plugin to community docs 2016-09-26 17:18:50 -04:00
Edgars Beigarts
b771f0f809 Note the version when rpm will be added 2016-09-26 01:55:21 +03:00
Edgars Beigarts
f6488147bd Mention CentOS 7 in rpm docs 2016-09-26 01:55:21 +03:00
Edgars Beigarts
542f4dd430 Add RPM installation docs 2016-09-26 01:55:20 +03:00
Edgars Beigarts
288d72327d Add package_cloud instructions to release-process.md 2016-09-26 01:55:20 +03:00
Edgars Beigarts
7bf22df7c3 Use /etc/os-release that is more standartized 2016-09-26 01:55:20 +03:00
Edgars Beigarts
537906c504 Support CentOS in bootstrap.sh 2016-09-26 01:55:20 +03:00
Edgars Beigarts
dc879e2c4a Improve posinstall scripts with spellcheck 2016-09-26 01:55:20 +03:00
Edgars Beigarts
58f28c1aea Fix make lint 2016-09-26 01:55:20 +03:00
Edgars Beigarts
4e1a93224e No need to migrate old plugins on centos 2016-09-26 01:55:20 +03:00
Edgars Beigarts
0004dd53e1 Initial support for CentOS 7 2016-09-26 01:55:20 +03:00
Jose Diaz-Gonzalez
cf901c9bcc Merge pull request #2432 from dokku/josegonzalez-patch-1
Clarify DOKKU_SCALE docs
2016-09-25 12:27:55 -06:00
Jose Diaz-Gonzalez
b5cf371a55 Clarify DOKKU_SCALE docs
[ci skip]
2016-09-25 12:27:47 -06:00
Jose Diaz-Gonzalez
d433614f17 Move deployment tasks to post-deploy hook
As deployment tasks can fail due to non-dokku related issues, moving them to post-deploy will ensure that dokku does not accidentally orphan applications.

Closes #2367
2016-09-05 00:15:39 -04:00
Jose Diaz-Gonzalez
2fc3a09b41 Move post-deploy trigger to core-post-deploy. Refs #2367
This avoids issues where community plugins may break core commands because of issues in the command output.
2016-09-05 00:04:06 -04:00
Jose Diaz-Gonzalez
67705afe3c Use apps_create method when renaming an application. Closes #2252
Since they are separate resources, triggering the normal app creation flow makes the most sense.

We still remove the cache directory because we want the correct cache permissions for the new application.
2016-09-04 19:26:00 -04:00
knjcode
8200348f3c Skip container finish processing when zero downtime is disabled 2016-08-29 20:26:49 +09:00
276 changed files with 7498 additions and 1321 deletions

8
.dockerignore Normal file
View File

@@ -0,0 +1,8 @@
*Dockerfile
.dockerignore
.git
.vagrant
contrib
docs
tests
!contrib/dokku-installer.py

View File

@@ -14,3 +14,8 @@ indent_size = 4
insert_final_newline = true
indent_style = tab
indent_size = 4
[*.go]
insert_final_newline = true
indent_style = space
indent_size = 4

1
.gitignore vendored
View File

@@ -1,4 +1,5 @@
*.deb
*.rpm
.DS_Store
.ruby-version
.vagrant

9
.stickler.yml Normal file
View File

@@ -0,0 +1,9 @@
linters:
shellcheck:
shell: bash
exclude: SC2034
golint:
files:
ignore:
- './debian/*'

View File

@@ -55,7 +55,7 @@ doesn't already include that problem or suggestion before submitting an issue.
If you find a match, add a quick "+1" or "I have this problem too." Doing this
helps prioritize the most common problems and requests.
When reporting issues, please include your host OS (Ubuntu 14.04, Fedora 19,
When reporting issues, please include your host OS (Ubuntu 14.04, CentOS 7,
etc). Please include:
* The output of `uname -a`.

View File

@@ -1,5 +1,273 @@
# History
## 0.10.3
### Bug Fixes
- #2832: @josegonzalez fix: use python2.7 binary instead of python2 binary
## 0.10.2
### New Features
- #2827: @josegonzalez feat: allow installation of openresty instead of nginx
## 0.10.1
### Bug Fixes
- #2826: @josegonzalez Fix HISTORY.md generator
## 0.10.0
### Bug Fixes
- #2820: @josegonzalez Require netcat in debian packaging
- #2774: @fruitl00p Include docker-options in the default `dokku`
- #2778: @zarqman Fix /etc/logrotate.d/dokku on debian
- #2747: @ebeigarts Update herokuish base image on updates using --pull
- #2739: @josegonzalez Use listener_port in nginx.conf.sigil
- #2735: @josegonzalez Ensure we can call ps:report without specifying an application
- #2733: @josegonzalez Add support for new docker package names
- #2730: @weyert Ignore the cache directory when cloning an app
- #2723: @weyert Call non-deprecated plugin:list method
### New Features
- #2822: @josegonzalez refactor: allow skipping cleanup on a per-application basis
- #2754: @fzerorubigd Add support for set DOKKU_IMAGE per app
- #2815: @markstory Add stickler-ci configuration.
- #2809: @oliw Remove aufs step from Makefile
- #2785: @josegonzalez Add a release-plugin binary
- #2777: @stokarenko Turn on ps-post-stop hook.
- #2781: @fruitl00p Adds docker.io support
- #2766: @josegonzalez Upgrade to herokuish 0.3.29
- #2765: @josegonzalez Install python3-software-properties as an alternative to python-software-properties
- #2642: @chiedo Added better default nginx error pages
- #2678: @callahad Default to secure PCI-compliant SSL setup
- #2734: @josegonzalez Allow quieter report output
### Documentation
- #2803: @iSDP Adding related articles on the Docker Image Deployment page
- #2798: @znz Update CURL_CONNECT_TIMEOUT in docs
- #2795: @josegonzalez docs: Add documentation around adding build-time configuration variables
- #2791: @yazinsai Correct typo in persistent storage docs
- #2789: @h4ckninja Subject-verb agreement
- #2790: @flyinggrizzly Add entry for insecure connection issue in Rails
- #2788: @josegonzalez Flesh out uninstallation documentation
- #2784: @josegonzalez Document special dokku environment variables
- #2773: @znz Update year in footer [ci skip]
- #2768: @znz Ubuntu 12.04 is EOL
- #2769: @lucianopf Fix SlackButton for mobile devices.
- #2763: @ZiadSalah Update vagrant documentation for windows users
- #2764: @joshmanders Create PULL_REQUEST_TEMPLATE.md
- #2758: @AxelTheGerman Update doc location for dokku-git-rev community plugin
- #2757: @nodanaonlyzuul Fix typo from "To use a dockerfiles" to "To use a dockerfile" singular
- #2753: @abrkn Use short-hand method for shutting down all applications in upgrade docs
- #2746: @josegonzalez Add redirect for installation to advanced install docs
- #2738: @josegonzalez Add missing `NO_SSL_SERVER_NAME` to example template
- #2457: @john-doherty Update Digitalocean installation instructions
- #2725: @timaschew Fix typo in application management docs
- #2719: @joshco Clarify that nginx.conf.sigil must be committed to repository
- #2715: @josegonzalez Use urls that are linkable on github
## 0.9.4
### Documentation
- #2710: @josegonzalez Quiet output for git-related commands
## 0.9.3
### Bug Fixes
- #2706: @josegonzalez fix: ensure nginx conf.d directory exists when running nginx install hook
- #2701: @scjody Set SSH_USER for root commands
### New Features
- #2708: @josegonzalez Document that we will not do buildpack support in the issue tracker
### Documentation
- #2709: @michaelshobbs increase CURL_TIMEOUT and CURL_CONNECT_TIMEOUT defaults
- #2699: @mbreit Add support for git >= 2.11
## 0.9.2
### New Features
- #2698: @josegonzalez docs: Document that we only care about specific sections
- #2697: @callahad Restore installer note regarding AUFS on Linode
- #2694: @scjody Add documentation note re: git-pre-pull vs. auth
### Documentation
- #2695: @michaelshobbs add tests for pre/post deploy tasks
## 0.9.1
### Bug Fixes
- #2693: @josegonzalez fix: explicitly chown data and data/storage directories
## 0.9.0
### Bug Fixes
- #2691: @josegonzalez Fix package building when golang binaries are available
- #2671: @znz Fix variable name
- #2672: @callahad Fix logrotate on Debian
- #2666: @josegonzalez Use correct flag for build arguments when installing herokuish
- #2664: @pvalentim Fix remote name when using --remote option with apps:create
### New Features
- #2689: @mbreit Add dokku-monit to community plugin list
- #2683: @josegonzalez Ensure we have an example for adding keys as another user
- #2682: @josegonzalez Clarify supported stanzas in app.json
- #2679: @callahad Remove unnecessary Linode-specific instructions
- #2670: @znz Remove duplicated `(i.e. `
### Documentation
- #2685: @josegonzalez Pass shellcheck on os x
- #2677: @callahad Prefer HTTP2 to SPDY in nginx-vhosts
- #2673: @michaelshobbs Update to herokuish 0.3.27
- #2674: @michaelshobbs Update sshcommand to 0.7.0
- #2654: @ebeigarts Enable nginx and docker on system startup when using bootstrap.sh on CentOS
- #2546: @michaelshobbs Convert repo plugin to golang
## 0.8.2
### New Features
- #2660: @josegonzalez allow installation of plugins via tarball
- #2661: @josegonzalez Do not run builds in quiet mode
## 0.8.1
### Bug Fixes
- #2519: @tkalus Further guard against duplicate ssl server names
- #2554: @josegonzalez Add ssl ports when generating a self-signed certificate
- #2555: @josegonzalez Skip failing applications when running ps:restore on boot
- #2576: @znz Remove unused variable
- #2592: @josegonzalez always set a default ssl port for apps with ssl enabled
- #2612: @josegonzalez Ensure VHOST files exist before executing commands against them
- #2647: @josegonzalez Properly escape post-install variables
- #2650: @josegonzalez Fix help output for nginx and ssh-keys
- #2656: @josegonzalez ensure we can call the report subcommand without an app while specifying flags
- d79a79: @josegonzalez bail early when checking ps output for an undeployed app
### New Features
- #2500: @josegonzalez Suppress output unless the `git submodule update` call fails
- #2504: @mbtamuli Implement apps:report and storage:report
- #2508: @OmarShehata Add default functions for all commands
- #2557: @josegonzalez Dokku cli improvements
- #2573: @ebeigarts Recommend parallel package for faster ps:restore
- #2578: @josegonzalez Require specific versions for dokku-maintained packages
- #2583: @josegonzalez Implement apps:clone subcommand
- #2586: @bevand10 Add http-proxy support for deb-herokuish installs
- #2587: @josegonzalez Allow specifying the deploy branch via DOKKU_DEPLOY_BRANCH
- #2594: @michaelshobbs Upgrade to herokuish v0.3.25
- #2615: @josegonzalez Implement certs:report
- #2616: @josegonzalez Replace apps:default subcommand with apps:list
- #2617: @josegonzalez Implement checks:report
- #2618: @josegonzalez Implement docker-options:report and storage:report
- #2619: @josegonzalez Call ssh-keys:help from ssh-keys:default
- #2620: @josegonzalez Implement domains:report and proxy:report
- #2622: @raphaklaus Allow file names with multiple dots in certs:add command
- #2634: @michaelshobbs Update herokuish to 0.3.26
- #2657: @josegonzalez Add post-extract plugin trigger
### Documentation
- #2475: @pranavgoel25 Minor readme and sponsor changes
- #2556: @josegonzalez Use slightly better font style for docs
- #2560: @ebeigarts Improve install documentation on CentOS
- #2564: @ka7 Fix spelling mistakes
- #2565: @josegonzalez Update persistent storage to reference the sample app as normal
- #2566: @josegonzalez Move "new as of" note in storage docs to correct section
- #2569: @OmgImAlexis Reload nginx after adding default vhost file
- #2570: @OmgImAlexis Update ISSUE_TEMPLATE.md to reference `dokku report` command
- #2580: @znz Fix font URL
- #2588: @josegonzalez Clarify when the `~/.ssh/config` settings need to match `vagrant ssh-config output`
- #2605: @andyjeffries Documented build failures when using SSL_CERT_FILE environment variable
- #2613: @emveeoh Update Linode installation instructions for new GRUB 2 Linode boot option
- #2626: @znz Update apps:help example command
- #2629: @znz Update certs:help output for certs:default subcommand
- #2633: @drpoggi Reference the x-forwarded headers in correct order
- #2637: @josegonzalez Add documentation surrounding flags that ps:report accepts
- #2638: @fwolfst Improve README links
- #2639: @joshco Add documentation for how to grant other Unix accounts Dokku access
- #2648: @josegonzalez Note that the remote username is important
- #2659: @jfw Minor clarifications to application deployment tutorial
## 0.8.0
The big kahuna. Lots of documentation changes, and a few bug fixes to make Dokku development a bit easier.
CentOS 7 users will be happy to see that we now have experimental support for your operating system. Huge thanks to @ebeigarts for working on that feature :)
Thanks to all the contributors who helped with this release!
### Bug Fixes
- #2407: @josegonzalez Move core post-deploy triggers to core-post-deploy
- #2442: @znz Fix `is_tag_force_available` bug when docker major version up
- #2452: @mbtamuli Solves SSH Key problem when admin user already exists
- #2454: @onbjerg Return exit 1 in config:get if no ENV file exists
- #2464: @sseemayer Remove duplicate SSL hostnames
- #2465: @polettix Fix issue when importing ssh-keys
- #2477: @ebeigarts Fix dokku-redeploy systemd script to start only after docker
- #2485: @znz Fix bug when VHOST file is missing newline
- #2492: @josegonzalez Fix iteration on all apps for `dokku proxy` command
- #2495: @josegonzalez Create the user's `authorized_keys` file if it does not exist
- #2496: @josegonzalez Detect nginx versions that support HTTP/2 well
- #2518: @josegonzalez Use same check for dockerfile apps during a tar build
- #2526: @michaelshobbs Actually fail deploy when app.json script fails
- #2539: @ebeigarts Fix dokku-installer.service removal
### New Features
- #2378: @knjcode Skip container finish processing when zero downtime is disabled
- #2406: @josegonzalez Use apps_create method when renaming an application
- #2419: @ebeigarts Support for CentOS 7
- #2489: @joshmanders Add plugin uninstall trigger
- #2510: @IlyaSemenov Add domains:set and domains:set-global commands
- #2544: @michaelshobbs Update herokuish to 0.3.24
- #2552: @josegonzalez Allow package building on OSX
- #2553: @josegonzalez Add release-related Dockerfiles
### Documentation
- #2432: @josegonzalez Clarify DOKKU_SCALE docs
- #2433: @alexgleason Add robots.txt plugin to community docs
- #2437: @vishnubhagwan Fix warning in installation docs
- #2451: @mbtamuli Document the logs plugin
- #2470: @fteychene Add build-hook to plugins doc
- #2472: @mainto Add dokku-access to plugins doc
- #2484: @nahtnam Document build issues when a `Killed` message is displayed
- #2486: @OmarShehata Fixing typo & broken link in docs
- #2488: @joshmanders Bump font size in documentation
- #2493: @josegonzalez Clarify checks documentation
- #2497: @joshmanders Make features heading more clear
- #2503: @mlebkowski Update dokku-acl plugin link
- #2505: @kjschulz Add Dokku Wordpress plugin to docs
- #2506: @simonkotwicz Fix typos in deployment docs
- #2507: @josegonzalez Update upgrade docs to point out sshcommand and plugn upgrading as well
- #2509: @kjschulz Map dokku-community user in plugins
- #2511: @IlyaSemenov Clarify instructions for arranging default nginx site
- #2515: @sgloutnikov Update DreamHost Cloud install instructions
- #2517: @josegonzalez Update docs regarding if the ssh-keys plugin should be in use
- #2522: @joshmanders Ensure install documentation can be run via copy-paste
- #2525: @OmarShehata Plugin-triggers typo: dokkku -> dokku
- #2531: @slava-vishnyakov Document rebuilding app after mounting storage
- #2533: @facundomedica Document potential firewall problem on Ubuntu 16.04
## 0.7.2
This minor release contains mostly documentation changes, and should be fully backwards compatible with previous 0.7.x releases.
@@ -962,7 +1230,7 @@ Thanks to the *many* contributors for making this release our best release so fa
- #1473: @josegonzalez Handle crashing containers by using restart=on-failure policy
- #1476: @michaelshobbs Support static nginx port when deploying without an application VHOST
- #1476: nginx proxy without VHOST
- #1477: @arthurschreiber Support removing config variables that contain `\n`.
- #1477: @arthurschreiber Support removing config variables containing newlines.
### Documentation
@@ -1108,7 +1376,7 @@ This release pegs Dokku to Docker 1.6.2. Docker 1.7.0 introduced changes in `doc
### New Features
- #1245: @arthurschreiber Support config variables containing `\n`
- #1245: @arthurschreiber Support config variables containing newlines
- #1257: @josegonzalez Split nginx ssl logs by $APP
### Bug Fixes

View File

@@ -1,8 +1,12 @@
> If you need help figuring out how to use a specific buildpack, or are having issues using multiple buildpacks, please see our [irc or slack channels](http://dokku.viewdocs.io/dokku/getting-started/where-to-get-help/#the-irc-and-slack-channels). Issues pertaining to buildpacks may be closed and locked.
Description of problem:
Output of the following commands
<!-- If you're running 0.4.10+ just use dokku report-->
- `uname -a`:
- `free -m`:
- `docker version`:

View File

@@ -1,13 +1,14 @@
DOKKU_VERSION = master
DOKKU_VERSION ?= master
SSHCOMMAND_URL ?= https://raw.githubusercontent.com/dokku/sshcommand/v0.6.0/sshcommand
PLUGN_URL ?= https://github.com/dokku/plugn/releases/download/v0.2.2/plugn_0.2.2_linux_x86_64.tgz
PLUGN_URL ?= https://github.com/dokku/plugn/releases/download/v0.3.0/plugn_0.3.0_linux_x86_64.tgz
SIGIL_URL ?= https://github.com/gliderlabs/sigil/releases/download/v0.4.0/sigil_0.4.0_Linux_x86_64.tgz
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest
DOKKU_LIB_ROOT ?= /var/lib/dokku
PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/plugins
CORE_PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/core-plugins
PLUGIN_MAKE_TARGET ?= build-in-docker
# If the first argument is "vagrant-dokku"...
ifeq (vagrant-dokku,$(firstword $(MAKECMDGOALS)))
@@ -23,10 +24,13 @@ else
BUILD_STACK_TARGETS = build-in-docker
endif
.PHONY: all apt-update install version copyfiles man-db plugins dependencies sshcommand plugn docker aufs stack count dokku-installer vagrant-acl-add vagrant-dokku
include common.mk
.PHONY: all apt-update install version copyfiles man-db plugins dependencies sshcommand plugn docker aufs stack count dokku-installer vagrant-acl-add vagrant-dokku go-build
include tests.mk
include deb.mk
include rpm.mk
include arch.mk
all:
@@ -34,18 +38,39 @@ all:
install: dependencies version copyfiles plugin-dependencies plugins
release: deb-all package_cloud packer
release: deb-all rpm-all package_cloud packer
package_cloud:
package_cloud push dokku/dokku/ubuntu/trusty herokuish*.deb
package_cloud push dokku/dokku/ubuntu/trusty sshcommand*.deb
package_cloud push dokku/dokku/ubuntu/trusty plugn*.deb
package_cloud push dokku/dokku/ubuntu/trusty dokku*.deb
package_cloud push dokku/dokku/el/7 herokuish*.rpm
package_cloud push dokku/dokku/el/7 sshcommand*.rpm
package_cloud push dokku/dokku/el/7 plugn*.rpm
package_cloud push dokku/dokku/el/7 dokku*.rpm
packer:
packer build contrib/packer.json
go-build:
basedir=$(PWD); \
for dir in plugins/*; do \
if [ -e $$dir/Makefile ]; then \
$(MAKE) -e -C $$dir $(PLUGIN_MAKE_TARGET) || exit $$? ;\
fi ;\
done
go-clean:
basedir=$(PWD); \
for dir in plugins/*; do \
if [ -e $$dir/Makefile ]; then \
$(MAKE) -e -C $$dir clean ;\
fi ;\
done
copyfiles:
$(MAKE) go-build || exit 1
cp dokku /usr/local/bin/dokku
mkdir -p ${CORE_PLUGINS_PATH} ${PLUGINS_PATH}
rm -rf ${CORE_PLUGINS_PATH}/*
@@ -57,21 +82,29 @@ copyfiles:
rm -rf ${CORE_PLUGINS_PATH}/$$plugin && \
rm -rf ${PLUGINS_PATH}/$$plugin && \
cp -R plugins/$$plugin ${CORE_PLUGINS_PATH}/available && \
rm -rf ${CORE_PLUGINS_PATH}/available/$$plugin/src && \
ln -s ${CORE_PLUGINS_PATH}/available/$$plugin ${PLUGINS_PATH}/available; \
find /var/lib/dokku/ -xtype l -delete;\
PLUGIN_PATH=${CORE_PLUGINS_PATH} plugn enable $$plugin ;\
PLUGIN_PATH=${PLUGINS_PATH} plugn enable $$plugin ;\
done
done
ifndef SKIP_GO_CLEAN
$(MAKE) go-clean
endif
chown dokku:dokku -R ${PLUGINS_PATH} ${CORE_PLUGINS_PATH} || true
$(MAKE) addman
addman: help2man
addman: help2man man-db
mkdir -p /usr/local/share/man/man1
help2man -Nh help -v version -n "configure and get information from your dokku installation" -o /usr/local/share/man/man1/dokku.1 dokku
mandb
version:
ifeq ($(DOKKU_VERSION),master)
git describe --tags > ~dokku/VERSION 2> /dev/null || echo '~${DOKKU_VERSION} ($(shell date -uIminutes))' > ~dokku/VERSION
else
echo $(DOKKU_VERSION) > ~dokku/VERSION
endif
plugin-dependencies: plugn
sudo -E dokku plugin:install-dependencies --core
@@ -104,7 +137,7 @@ sigil:
wget -qO /tmp/sigil_latest.tgz ${SIGIL_URL}
tar xzf /tmp/sigil_latest.tgz -C /usr/local/bin
docker: aufs
docker:
apt-get install -qq -y curl
egrep -i "^docker" /etc/group || groupadd docker
usermod -aG docker dokku
@@ -116,11 +149,6 @@ endif
sleep 2 # give docker a moment i guess
endif
aufs:
ifndef CI
lsmod | grep aufs || modprobe aufs || apt-get install -qq -y linux-image-extra-`uname -r` > /dev/null
endif
stack:
ifeq ($(shell test -e /var/run/docker.sock && touch -c /var/run/docker.sock && echo $$?),0)
ifdef BUILD_STACK

1
PULL_REQUEST_TEMPLATE.md Normal file
View File

@@ -0,0 +1 @@
**Note:** If this PR is just doc changes, please put [ci skip] in the body that way tests do not run.

View File

@@ -1,39 +1,16 @@
# Dokku [![Build Status](https://img.shields.io/circleci/project/dokku/dokku/master.svg?style=flat-square "Build Status")](https://circleci.com/gh/dokku/dokku/tree/master) [![Ubuntu Package](https://img.shields.io/badge/package-ubuntu-brightgreen.svg?style=flat-square "Ubuntu Package")](https://packagecloud.io/dokku/dokku) [![Arch Package](https://img.shields.io/badge/package-arch-brightgreen.svg?style=flat-square "Arch Package")](https://aur.archlinux.org/packages/dokku/) [![IRC Network](https://img.shields.io/badge/irc-freenode-blue.svg?style=flat-square "IRC Freenode")](https://webchat.freenode.net/?channels=dokku) [![Slack Group](https://img.shields.io/badge/irc-slack-blue.svg?style=flat-square "Slack Group")](https://glider-slackin.herokuapp.com/) [![Documentation](https://img.shields.io/badge/docs-viewdocs-blue.svg?style=flat-square "Viewdocs")](http://dokku.viewdocs.io/dokku/)
# Dokku
[![Build Status](https://img.shields.io/circleci/project/dokku/dokku/master.svg?style=flat-square "Build Status")](https://circleci.com/gh/dokku/dokku/tree/master)
[![Ubuntu Package](https://img.shields.io/badge/package-ubuntu-brightgreen.svg?style=flat-square "Ubuntu Package")](https://packagecloud.io/dokku/dokku)
[![Arch Package](https://img.shields.io/badge/package-arch-brightgreen.svg?style=flat-square "Arch Package")](https://aur.archlinux.org/packages/dokku/)
[![IRC Network](https://img.shields.io/badge/irc-freenode-blue.svg?style=flat-square "IRC Freenode")](https://webchat.freenode.net/?channels=dokku)
[![Slack Group](https://img.shields.io/badge/irc-slack-blue.svg?style=flat-square "Slack Group")](https://glider-slackin.herokuapp.com/)
[![Documentation](https://img.shields.io/badge/docs-viewdocs-blue.svg?style=flat-square "Viewdocs")](http://dokku.viewdocs.io/dokku/)
[![OpenCollective](https://opencollective.com/dokku/sponsors/badge.svg?style=flat-square)](#sponsors)
[![OpenCollective](https://opencollective.com/dokku/backers/badge.svg?style=flat-square)](#backers)
[![Gratipay](https://img.shields.io/gratipay/dokku.svg?style=flat-square)](https://gratipay.com/dokku/)
Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen.
## Requirements
- A fresh VM running `Debian 8.2 x64`, `Ubuntu 14.04 x64`, or `Ubuntu 16.04 x64`
## Installing
To install the latest stable release, you can run the following commands as a user that has access to `sudo`:
wget https://raw.githubusercontent.com/dokku/dokku/v0.7.2/bootstrap.sh
sudo DOKKU_TAG=v0.7.2 bash bootstrap.sh
### Upgrading
[View the docs for upgrading](http://dokku.viewdocs.io/dokku/getting-started/upgrading/) from an older version of Dokku.
## Documentation
Full documentation - including advanced installation docs - are available online at [docs](http://dokku.viewdocs.io/dokku/)
## Support
You can use [Github Issues](https://github.com/dokku/dokku/issues), check [Troubleshooting](http://dokku.viewdocs.io/dokku/getting-started/troubleshooting/) in the documentation, or join us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku)
## Contribution
After checking [Github Issues](https://github.com/dokku/dokku/issues), the [Troubleshooting Guide](http://dokku.viewdocs.io/dokku/getting-started/troubleshooting/) or having a chat with us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku), feel free to fork and create a Pull Request.
While we may not merge your PR as is, they serve to start conversations and improve the general Dokku experience for all users.
## Sponsors
See our list of past sponsors in the [SPONSORS](https://github.com/dokku/dokku/blob/master/SPONSORS.md) file.
@@ -107,6 +84,47 @@ Support us with a monthly donation and help us continue our activities. [[Become
<a href="https://opencollective.com/dokku/backer/28/website" target="_blank"><img src="https://opencollective.com/dokku/backer/28/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/29/website" target="_blank"><img src="https://opencollective.com/dokku/backer/29/avatar.svg"></a>
## Requirements
A fresh VM running any of the following operating systems:
- Ubuntu 16.04 x64
- Ubuntu 14.04 x64
- Debian 8.2 x64
- CentOS 7 x64 *(experimental)*
- Arch Linux x64 *(experimental)*
## Installation
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.10.3/bootstrap.sh
sudo DOKKU_TAG=v0.10.3 bash bootstrap.sh
```
You can then proceed to the ip address or domain name associated with your server to complete the web-based installation.
If you wish for a more unattended installation method, see [these](http://dokku.viewdocs.io/dokku/getting-started/install/debian/#unattended-installation) docs.
### Upgrade
[View the docs](http://dokku.viewdocs.io/dokku/getting-started/upgrading/) for upgrading from an older version of Dokku.
## Documentation
Full documentation - including advanced installation docs - are available online at [http://dokku.viewdocs.io/dokku/](http://dokku.viewdocs.io/dokku/).
## Support
You can use [Github Issues](https://github.com/dokku/dokku/issues), check [Troubleshooting](http://dokku.viewdocs.io/dokku/getting-started/troubleshooting/) in the documentation, or join us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku).
## Contribution
After checking [Github Issues](https://github.com/dokku/dokku/issues), the [Troubleshooting Guide](http://dokku.viewdocs.io/dokku/getting-started/troubleshooting/) or having a chat with us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku), feel free to fork and create a Pull Request.
While we may not merge your PR as is, they serve to start conversations and improve the general Dokku experience for all users.
## License
[MIT License](https://github.com/dokku/dokku/blob/master/LICENSE) © Jeff Lindsay

View File

@@ -1,3 +1,5 @@
#Sponsors
[Deis](http://deis.io)
[DigitalOcean](https://www.digitalocean.com/)

11
Vagrantfile vendored
View File

@@ -76,13 +76,22 @@ Vagrant::configure("2") do |config|
vm.vm.provision :shell, :inline => "cd /root/dokku && make install-from-deb"
end
config.vm.define "dokku-rpm", autostart: false do |vm|
vm.vm.box = "centos/7"
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
vm.vm.hostname = "#{DOKKU_DOMAIN}"
vm.vm.network :private_network, ip: DOKKU_IP
vm.vm.provision :shell, :inline => "cd /root/dokku && bash bootstrap.sh"
end
config.vm.define "build", autostart: false do |vm|
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
vm.vm.hostname = "#{DOKKU_DOMAIN}"
vm.vm.network :private_network, ip: DOKKU_IP
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update > /dev/null && apt-get -qq -y install git > /dev/null && cd /root/dokku && #{make_cmd}"
vm.vm.provision :shell, :inline => "export IS_RELEASE=true && cd /root/dokku && make deb-all"
vm.vm.provision :shell, :inline => "export IS_RELEASE=true && cd /root/dokku && make deb-all rpm-all"
end
config.vm.define "build-arch", autostart: false do |vm|

View File

@@ -22,7 +22,11 @@ arch-setup:
arch-dokku: arch-setup
echo "-> Update package sums, create metadata file and test the build of the package"
ifeq ($(DOKKU_VERSION),master)
git describe --tags > /tmp/VERSION
else
echo $(DOKKU_VERSION) > /tmp/VERSION
endif
cat /tmp/VERSION | cut -d '-' -f 1 | cut -d 'v' -f 2 > /tmp/STABLE_VERSION
sed -i -e "s/pkgver=.*/pkgver=`cat /tmp/STABLE_VERSION`/" /dokku-arch/PKGBUILD
cd /dokku-arch; updpkgsums; mksrcinfo; makepkg -fd

View File

@@ -14,10 +14,6 @@ set -eo pipefail; [[ $TRACE ]] && set -x
ensure-environment() {
local FREE_MEMORY
echo "Preparing to install $DOKKU_TAG from $DOKKU_REPO..."
if ! command -v apt-get &>/dev/null; then
echo "This installation script requires apt-get. For manual installation instructions, consult http://dokku.viewdocs.io/dokku/advanced-installation/"
exit 1
fi
hostname -f > /dev/null 2>&1 || {
echo "This installation script requires that you have a hostname set for the instance. Please set a hostname for 127.0.0.1 in your /etc/hosts"
@@ -33,10 +29,12 @@ ensure-environment() {
install-requirements() {
echo "--> Ensuring we have the proper dependencies"
apt-get update -qq > /dev/null
if [[ $(lsb_release -sr) == "12.04" ]]; then
apt-get -qq -y install python-software-properties
fi
case "$DOKKU_DISTRO" in
debian|ubuntu)
apt-get update -qq > /dev/null
;;
esac
}
install-dokku() {
@@ -68,9 +66,14 @@ install-dokku() {
fi
}
install-dokku-from-source() {
local DOKKU_CHECKOUT="$1"
if ! command -v apt-get &>/dev/null; then
echo "This installation script requires apt-get. For manual installation instructions, consult http://dokku.viewdocs.io/dokku/advanced-installation/"
exit 1
fi
apt-get -qq -y install git make software-properties-common
cd /root
if [[ ! -d /root/dokku ]]; then
@@ -84,6 +87,21 @@ install-dokku-from-source() {
}
install-dokku-from-package() {
case "$DOKKU_DISTRO" in
debian|ubuntu)
install-dokku-from-deb-package "$@"
;;
centos)
install-dokku-from-rpm-package "$@"
;;
*)
echo "Unsupported Linux distribution. For manual installation instructions, consult http://dokku.viewdocs.io/dokku/advanced-installation/"
exit 1
;;
esac
}
install-dokku-from-deb-package() {
local DOKKU_CHECKOUT="$1"
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
@@ -97,8 +115,8 @@ install-dokku-from-package() {
echo "--> Installing docker"
if uname -r | grep -q linode; then
echo "--> NOTE: Using Linode? Docker might complain about missing AUFS support."
echo " See http://dokku.viewdocs.io/dokku/getting-started/install/linode/"
echo "--> NOTE: Using Linode? Docker may complain about missing AUFS support."
echo " You can safely ignore this warning."
echo " Installation will continue in 10 seconds."
sleep 10
fi
@@ -124,7 +142,43 @@ install-dokku-from-package() {
fi
}
install-dokku-from-rpm-package() {
local DOKKU_CHECKOUT="$1"
if [[ "$DOKKU_DISTRO_VERSION" != "7" ]]; then
echo "Only CentOS version 7 is supported."
exit 1
fi
echo "--> Installing docker"
curl -fsSL https://get.docker.com/ | sh
echo "--> Installing epel for nginx packages to be available"
yum install -y epel-release
echo "--> Installing herokuish and dokku"
curl -s https://packagecloud.io/install/repositories/dokku/dokku/script.rpm.sh | bash
if [[ -n $DOKKU_CHECKOUT ]]; then
yum -y install herokuish "dokku-$DOKKU_CHECKOUT"
else
yum -y install herokuish dokku
fi
echo "--> Enabling docker and nginx on system startup"
systemctl enable docker
systemctl enable nginx
echo "--> Starting nginx"
systemctl start nginx
}
main() {
export DOKKU_DISTRO DOKKU_DISTRO_VERSION
# shellcheck disable=SC1091
DOKKU_DISTRO=$(. /etc/os-release && echo "$ID")
# shellcheck disable=SC1091
DOKKU_DISTRO_VERSION=$(. /etc/os-release && echo "$VERSION_ID")
export DEBIAN_FRONTEND=noninteractive
export DOKKU_REPO=${DOKKU_REPO:-"https://github.com/dokku/dokku.git"}

4
common.mk Normal file
View File

@@ -0,0 +1,4 @@
GO_REPO_ROOT := /go/src/github.com/dokku/dokku
BUILD_IMAGE := golang:1.7.5
.PHONY: build-in-docker build clean src-clean

44
contrib/build.Dockerfile Normal file
View File

@@ -0,0 +1,44 @@
FROM ubuntu:14.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get -y install gcc git build-essential wget ruby-dev ruby1.9.1 lintian rpm help2man man-db
RUN command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc
ARG GOLANG_VERSION
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz \
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz
ARG WORKDIR=/go/src/github.com/dokku/dokku
WORKDIR ${WORKDIR}
COPY Makefile ${WORKDIR}/
COPY *.mk ${WORKDIR}/
RUN make deb-setup rpm-setup sshcommand plugn
COPY . ${WORKDIR}
ARG PLUGIN_MAKE_TARGET
ARG DOKKU_VERSION=master
ARG DOKKU_GIT_REV
ARG IS_RELEASE=false
RUN PATH=$PATH:/usr/local/go/bin GOPATH=/go \
PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
DOKKU_VERSION=${DOKKU_VERSION} \
DOKKU_GIT_REV=${DOKKU_GIT_REV} \
IS_RELEASE=${IS_RELEASE} \
SKIP_GO_CLEAN=true \
make version copyfiles \
&& rm -rf plugins/common/*.go plugins/common/glide* plugins/common/vendor/ \
&& make deb-herokuish deb-dokku deb-plugn deb-sshcommand deb-sigil \
rpm-herokuish rpm-dokku rpm-plugn rpm-sshcommand rpm-sigil
RUN mkdir -p /data \
&& cp /tmp/*.deb /data \
&& cp /tmp/*.rpm /data \
&& ls -lha /data/

View File

@@ -3,13 +3,14 @@
import cgi
import json
import os
import re
import SimpleHTTPServer
import SocketServer
import subprocess
import sys
import threading
VERSION = 'v0.7.2'
VERSION = 'v0.10.3'
hostname = ''
try:
@@ -100,8 +101,20 @@ class GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
with open('{0}/HOSTNAME'.format(dokku_root), 'w') as f:
f.write(params['hostname'].value)
command = ['sshcommand', 'acl-add', 'dokku', 'admin']
for key in params['keys'].value.split("\n"):
for (index, key) in enumerate(params['keys'].value.splitlines(), 1):
user = 'admin'
if self.admin_user_exists() is not None:
user = 'web-admin'
if self.web_admin_user_exists() is not None:
index = int(self.web_admin_user_exists()) + 1
elif self.web_admin_user_exists() is None:
index = 1
elif self.admin_user_exists() is None:
pass
else:
index = int(self.admin_user_exists()) + 1
user = user + str(index)
command = ['sshcommand', 'acl-add', 'dokku', user]
proc = subprocess.Popen(command, stdin=subprocess.PIPE)
proc.stdin.write(key)
proc.stdin.close()
@@ -119,6 +132,29 @@ class GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
self.end_headers()
self.wfile.write(json.dumps({'status': 'ok'}))
def web_admin_user_exists(self):
return self.user_exists('web-admin(\d+)')
def admin_user_exists(self):
return self.user_exists('admin(\d+)')
def user_exists(self, name):
command = 'dokku ssh-keys:list'
pattern = re.compile(r'NAME="' + name + '"')
proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
max_num = 0
exists = False
for line in proc.stdout:
m = pattern.search(line)
if m:
# User of the form `user` or `user#` exists
exists = True
max_num = max(max_num, m.group(1))
if exists:
return max_num
else:
return None
def set_debconf_selection(debconf_type, key, value):
found = False

View File

@@ -1,10 +1,9 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
export DOKKU_PORT=${DOKKU_PORT:=22}
export DOKKU_HOST=${DOKKU_HOST:=}
MOVES=(ABLE ABNORMA AGAIN AIREXPL ANG ANGER ASAIL ATTACK AURORA AWL BAN BAND BARE BEAT BEATED BELLY BIND BITE BLOC BLOOD BODY BOOK BREATH BUMP CAST CHAM CLAMP CLAP CLAW CLEAR CLI CLIP CLOUD CONTRO CONVY COOLHIT CRASH CRY CUT DESCRI D-FIGHT DIG DITCH DIV DOZ DRE DUL DU-PIN DYE EARTH EDU EG-BOMB EGG ELEGY ELE-HIT EMBODY EMPLI ENGL ERUPT EVENS EXPLOR EYES FALL FAST F-CAR F-DANCE FEARS F-FIGHT FIGHT FIR FIRE FIREHIT FLAME FLAP FLASH FLEW FORCE FRA FREEZE FROG G-BIRD GENKISS GIFT G-KISS G-MOUSE GRADE GROW HAMMER HARD HAT HATE H-BOMB HELL-R HEMP HINT HIT HU HUNT HYPNOSI INHA IRO IRONBAR IR-WING J-GUN KEE KICK KNIF KNIFE KNOCK LEVEL LIGH LIGHHIT LIGHT LIVE L-WALL MAD MAJUS MEL MELO MESS MILK MIMI MISS MIXING MOVE MUD NI-BED NOISY NOONLI NULL N-WAVE PAT PEACE PIN PLAN PLANE POIS POL POWDE POWE POWER PRIZE PROTECT PROUD RAGE RECOR REFLAC REFREC REGR RELIV RENEW R-FIGHT RING RKICK ROCK ROUND RUS RUSH SAND SAW SCISSOR SCRA SCRIPT SEEN SERVER SHADOW SHELL SHINE SHO SIGHT SIN SMALL SMELT SMOK SNAKE SNO SNOW SOU SO-WAVE SPAR SPEC SPID S-PIN SPRA STAM STARE STEA STONE STORM STRU STRUG STUDEN SUBS SUCID SUN-LIG SUNRIS SUPLY S-WAVE TAILS TANGL TASTE TELLI THANK TONKICK TOOTH TORL TRAIN TRIKICK TUNGE VOLT WA-GUN WATCH WAVE W-BOMB WFALL WFING WHIP WHIRL WIND WOLF WOOD WOR YUJA)
NAMES=(SEED GRASS FLOWE SHAD CABR SNAKE GOLD COW GUIKI PEDAL DELAN B-FLY BIDE KEYU FORK LAP PIGE PIJIA CAML LAT BIRD BABOO VIV ABOKE PIKAQ RYE SAN BREAD LIDEL LIDE PIP PIKEX ROK JUGEN PUD BUDE ZHIB GELU GRAS FLOW LAFUL ATH BALA CORN MOLUF DESP DAKED MIMI BOLUX KODA GELUD MONK SUMOY GEDI WENDI NILEM NILE NILEC KEZI YONGL HUDE WANLI GELI GUAIL MADAQ WUCI WUCI MUJEF JELLY SICIB GELU NELUO BOLI JIALE YED YEDE CLO SCARE AOCO DEDE DEDEI BAWU JIUG BADEB BADEB HOLE BALUX GES FANT QUAR YIHE SWAB SLIPP CLU DEPOS BILIY YUANO SOME NO YELA EMPT ZECUN XIAHE BOLEL DEJI MACID XIHON XITO LUCK MENJI GELU DECI XIDE DASAJ DONGN RICUL MINXI BALIY ZENDA LUZEL HELE5 0FENB KAIL JIAND CARP JINDE LAPU MUDE YIFU LINLI SANDI HUSI JINC OUMU OUMUX CAP KUIZA PUD TIAO FRMAN CLAU SPARK DRAGO BOLIU GUAIL MIYOU MIY QIAOK BEIL MUKEI RIDED MADAM BAGEP CROC ALIGE OUDAL OUD DADA HEHE YEDEA NUXI NUXIN ROUY ALIAD STICK QIANG LAAND PIQI PI PUPI DEKE DEKEJ NADI NADIO MALI PEA ELECT FLOWE MAL MALI HUSHU NILEE YUZI POPOZ DUZI HEBA XIAN SHAN YEYEA WUY LUO KEFE HULA CROW YADEH MOW ANNAN SUONI KYLI HULU HUDEL YEHE GULAE YEHE BLU GELAN BOAT NIP POIT HELAK XINL BEAR LINB MAGEH MAGEJ WULI YIDE RIVE FISH AOGU DELIE MANTE KONMU DELU HELU HUAN HUMA DONGF JINCA HEDE DEFU LIBY JIAPA MEJI HELE BUHU MILK HABI THUN GARD DON YANGQ SANAQ BANQ LUJ PHIX SIEI EGG)
random_number() {
fn-random-number() {
[[ -n "$1" ]] && RANGE="$1"
if [[ -n "$RANGE" ]]; then
number=$RANDOM
@@ -15,94 +14,141 @@ random_number() {
echo $number
}
random_name() {
NUM1=$(random_number ${#MOVES[@]})
NUM2=$(random_number ${#MOVES[@]})
NUM3=$(random_number ${#NAMES[@]})
fn-random-name() {
local NUM1 NUM2 NUM3 UPPER_APPNAME lower_appname
local MOVES=(ABLE ABNORMA AGAIN AIREXPL ANG ANGER ASAIL ATTACK AURORA AWL BAN BAND BARE BEAT BEATED BELLY BIND BITE BLOC BLOOD BODY BOOK BREATH BUMP CAST CHAM CLAMP CLAP CLAW CLEAR CLI CLIP CLOUD CONTRO CONVY COOLHIT CRASH CRY CUT DESCRI D-FIGHT DIG DITCH DIV DOZ DRE DUL DU-PIN DYE EARTH EDU EG-BOMB EGG ELEGY ELE-HIT EMBODY EMPLI ENGL ERUPT EVENS EXPLOR EYES FALL FAST F-CAR F-DANCE FEARS F-FIGHT FIGHT FIR FIRE FIREHIT FLAME FLAP FLASH FLEW FORCE FRA FREEZE FROG G-BIRD GENKISS GIFT G-KISS G-MOUSE GRADE GROW HAMMER HARD HAT HATE H-BOMB HELL-R HEMP HINT HIT HU HUNT HYPNOSI INHA IRO IRONBAR IR-WING J-GUN KEE KICK KNIF KNIFE KNOCK LEVEL LIGH LIGHHIT LIGHT LIVE L-WALL MAD MAJUS MEL MELO MESS MILK MIMI MISS MIXING MOVE MUD NI-BED NOISY NOONLI NULL N-WAVE PAT PEACE PIN PLAN PLANE POIS POL POWDE POWE POWER PRIZE PROTECT PROUD RAGE RECOR REFLAC REFREC REGR RELIV RENEW R-FIGHT RING RKICK ROCK ROUND RUS RUSH SAND SAW SCISSOR SCRA SCRIPT SEEN SERVER SHADOW SHELL SHINE SHO SIGHT SIN SMALL SMELT SMOK SNAKE SNO SNOW SOU SO-WAVE SPAR SPEC SPID S-PIN SPRA STAM STARE STEA STONE STORM STRU STRUG STUDEN SUBS SUCID SUN-LIG SUNRIS SUPLY S-WAVE TAILS TANGL TASTE TELLI THANK TONKICK TOOTH TORL TRAIN TRIKICK TUNGE VOLT WA-GUN WATCH WAVE W-BOMB WFALL WFING WHIP WHIRL WIND WOLF WOOD WOR YUJA)
local NAMES=(SEED GRASS FLOWE SHAD CABR SNAKE GOLD COW GUIKI PEDAL DELAN B-FLY BIDE KEYU FORK LAP PIGE PIJIA CAML LAT BIRD BABOO VIV ABOKE PIKAQ RYE SAN BREAD LIDEL LIDE PIP PIKEX ROK JUGEN PUD BUDE ZHIB GELU GRAS FLOW LAFUL ATH BALA CORN MOLUF DESP DAKED MIMI BOLUX KODA GELUD MONK SUMOY GEDI WENDI NILEM NILE NILEC KEZI YONGL HUDE WANLI GELI GUAIL MADAQ WUCI WUCI MUJEF JELLY SICIB GELU NELUO BOLI JIALE YED YEDE CLO SCARE AOCO DEDE DEDEI BAWU JIUG BADEB BADEB HOLE BALUX GES FANT QUAR YIHE SWAB SLIPP CLU DEPOS BILIY YUANO SOME NO YELA EMPT ZECUN XIAHE BOLEL DEJI MACID XIHON XITO LUCK MENJI GELU DECI XIDE DASAJ DONGN RICUL MINXI BALIY ZENDA LUZEL HELE5 0FENB KAIL JIAND CARP JINDE LAPU MUDE YIFU LINLI SANDI HUSI JINC OUMU OUMUX CAP KUIZA PUD TIAO FRMAN CLAU SPARK DRAGO BOLIU GUAIL MIYOU MIY QIAOK BEIL MUKEI RIDED MADAM BAGEP CROC ALIGE OUDAL OUD DADA HEHE YEDEA NUXI NUXIN ROUY ALIAD STICK QIANG LAAND PIQI PI PUPI DEKE DEKEJ NADI NADIO MALI PEA ELECT FLOWE MAL MALI HUSHU NILEE YUZI POPOZ DUZI HEBA XIAN SHAN YEYEA WUY LUO KEFE HULA CROW YADEH MOW ANNAN SUONI KYLI HULU HUDEL YEHE GULAE YEHE BLU GELAN BOAT NIP POIT HELAK XINL BEAR LINB MAGEH MAGEJ WULI YIDE RIVE FISH AOGU DELIE MANTE KONMU DELU HELU HUAN HUMA DONGF JINCA HEDE DEFU LIBY JIAPA MEJI HELE BUHU MILK HABI THUN GARD DON YANGQ SANAQ BANQ LUJ PHIX SIEI EGG)
UPPER_APPNAME="${MOVES[${NUM1}]}-${MOVES[${NUM2}]}-${NAMES[${NUM3}]}"
NUM1=$(fn-random-number ${#MOVES[@]})
NUM2=$(fn-random-number ${#MOVES[@]})
NUM3=$(fn-random-number ${#NAMES[@]})
[[ "$BASH_VERSION" =~ 4.* ]] && lower_appname=${UPPER_APPNAME,,}
[[ -z "$lower_appname" ]] && lower_appname=$(echo "$UPPER_APPNAME" | tr '[:upper:]' '[:lower:]')
echo "$lower_appname"
UPPER_APPNAME="${MOVES[${NUM1}]}-${MOVES[${NUM2}]}-${NAMES[${NUM3}]}"
[[ "$BASH_VERSION" =~ 4.* ]] && lower_appname=${UPPER_APPNAME,,}
[[ -z "$lower_appname" ]] && lower_appname=$(echo "$UPPER_APPNAME" | tr '[:upper:]' '[:lower:]')
echo "$lower_appname"
}
client_help_msg() {
echo "==> Configure the DOKKU_HOST environment variable or run $0 from a repository with a git remote named dokku"
echo "--> i.e. git remote add dokku dokku@<dokku-host>:<app-name>"
fn-client-help-msg() {
echo "==> Configure the DOKKU_HOST environment variable or run $0 from a repository with a git remote named dokku" 1>&2
echo "--> i.e. git remote add dokku dokku@<dokku-host>:<app-name>" 1>&2
exit 20 # exit with specific status. only used in units tests for now
}
is_git_repo() {
git rev-parse &>/dev/null
fn-is-git-repo() {
git rev-parse &>/dev/null
}
has_dokku_remote() {
git remote show | grep dokku
fn-has-dokku-remote() {
git remote show | grep -E "^${DOKKU_GIT_REMOTE}\s"
}
if [[ -z $DOKKU_HOST ]]; then
if [[ -d .git ]] || git rev-parse --git-dir > /dev/null 2>&1; then
DOKKU_HOST=$(git remote -v 2>/dev/null | grep -Ei "^dokku" | head -n 1 | cut -f1 -d' ' | cut -f2 -d '@' | cut -f1 -d':' 2>/dev/null || true)
else
client_help_msg
fn-dokku-host() {
declare DOKKU_GIT_REMOTE="$1" DOKKU_HOST="$2"
if [[ -z "$DOKKU_HOST" ]]; then
if [[ -d .git ]] || git rev-parse --git-dir > /dev/null 2>&1; then
DOKKU_HOST=$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | head -n 1 | cut -f1 -d' ' | cut -f2 -d '@' | cut -f1 -d':' 2>/dev/null || true)
fi
fi
fi
export DOKKU_PORT=${DOKKU_PORT:=22}
if [[ -z "$DOKKU_HOST" ]]; then
fn-client-help-msg
fi
if [[ ! -z $DOKKU_HOST ]]; then
_dokku() {
appname=""
echo "$DOKKU_HOST"
}
main() {
declare CMD="$1" APP_ARG="$2"
local APP="" DOKKU_GIT_REMOTE="dokku" DOKKU_REMOTE_HOST=""
local cmd_set=false next_index=1 skip=false args=("$@")
for arg in "$@"; do
if [[ "$skip" == "true" ]]; then
next_index=$(( next_index + 1 ))
skip=false
continue
fi
if [[ "$arg" == "--app" ]]; then
APP=${args[$next_index]}
skip=true
shift 2
elif [[ "$arg" == "--remote" ]]; then
DOKKU_GIT_REMOTE=${args[$next_index]}
skip=true
shift 2
elif [[ "$arg" =~ ^--.* ]]; then
[[ "$cmd_set" == "true" ]] && APP_ARG="$arg" && break
[[ "$arg" == "--trace" ]] && export DOKKU_TRACE=1 && set -x
else
if [[ "$cmd_set" == "true" ]]; then
APP_ARG="$arg"
break
else
CMD="$arg"
cmd_set=true
fi
fi
next_index=$(( next_index + 1 ))
done
DOKKU_REMOTE_HOST="$(fn-dokku-host "$DOKKU_GIT_REMOTE" "$DOKKU_HOST")"
if [[ -z "$APP" ]]; then
if [[ -d .git ]] || git rev-parse --git-dir > /dev/null 2>&1; then
set +e
appname=$(git remote -v 2>/dev/null | grep -Ei "dokku@$DOKKU_HOST" | head -n 1 | cut -f2 -d'@' | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
APP=$(git remote -v 2>/dev/null | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | head -n 1 | cut -f2 -d'@' | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
set -e
else
echo "This is not a git repository"
fi
case "$1" in
apps:create)
if [[ -z "$2" ]]; then
appname=$(random_name)
counter=0
while ssh -p "$DOKKU_PORT" "dokku@$DOKKU_HOST" apps 2>/dev/null| grep -q "$appname"; do
if [[ $counter -ge 100 ]]; then
echo "Error: could not reasonably generate a new app name. try cleaning up some apps..."
ssh -p "$DOKKU_PORT" "dokku@$DOKKU_HOST" apps
exit 1
else
appname=$(random_name)
counter=$((counter+1))
fi
done
else
appname="$2"
fi
if git remote add dokku "dokku@$DOKKU_HOST:$appname"; then
echo "-----> Dokku remote added at $DOKKU_HOST"
echo "-----> Application name is $appname"
else
echo "! Dokku remote not added! Do you already have a dokku remote?"
return
fi
;;
apps:destroy)
is_git_repo && has_dokku_remote && git remote remove dokku
;;
esac
[[ -n "$@" ]] && [[ -n "$appname" ]] && app_arg="--app $appname"
# echo "ssh -o LogLevel=QUIET -p $DOKKU_PORT -t dokku@$DOKKU_HOST -- $app_arg $@"
# shellcheck disable=SC2068,SC2086
ssh -o LogLevel=QUIET -p $DOKKU_PORT -t dokku@$DOKKU_HOST -- $app_arg $@
}
if [[ "$0" == "dokku" ]] || [[ "$0" == *dokku_client.sh ]] || [[ "$0" == $(which dokku) ]]; then
_dokku "$@"
exit $?
fi
else
client_help_msg
case "$CMD" in
apps:create)
if [[ -z "$APP_ARG" ]]; then
APP=$(fn-random-name)
counter=0
while ssh -p "$DOKKU_PORT" "dokku@$DOKKU_REMOTE_HOST" apps 2>/dev/null| grep -q "$APP"; do
if [[ $counter -ge 100 ]]; then
echo "Error: could not reasonably generate a new app name. try cleaning up some apps..."
ssh -p "$DOKKU_PORT" "dokku@$DOKKU_REMOTE_HOST" apps
exit 1
else
APP=$(random_name)
counter=$((counter+1))
fi
done
else
APP="$APP_ARG"
fi
if git remote add "$DOKKU_GIT_REMOTE" "dokku@$DOKKU_REMOTE_HOST:$APP"; then
echo "-----> Dokku remote added at ${DOKKU_REMOTE_HOST} called ${DOKKU_GIT_REMOTE}"
echo "-----> Application name is ${APP}"
else
echo "! Dokku remote not added! Do you already have a dokku remote?"
return
fi
;;
apps:destroy)
fn-is-git-repo && fn-has-dokku-remote && git remote remove "$DOKKU_GIT_REMOTE"
;;
esac
[[ " apps certs help ls nginx shell storage trace version " == *" $CMD "* ]] && unset APP
[[ " certs:chain domains:add-global domains:remove-global domains:set-global ps:rebuildall ps:restartall ps:restore " == *" $CMD "* ]] && unset APP
[[ "$CMD" =~ events*|plugin*|ssh-keys* ]] && unset APP
[[ -n "$APP_ARG" ]] && [[ "$APP_ARG" == "--global" ]] && unset APP
[[ -n "$@" ]] && [[ -n "$APP" ]] && app_arg="--app $APP"
# echo "ssh -o LogLevel=QUIET -p $DOKKU_PORT -t dokku@$DOKKU_REMOTE_HOST -- $app_arg $@"
# shellcheck disable=SC2068,SC2086
ssh -o LogLevel=QUIET -p $DOKKU_PORT -t dokku@$DOKKU_REMOTE_HOST -- $app_arg $@
}
if [[ "$0" == "dokku" ]] || [[ "$0" == *dokku_client.sh ]] || [[ "$0" == $(which dokku) ]]; then
main "$@"
exit $?
fi

313
contrib/release Executable file
View File

@@ -0,0 +1,313 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $TRACE ]] && set -x
readonly ROOT_DIR="$(cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")" && pwd)"
readonly TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-release.XXXX")"
readonly DOKKU_GIT_REV="$(git rev-parse HEAD)"
trap 'rm -rf "$TMP_WORK_DIR" > /dev/null' RETURN INT TERM EXIT
log-info() {
# shellcheck disable=SC2034
declare desc="Log info formatter"
echo "$*"
}
log-error() {
# shellcheck disable=SC2034
declare desc="Log error formatter"
echo "! $*" 1>&2
}
log-fail() {
# shellcheck disable=SC2034
declare desc="Log fail formatter"
log-error "$*"
exit -1
}
fn-build-dokku() {
declare desc="Builds dokku packages within a docker container"
declare IS_RELEASE="$1" DOKKU_VERSION="$2"
local NAME GOLANG_VERSION
if [[ -z "$DOKKU_VERSION" ]]; then
log-error "Invalid deb file specified"
return 1
fi
NAME="dokku:build"
[[ "$IS_RELEASE" == "true" ]] && NAME="dokku:build-release"
[[ -n "$DOKKU_VERSION" ]] || DOKKU_VERSION="master"
pushd "$ROOT_DIR" >/dev/null
GOLANG_VERSION="$(grep BUILD_IMAGE common.mk | cut -d' ' -f3 | cut -d':' -f2)"
docker build \
--build-arg DOKKU_VERSION="$DOKKU_VERSION" \
--build-arg DOKKU_GIT_REV="$DOKKU_GIT_REV" \
--build-arg IS_RELEASE="$IS_RELEASE" \
--build-arg PLUGIN_MAKE_TARGET="build" \
--build-arg GOLANG_VERSION="$GOLANG_VERSION" \
-f "contrib/build.Dockerfile" \
-t "$NAME" .
}
fn-extract-package() {
declare desc="Extract packages from a docker container to the root directory"
declare IS_RELEASE="$1" PACKAGE_NAME="$2"
local NAME
if [[ -z "$PACKAGE_NAME" ]]; then
log-error "Invalid deb file specified"
return 1
fi
NAME="dokku:build"
[[ "$IS_RELEASE" == "true" ]] && NAME="dokku:build-release"
log-info "(extract-package) writing ${PACKAGE_NAME} to correct path"
docker run --rm --entrypoint cat "$NAME" "/data/${PACKAGE_NAME}" > "${ROOT_DIR}/${PACKAGE_NAME}"
}
fn-in-array() {
declare desc="return true if value ($1) is in list (all other arguments)"
local e
for e in "${@:2}"; do
[[ "$e" == "$1" ]] && return 0
done
return 1
}
fn-is-release() {
declare desc="Checks if a given run is a release run"
declare RELEASE="$1"
local IS_RELEASE=false
if [[ "$RELEASE" == "major" ]] || [[ "$RELEASE" == "minor" ]] || [[ "$RELEASE" == "patch" ]]; then
IS_RELEASE=true
fi
echo "$IS_RELEASE"
}
fn-version-current() {
declare desc="Retrieves the current version of dokku"
pushd "$ROOT_DIR" >/dev/null
grep Version debian/control | cut -d' ' -f2
}
fn-version-next() {
declare desc="Calculates the next version name of dokku"
declare CURRENT_VERSION="$1" RELEASE="$2"
local major minor patch short_object
major=$(echo "$CURRENT_VERSION" | awk '{split($0,a,"."); print a[1]}')
minor=$(echo "$CURRENT_VERSION" | awk '{split($0,a,"."); print a[2]}')
patch=$(echo "$CURRENT_VERSION" | awk '{split($0,a,"."); print a[3]}')
if [[ "$RELEASE" == "major" ]]; then
major=$((major + 1))
minor="0"
patch="0"
elif [[ "$RELEASE" == "minor" ]]; then
minor=$((minor + 1))
patch="0"
elif [[ "$RELEASE" == "patch" ]]; then
patch=$((patch + 1))
else
short_object=$(git log --oneline | tail -n 1 | cut -d' ' -f1)
echo "${CURRENT_VERSION}build+$(echo "$DOKKU_GIT_REV" | cut -c1-${#short_object})"
return 0
fi
echo "${major}.${minor}.${patch}"
}
fn-publish-package() {
declare desc="Publishes a package to packagecloud"
declare IS_RELEASE="$1" RELEASE_TYPE="$2" PACKAGE_NAME="$3"
local REPOSITORY=dokku/dokku-betafish DIST=ubuntu/trusty
[[ "$IS_RELEASE" == "true" ]] && REPOSITORY=dokku/dokku
[[ "$RELEASE_TYPE" == "rpm" ]] && DIST=el/7
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}" "$PACKAGE_NAME"
}
fn-replace-version() {
declare desc="Replaces the version within a file"
local CURRENT_VERSION="$1"
local NEXT_VERSION="$2"
local FILENAME="$3"
sed -i.bak "s/${CURRENT_VERSION//./\.}/$NEXT_VERSION/g" "$FILENAME" && rm "$FILENAME.bak"
git add "$FILENAME"
}
fn-repo-merged-requests() {
declare desc="Retrieves all pull request ids since a given release of dokku"
declare TAG="$1"
git log "v${TAG}..HEAD" --oneline | grep "Merge pull request" | cut -d' ' -f 5 | cut -d '#' -f2
}
fn-repo-push-tags() {
declare desc="Pushes tags and the repository to github"
declare IS_RELEASE="$1"
if [[ "$IS_RELEASE" == "false" ]]; then
return
fi
pushd "$ROOT_DIR" >/dev/null
git push --tags origin master
}
fn-repo-update() {
declare desc="Updates files within the repository for a given release"
declare IS_RELEASE="$1" CURRENT_VERSION="$2" NEXT_VERSION="$3"
log-info "(release-dokku) Replacing ${CURRENT_VERSION} with ${NEXT_VERSION}"
for f in plugins/*/plugin.toml; do
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" "$f"
done
if [[ "$IS_RELEASE" == "false" ]]; then
return
fi
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" contrib/dokku-installer.py
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" debian/control
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/advanced-usage/plugin-management.md
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/assets/favicons/browserconfig.xml
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/assets/favicons/manifest.json
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/assets/style.css
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/development/release-process.md
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/home.html
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/getting-started/installation.md
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/template.html
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" README.md
if [[ "$RELEASE" == 'patch' ]]; then
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/assets/versions.json
else
versions=$(python -c 'import json,sys;d=json.load(sys.stdin);d["max-versions"].append("'"${NEXT_VERSION}"'"); print json.dumps(d, indent=2, sort_keys=True)' <docs/assets/versions.json)
echo "$versions" >docs/assets/versions.json
git add docs/assets/versions.json
fi
if [[ "$IS_RELEASE" == "false" ]]; then
return
fi
log-info "(release-dokku) Adding HISTORY.md, committing and tagging"
fn-repo-update-history-and-commit "$CURRENT_VERSION" "$NEXT_VERSION"
git tag "v${NEXT_VERSION}"
}
fn-repo-update-history-and-commit() {
declare desc="Updates the history file and commits the changes"
declare CURRENT_VERSION="$1" NEXT_VERSION="$2"
local PULL_REQUEST_ID TITLE AUTHOR TYPE CHANGELOG_TEXT
local COMMIT_MESSAGE HISTORY HISTORY_CONTENTS HISTORY_DOCUMENTATION HISTORY_ENHANCEMENT HISTORY_BUG ISSUE_FILE
pushd "$ROOT_DIR" >/dev/null
mkdir -p /tmp/github-data
for PULL_REQUEST_ID in $(fn-repo-merged-requests "$CURRENT_VERSION"); do
ISSUE_FILE="/tmp/github-data/${PULL_REQUEST_ID}.json"
if [[ ! -f "$ISSUE_FILE" ]]; then
curl -sS "https://api.github.com/repos/dokku/dokku/issues/${PULL_REQUEST_ID}" >"$ISSUE_FILE"
fi
TITLE="$(jq -r '.title' "$ISSUE_FILE")"
AUTHOR="$(jq -r '.user.login' "$ISSUE_FILE")"
TYPE="$(jq -r '.labels[] | select( .name | contains("type") ) | .name' "$ISSUE_FILE" | cut -d' ' -f2)"
CHANGELOG_TEXT="- #${PULL_REQUEST_ID}: @${AUTHOR} ${TITLE}"
if [[ "$TYPE" == "bug" ]]; then
HISTORY_BUG="${HISTORY_BUG}"$'\n'"$CHANGELOG_TEXT"
elif [[ "$TYPE" == "documentation" ]]; then
HISTORY_DOCUMENTATION="${HISTORY_DOCUMENTATION}"$'\n'"$CHANGELOG_TEXT"
elif [[ "$TYPE" == "enhancement" ]]; then
HISTORY_ENHANCEMENT="${HISTORY_ENHANCEMENT}"$'\n'"$CHANGELOG_TEXT"
fi
done
HISTORY="# History"
HISTORY="${HISTORY}"$'\n\n'"## ${NEXT_VERSION}"
if [[ "$HISTORY_BUG" ]]; then
HISTORY="${HISTORY}"$'\n\n'"### Bug Fixes"
HISTORY="${HISTORY}"$'\n'"$HISTORY_BUG"
fi
if [[ "$HISTORY_ENHANCEMENT" ]]; then
HISTORY="${HISTORY}"$'\n\n'"### New Features"
HISTORY="${HISTORY}"$'\n'"$HISTORY_ENHANCEMENT"
fi
if [[ "$HISTORY_DOCUMENTATION" ]]; then
HISTORY="${HISTORY}"$'\n\n'"### Documentation"
HISTORY="${HISTORY}"$'\n'"$HISTORY_DOCUMENTATION"
fi
sed -i.bak '1d' HISTORY.md && rm HISTORY.md.bak
HISTORY_CONTENTS="$(cat HISTORY.md)"
echo -e "$HISTORY\n$HISTORY_CONTENTS" >HISTORY.md
git add HISTORY.md
COMMIT_MESSAGE="Release ${NEXT_VERSION}"$'\n\n'"${HISTORY}"
git commit -m "${COMMIT_MESSAGE}"
}
fn-require-bin() {
declare desc="Checks that a binary exists"
declare BINARY="$1"
if ! command -v "$BINARY" &>/dev/null; then
log-fail "Missing ${BINARY}, please install it"
fi
}
main() {
declare RELEASE="$1"
local CURRENT_VERSION NEXT_VERSION IS_RELEASE major minor patch versions
local VALID_RELEASE_LEVELS=("major" "minor" "patch" "betafish")
if [[ "$RELEASE" == '--trace' ]]; then
shift 1
RELEASE="$1"
TRACE=1 && set -x
fi
if [[ -z "$RELEASE" ]]; then
log-fail "Argument 1 must be one of [major, minor, patch, betafish], none given"
fi
if ! fn-in-array "$RELEASE" "${VALID_RELEASE_LEVELS[@]}"; then
log-fail "Argument 1 must be one of [major, minor, patch, betafish], '${RELEASE}' given"
fi
fn-require-bin "docker"
fn-require-bin "git"
fn-require-bin "package_cloud"
[[ -n "$PACKAGECLOUD_API_TOKEN" ]] || log-fail "Missing PACKAGECLOUD_API_TOKEN environment variable"
CURRENT_VERSION="$(fn-version-current)"
NEXT_VERSION="$(fn-version-next "$CURRENT_VERSION" "$RELEASE")"
IS_RELEASE="$(fn-is-release "$RELEASE")"
fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION"
fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION"
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb"
fn-extract-package "$IS_RELEASE" "dokku-${NEXT_VERSION}-1.x86_64.rpm"
fn-publish-package "$IS_RELEASE" "deb" "dokku_${NEXT_VERSION}_amd64.deb"
fn-publish-package "$IS_RELEASE" "rpm" "dokku-${NEXT_VERSION}-1.x86_64.rpm"
fn-repo-push-tags "$IS_RELEASE"
}
main "$@"

171
contrib/release-plugin Executable file
View File

@@ -0,0 +1,171 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $TRACE ]] && set -x
readonly TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-plugin-release.XXXX")"
trap 'rm -rf "$TMP_WORK_DIR" > /dev/null' RETURN INT TERM EXIT
log-info() {
# shellcheck disable=SC2034
declare desc="Log info formatter"
echo "$*"
}
log-error() {
# shellcheck disable=SC2034
declare desc="Log error formatter"
echo "! $*" 1>&2
}
log-fail() {
# shellcheck disable=SC2034
declare desc="Log fail formatter"
log-error "$*"
exit -1
}
fn-github-download-release() {
declare REPO_NAME="$1" VERSION="$2"
if [[ -n "$DOKKU_PLUGIN_GITHUB_ACCESS_TOKEN" ]]; then
curl -L "https://api.github.com/repos/${REPO_NAME}/tarball/${VERSION}?access_token=${DOKKU_PLUGIN_GITHUB_ACCESS_TOKEN}"
else
curl -L "https://api.github.com/repos/${REPO_NAME}/tarball/${VERSION}"
fi
}
fn-replace-version() {
declare desc="Replaces the version within a file"
local CURRENT_VERSION="$1"
local NEXT_VERSION="$2"
local FILENAME="$3"
sed -i.bak "s/${CURRENT_VERSION//./\.}/$NEXT_VERSION/g" "$FILENAME" && rm "$FILENAME.bak"
git add "$FILENAME"
}
fn-require-bin() {
declare desc="Checks that a binary exists"
declare BINARY="$1"
if ! command -v "$BINARY" &>/dev/null; then
log-fail "Missing ${BINARY}, please install it"
fi
}
main() {
local RELEASE="$1"
local CURRENT_VERSION FILENAME NEXT_VERSION ORG_REPO_NAME REPO_NAME major minor patch
if [[ -z "$RELEASE" ]]; then
cat<<'EOF'
requirements:
- this is run in a plugin folder
- a `plugin.toml` exists
- the plugin is versioned via git
usage:
# the following commands make these assumptions
# - the plugin's folder name is dokku-example, as is the remote repository
# - the current version is `0.0.1` in the `plugin.toml`
# create the alias
alias release-dokku-plugin="path/to/dokku/contrib/release-plugin"
# make a specific kind of release
release-dokku-plugin patch # creates a 0.0.2 release
release-dokku-plugin minor # creates a 0.1.0 release
release-dokku-plugin major # creates a 1.0.0 release
# release private plugins as tarballs to S3
# note that the plugin *must* exist on github for this to work
export DOKKU_PLUGIN_GITHUB_ACCESS_TOKEN="some-github-token"
export DOKKU_PLUGIN_S3_BUCKET="example"
export DOKKU_PLUGIN_S3_PATH="some/path"
# will upload the versioned tarball url to s3://example/some/path/dokku-plugin-name-0.0.1.tar.gz
release-dokku-plugin patch
EOF
return
fi
fn-require-bin "git"
if [[ "$CI" != "true" ]] && [[ -z "$DOKKU_PLUGIN_GITHUB_ACCESS_TOKEN" ]]; then
log-info "You are running this without a DOKKU_PLUGIN_GITHUB_ACCESS_TOKEN environment variable."
log-info "Doing so disables uploading releases to S3, which may be necessary for installing private plugins."
while true; do
read -rp "Do you wish to continue? " yn
case $yn in
[Yy]* ) break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done
fi
if [[ -n "$DOKKU_PLUGIN_GITHUB_ACCESS_TOKEN" ]]; then
fn-require-bin "aws"
fn-require-bin "curl"
if [[ -z "$DOKKU_PLUGIN_S3_BUCKET" ]]; then
log-fail "No DOKKU_PLUGIN_S3_BUCKET environment variable set"
fi
if [[ -z "$DOKKU_PLUGIN_S3_PATH" ]]; then
log-fail "No DOKKU_PLUGIN_S3_PATH environment variable set"
fi
fi
if [[ ! -f plugin.toml ]]; then
log-error "No plugin.toml found"
return 1
fi
if [[ ! -d .git ]]; then
log-error "No git repository found"
return 1
fi
CURRENT_VERSION=$(grep version plugin.toml | cut -d '"' -f2)
major=$(echo "$CURRENT_VERSION" | awk '{split($0,a,"."); print a[1]}')
minor=$(echo "$CURRENT_VERSION" | awk '{split($0,a,"."); print a[2]}')
patch=$(echo "$CURRENT_VERSION" | awk '{split($0,a,"."); print a[3]}')
if [[ "$RELEASE" == "major" ]]; then
major=$((major + 1));
minor="0"
patch="0"
elif [[ "$RELEASE" == "minor" ]]; then
minor=$((minor + 1));
patch="0"
elif [[ "$RELEASE" == "patch" ]]; then
patch=$((patch + 1));
else
log-error "Invalid release type specified"
return 1
fi
NEXT_VERSION="${major}.${minor}.${patch}"
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" plugin.toml
git add plugin.toml
git commit -m "Release ${NEXT_VERSION}"
git tag "${NEXT_VERSION}"
git push --tags origin master
git fetch
ORG_REPO_NAME="$(git remote -v | grep origin | HEAD -n1 | cut -d':' -f2 | cut -d'.' -f1)"
REPO_NAME="$(echo "$ORG_REPO_NAME" | cut -d'/' -f2)"
FILENAME="${REPO_NAME}-${NEXT_VERSION}.tar.gz"
if [[ -n "$DOKKU_PLUGIN_GITHUB_ACCESS_TOKEN" ]]; then
DOKKU_PLUGIN_S3_BUCKET="${DOKKU_PLUGIN_S3_BUCKET%/}"
DOKKU_PLUGIN_S3_PATH="${DOKKU_PLUGIN_S3_PATH%/}"
if [[ "$DOKKU_PLUGIN_S3_PATH" != "/" ]]; then
DOKKU_PLUGIN_S3_PATH="${DOKKU_PLUGIN_S3_PATH}/"
fi
fn-github-download-release "$ORG_REPO_NAME" "$NEXT_VERSION" > "${TMP_WORK_DIR}/${FILENAME}"
aws s3 cp "${TMP_WORK_DIR}/${FILENAME}" "s3://${DOKKU_PLUGIN_S3_BUCKET}/${DOKKU_PLUGIN_S3_PATH}${FILENAME}" --acl public-read
fi
}
main "$@"

40
deb.mk
View File

@@ -1,6 +1,6 @@
HEROKUISH_DESCRIPTION = 'Herokuish uses Docker and Buildpacks to build applications like Heroku'
HEROKUISH_REPO_NAME ?= gliderlabs/herokuish
HEROKUISH_VERSION ?= 0.3.19
HEROKUISH_VERSION ?= 0.3.29
HEROKUISH_ARCHITECTURE = amd64
HEROKUISH_PACKAGE_NAME = herokuish_$(HEROKUISH_VERSION)_$(HEROKUISH_ARCHITECTURE).deb
@@ -15,7 +15,7 @@ You can use any language you want, so long as the script is
executable and has the proper language requirements installed
endef
PLUGN_REPO_NAME ?= dokku/plugn
PLUGN_VERSION ?= 0.2.2
PLUGN_VERSION ?= 0.3.0
PLUGN_ARCHITECTURE = amd64
PLUGN_PACKAGE_NAME = plugn_$(PLUGN_VERSION)_$(PLUGN_ARCHITECTURE).deb
PLUGN_URL = https://github.com/dokku/plugn/releases/download/v$(PLUGN_VERSION)/plugn_$(PLUGN_VERSION)_linux_x86_64.tgz
@@ -26,7 +26,7 @@ Simplifies running a single command over SSH, and
manages authorized keys (ACL) and users in order to do so.
endef
SSHCOMMAND_REPO_NAME ?= dokku/sshcommand
SSHCOMMAND_VERSION ?= 0.6.0
SSHCOMMAND_VERSION ?= 0.7.0
SSHCOMMAND_ARCHITECTURE = amd64
SSHCOMMAND_PACKAGE_NAME = sshcommand_$(SSHCOMMAND_VERSION)_$(SSHCOMMAND_ARCHITECTURE).deb
SSHCOMMAND_URL ?= https://raw.githubusercontent.com/dokku/sshcommand/v$(SSHCOMMAND_VERSION)/sshcommand
@@ -86,13 +86,11 @@ deb-herokuish:
@echo "-> Creating deb files"
@echo "#!/usr/bin/env bash" >> /tmp/tmp/post-install
@echo "sleep 5" >> /tmp/tmp/post-install
@echo "count=\`sudo docker images | grep gliderlabs/herokuish | wc -l\`" >> /tmp/tmp/post-install
@echo 'if [ "$$count" -ne 0 ]; then' >> /tmp/tmp/post-install
@echo " echo 'Removing old herokuish image'" >> /tmp/tmp/post-install
@echo " sudo docker rmi gliderlabs/herokuish" >> /tmp/tmp/post-install
@echo "fi" >> /tmp/tmp/post-install
@echo "echo 'Importing herokuish into docker (around 5 minutes)'" >> /tmp/tmp/post-install
@echo "sudo docker build -t gliderlabs/herokuish /var/lib/herokuish 1> /dev/null" >> /tmp/tmp/post-install
@echo 'if [[ ! -z $${http_proxy+x} ]]; then BUILDARGS="--build-arg http_proxy=$$http_proxy"; fi' >> /tmp/tmp/post-install
@echo 'if [[ ! -z $${https_proxy+x} ]]; then BUILDARGS="$$BUILDARGS --build-arg https_proxy=$$https_proxy"; fi' >> /tmp/tmp/post-install
@echo 'if [[ ! -z $${BUILDARGS+x} ]]; then echo Adding proxy settings to docker build: $$BUILDARGS; fi' >> /tmp/tmp/post-install
@echo 'sudo docker build --pull $$BUILDARGS -t gliderlabs/herokuish /var/lib/herokuish 1> /dev/null' >> /tmp/tmp/post-install
@echo "-> Cloning repository"
git clone -q "https://github.com/$(HEROKUISH_REPO_NAME).git" --branch "v$(HEROKUISH_VERSION)" /tmp/tmp/herokuish > /dev/null
@@ -103,7 +101,7 @@ deb-herokuish:
cp -rf /tmp/tmp/herokuish /tmp/build/var/lib/herokuish
@echo "-> Creating $(HEROKUISH_PACKAGE_NAME)"
sudo fpm -t deb -s dir -C /tmp/build -n herokuish -v $(HEROKUISH_VERSION) -a $(HEROKUISH_ARCHITECTURE) -p $(HEROKUISH_PACKAGE_NAME) --deb-pre-depends 'docker-engine-cs (>= 1.9.1) | docker-engine (>= 1.9.1)' --deb-pre-depends sudo --after-install /tmp/tmp/post-install --url "https://github.com/$(HEROKUISH_REPO_NAME)" --description $(HEROKUISH_DESCRIPTION) --license 'MIT License' .
sudo fpm -t deb -s dir -C /tmp/build -n herokuish -v $(HEROKUISH_VERSION) -a $(HEROKUISH_ARCHITECTURE) -p $(HEROKUISH_PACKAGE_NAME) --deb-pre-depends 'docker-engine-cs (>= 1.9.1) | docker-engine (>= 1.9.1) | docker-ce | docker-ee' --deb-pre-depends sudo --after-install /tmp/tmp/post-install --url "https://github.com/$(HEROKUISH_REPO_NAME)" --description $(HEROKUISH_DESCRIPTION) --license 'MIT License' .
mv *.deb /tmp
deb-dokku:
@@ -121,24 +119,36 @@ deb-dokku:
cp dokku /tmp/build/usr/bin
cp LICENSE /tmp/build/usr/share/doc/dokku/copyright
find . -name ".DS_Store" -depth -exec rm {} \;
$(MAKE) go-build
cp common.mk /tmp/build/var/lib/dokku/core-plugins/common.mk
cp -r plugins/* /tmp/build/var/lib/dokku/core-plugins/available
find plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do cd /tmp/build/var/lib/dokku/core-plugins/available/$$plugin && if [ -e Makefile ]; then $(MAKE) src-clean; fi; done
find plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do touch /tmp/build/var/lib/dokku/core-plugins/available/$$plugin/.core; done
rm /tmp/build/var/lib/dokku/core-plugins/common.mk
$(MAKE) help2man
$(MAKE) addman
cp /usr/local/share/man/man1/dokku.1 /tmp/build/usr/share/man/man1/dokku.1
gzip -9 /tmp/build/usr/share/man/man1/dokku.1
cp contrib/dokku-installer.py /tmp/build/usr/share/dokku/contrib
ifeq ($(DOKKU_VERSION),master)
git describe --tags > /tmp/build/var/lib/dokku/VERSION
else
echo $(DOKKU_VERSION) > /tmp/build/var/lib/dokku/VERSION
endif
cat /tmp/build/var/lib/dokku/VERSION | cut -d '-' -f 1 | cut -d 'v' -f 2 > /tmp/build/var/lib/dokku/STABLE_VERSION
ifneq (,$(findstring false,$(IS_RELEASE)))
sed -i.bak -e "s/^/`date +%s`:/" /tmp/build/var/lib/dokku/STABLE_VERSION && rm /tmp/build/var/lib/dokku/STABLE_VERSION.bak
endif
rm /tmp/build/DEBIAN/lintian-overrides
mv debian/lintian-overrides /tmp/build/usr/share/lintian/overrides/dokku
rm -f /tmp/build/DEBIAN/lintian-overrides
cp debian/lintian-overrides /tmp/build/usr/share/lintian/overrides/dokku
ifdef DOKKU_GIT_REV
echo "$(DOKKU_GIT_REV)" > /tmp/build/var/lib/dokku/GIT_REV
else
git rev-parse HEAD > /tmp/build/var/lib/dokku/GIT_REV
sed -i "s/^Version: .*/Version: `cat /tmp/build/var/lib/dokku/STABLE_VERSION`/g" /tmp/build/DEBIAN/control
dpkg-deb --build /tmp/build "/tmp/dokku_`cat /tmp/build/var/lib/dokku/STABLE_VERSION`_$(DOKKU_ARCHITECTURE).deb"
lintian "/tmp/dokku_`cat /tmp/build/var/lib/dokku/STABLE_VERSION`_$(DOKKU_ARCHITECTURE).deb"
endif
sed -i.bak "s/^Version: .*/Version: `cat /tmp/build/var/lib/dokku/STABLE_VERSION`/g" /tmp/build/DEBIAN/control && rm /tmp/build/DEBIAN/control.bak
dpkg-deb --build /tmp/build "/tmp/dokku_`cat /tmp/build/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
lintian "/tmp/dokku_`cat /tmp/build/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
deb-plugn:
rm -rf /tmp/tmp /tmp/build $(PLUGN_PACKAGE_NAME)

8
debian/control vendored
View File

@@ -1,11 +1,11 @@
Package: dokku
Version: 0.7.2
Version: 0.10.3
Section: web
Priority: optional
Architecture: amd64
Depends: locales, git, make, curl, gcc, man-db, sshcommand, gliderlabs-sigil, docker-engine-cs (>= 1.9.1) | docker-engine (>= 1.9.1), software-properties-common, python-software-properties
Recommends: herokuish
Pre-Depends: nginx, dnsutils, cgroupfs-mount | cgroup-lite, plugn, sudo, python2.7, debconf
Depends: locales, git, make, curl, gcc, man-db, netcat, sshcommand (>= 0.6.0), gliderlabs-sigil, docker-engine-cs (>= 1.9.1) | docker-engine (>= 1.9.1) | docker-io (>= 1.9.1) | docker-ce | docker-ee, software-properties-common, python-software-properties | python3-software-properties
Recommends: herokuish (>= 0.3.4), parallel
Pre-Depends: nginx (>= 1.8.0) | openresty, dnsutils, cgroupfs-mount | cgroup-lite, plugn (>= 0.3.0), sudo, python2.7, debconf
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
Description: Docker-powered PaaS that helps build and manage the lifecycle of applications
Dokku is an extensible, open source Platform as a Service

View File

@@ -1,3 +1,5 @@
dokku: command-with-path-in-maintainer-script postinst:16 /usr/bin/sshcommand
dokku: maintainer-script-calls-systemctl postinst:87
dokku: changelog-file-missing-in-native-package
dokku: statically-linked-binary
dokku: unstripped-binary-or-object

2
debian/postinst vendored
View File

@@ -35,7 +35,7 @@ case "$1" in
echo "Setting up storage directories"
mkdir -p ${DOKKU_LIB_ROOT}/data ${DOKKU_LIB_ROOT}/data/storage
chown dokku:dokku -R ${DOKKU_LIB_ROOT}/data
chown dokku:dokku ${DOKKU_LIB_ROOT}/data ${DOKKU_LIB_ROOT}/data/storage
echo "Setting up plugin directories"
# should be replaced by `plugn init`

4
debian/postrm vendored
View File

@@ -11,13 +11,13 @@ readonly DOKKU_LIB_ROOT="${DOKKU_LIB_PATH:-/var/lib/dokku}"
readonly DOKKU_LOGS_DIR="${DOKKU_LOGS_DIR:="/var/log/dokku"}"
main() {
if [[ -f /etc/systemd/system/dokku-installer.conf ]] || [[ -f /etc/init/dokku-installer.conf ]]; then
if [[ -f /etc/systemd/system/dokku-installer.service ]] || [[ -f /etc/init/dokku-installer.conf ]]; then
service dokku-installer stop || true
fi
rm -f /etc/init/dokku-installer.conf
rm -f /etc/init/dokku-redeploy.conf
rm -f /etc/systemd/system/dokku-installer.conf
rm -f /etc/systemd/system/dokku-installer.service
rm -f /etc/systemd/system/dokku-redeploy.service
rm -f /etc/update-motd.d/99-dokku

View File

@@ -26,7 +26,7 @@ dokku postgres:import [db_name] < [db_name].dump
Dokku doesn't enforce a [300mb](https://devcenter.heroku.com/articles/slug-compiler#slug-size) limit on apps, but it's best practice to keep binary assets outside of git. Since containers are considered volatile in Dokku, external stores like s3 or storage mounts should be used for non-volatile items like user uploads. The Dokku storage core plugin can be used to mount local directories / volumes inside the docker container.
See the [persistent storage documentation](/dokku/advanced-usage/persistent-storage/) for more details.
See the [persistent storage documentation](/docs/advanced-usage/persistent-storage.md) for more details.
## Disaster Recovery

View File

@@ -15,44 +15,20 @@ Dokku accomplishes this by using an `app.json` file. The format in use is simila
However, Dokku currently only supports the nodes `scripts.dokku.predeploy` and `scripts.dokku.postdeploy`.
For buildpack apps, simply place an `app.json` file in the root of your repository.
For dockerfile apps, place `app.json` in the configured `WORKDIR` directory; otherwise Dokku defaults to the buildpack app behavior of looking in `/app`.
>NOTE: postdeploy changes are *NOT* committed to the app image.
> NOTE: postdeploy changes are *NOT* committed to the app image.
### Example app.json
> NOTE: Only the `scripts.dokku.predeploy` and `scripts.dokku.postdeploy` tasks are supported by Dokku at this time. All other fields will be ignored and can be omitted.
```json
{
"name": "barebones nodejs",
"description": "A barebones Node.js app using Express 4.",
"keywords": [
"nodejs",
"express"
],
"repository": "https://github.com/michaelshobbs/node-js-sample",
"scripts": {
"dokku": {
"predeploy": "touch /app/predeploy.test",
"postdeploy": "curl https://some.external.api.service.com/deployment?state=success"
}
},
"env": {
"SECRET_TOKEN": {
"description": "A secret key for verifying the integrity of signed cookies.",
"value": "secret"
},
"WEB_CONCURRENCY": {
"description": "The number of processes to run.",
"generator": "echo 5"
}
},
"image": "gliderlabs/herokuish",
"addons": [
"dokku-postgres",
"dokku-redis"
],
"buildpacks": [
{
"url": "https://github.com/heroku/heroku-buildpack-nodejs"
}
]
}
}
```

View File

@@ -5,15 +5,15 @@
Pass [options](https://docs.docker.com/engine/reference/run/) to Docker during Dokku's `build`, `deploy` and `run` phases
```
docker-options <app> [phase(s)] # Display app's Docker options for all phases (or comma separated phase list)
docker-options:add <app> <phase(s)> OPTION # Add Docker option to app for phase (comma-separated phase list)
docker-options:remove <app> <phase(s)> OPTION # Remove Docker option from app for phase (comma-separated phase list)
docker-options:report [<app>] [<flag>] # Displays a docker options report for one or more apps
```
> When specifying multiple phases, they **must** be comma-separated _without_ spaces in between each phase, like so:
>
> ```shell
> dokku docker-options:add myapp deploy,run "-v /home/dokku/logs/myapp:/app/logs"
> dokku docker-options:add node-js-app deploy,run "-v /var/log/node-js-app:/app/logs"
> ```
## About Dokku phases
@@ -22,41 +22,73 @@ Dokku deploys your application in multiple "phases" and the `docker-options` plu
- `build`: the container that executes the appropriate buildpack
- `deploy`: the container that executes your running/deployed application
- `run`: the container that executes any arbitrary command via `dokku run myapp`
- `run`: the container that executes any arbitrary command via `dokku run`
## Examples
### Add Docker options
Add some options for the deployed/running app and when executing [`dokku run`](/dokku/deployment/one-off-processes/):
Add some options for the deployed/running app and when executing [`dokku run`](/docs/deployment/one-off-processes.md):
```shell
# Mount a host volume in a Docker container: "-v /host/path:/container/path"
dokku docker-options:add myapp deploy "-v /home/dokku/logs/myapp:/app/logs"
dokku docker-options:add myapp run "-v /home/dokku/logs/myapp:/app/logs"
dokku docker-options:add node-js-app deploy "-v /var/log/node-js-app:/app/logs"
dokku docker-options:add node-js-app run "-v /var/log/node-js-app:/app/logs"
```
> Note: When [mounting a host directory](https://docs.docker.com/engine/reference/run/#volume-shared-filesystems) in a Dokku app you should first create that directory as user `dokku` and then mount the directory under `/app` in the container using `docker-options` as above. Otherwise the app will lack write permission in the directory.
### Output Docker options
```shell
dokku docker-options myapp
```
```
Deploy options:
-v /home/dokku/logs/myapp:/app/logs
Run options:
-v /home/dokku/logs/myapp:/app/logs
```
### Remove a Docker option
```shell
dokku docker-options:remove myapp run "-v /home/dokku/logs/myapp:/app/logs"
dokku docker-options:remove node-js-app run "-v /var/log/node-js-app:/app/logs"
```
### Displaying docker-options reports about an app
> New as of 0.8.1
You can get a report about the app's docker-options status using the `docker-options:report` command:
```shell
dokku docker-options:report
```
```
=====> node-js-app docker options information
Docker options build:
Docker options deploy: -v /var/log/node-js-app:/app/logs
Docker options run: -v /var/log/node-js-app:/app/logs
=====> python-sample docker options information
Docker options build:
Docker options deploy:
Docker options run:
=====> ruby-sample docker options information
Docker options build:
Docker options deploy:
Docker options run:
```
You can run the command for a specific app also.
```shell
dokku docker-options:report node-js-app
```
```
=====> node-js-app docker options information
Storage build mounts:
Storage deploy mounts: -v /var/log/node-js-app:/app/logs
Storage run mounts: -v /var/log/node-js-app:/app/logs
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku docker-options:report node-js-app --docker-options-build
```
## Advanced usage
In your applications folder `/home/dokku/app_name` create a file called `DOCKER_OPTIONS_RUN` (or `DOCKER_OPTIONS_BUILD` or `DOCKER_OPTIONS_DEPLOY`).
@@ -77,4 +109,4 @@ The above example will result in the following options being passed to Docker du
You may also include comments (lines beginning with a #) and blank lines in the DOCKER_OPTIONS file.
Move information on Docker options can be found here: http://docs.docker.io/en/latest/reference/run/ .
More information on Docker options can be found here: https://docs.docker.com/engine/reference/commandline/run/.

View File

@@ -8,41 +8,96 @@ The preferred method to mount external containers to a Dokku managed container,
```
storage:list <app> # List bind mounts for app's container(s) (host:container)
storage:mount <app> <host-dir:container-dir> # Create a new bind mount
storage:report [<app>] [<flag>] # Displays a checks report for one or more apps
storage:unmount <app> <host-dir:container-dir> # Remove an existing bind mount
```
> The storage plugin is compatible with storage mounts created with the docker-options. The storage plugin will only list mounts from the deploy/run phase.
## Ideology and Background
The storage plugin requires explicit paths on the host side. This is intentional to ensure that new users avoid running into unexpected results with implicit paths that may not exist (a feature deprecate in [Docker 1.9.0](https://github.com/docker/docker/releases/tag/v1.9.0])). The container directory is created for the mount point in the container. Any existing directory contents are not accessible after a mount is added to the container. Dokku creates a new directory `/var/lib/dokku/data/storage` during installation, it's the general consensus that new users should use this directory. Mounts are only available at run and deploy times, you must redeploy (restart) an app to mount or unmount to an existing app's container.
The storage plugin requires explicit paths on the host side. This is intentional to ensure that new users avoid running into unexpected results with implicit paths that may not exist (a feature deprecated in [Docker 1.9.0](https://github.com/docker/docker/releases/tag/v1.9.0])). The container directory is created for the mount point in the container. Any existing directory contents are not accessible after a mount is added to the container. Dokku creates a new directory `/var/lib/dokku/data/storage` during installation, it's the general consensus that new users should use this directory. Mounts are only available at run and deploy times, you must redeploy (restart) an app to mount or unmount to an existing app's container.
## Usage
This example demonstrates how to mount the recommended directory to `/storage` inside the container:
This example demonstrates how to mount the recommended directory to `/storage` inside an application called `node-js-app`:
```shell
dokku storage:mount app-name /var/lib/dokku/data/storage:/storage
# we use a subdirectory inside of the host directory to scope it to just the app
dokku storage:mount node-js-app /var/lib/dokku/data/storage/node-js-app:/storage
```
Dokku will then mount the shared contents of `/var/lib/dokku/data/storage` to `/storage` inside the container.
Once you have mounted persistent storage, you will also need to restart the application. See the
[process scaling documentation](/docs/deployment/process-management.md) for more information.
```shell
dokku ps:rebuild app-name
```
A more complete workflow may require making a custom directory for your application and mounting it within your `/app/storage` directory instead. The mount point is *not* relative to your application's working directory, and is instead relative to the root of the container.
```shell
# creating storage for the app 'ruby-rails-sample'
mkdir -p /var/lib/dokku/data/storage/ruby-rails-sample
# creating storage for the app 'node-js-app'
mkdir -p /var/lib/dokku/data/storage/node-js-app
# ensure the proper user has access to this directory
chown -R dokku:dokku /var/lib/dokku/data/storage/ruby-rails-sample
chown -R dokku:dokku /var/lib/dokku/data/storage/node-js-app
# as of 0.7.x, you should chown using the `32767` user and group id
chown -R 32767:32767 /var/lib/dokku/data/storage/ruby-rails-sample
chown -R 32767:32767 /var/lib/dokku/data/storage/node-js-app
# mount the directory into your container's /app/storage directory, relative to root
dokku storage:mount app-name /var/lib/dokku/data/storage/app-name:/app/storage
dokku storage:mount app-name /var/lib/dokku/data/storage/node-js-app:/app/storage
```
You can mount one or more directories as desired by following the above pattern.
### Displaying storage reports about an app
> New as of 0.8.1
You can get a report about the app's storage status using the `storage:report` command:
```shell
dokku storage:report
```
```
=====> node-js-app storage information
Storage build mounts:
Storage deploy mounts: -v /var/lib/dokku/data/storage/node-js-app:/app/storage
Storage run mounts: -v /var/lib/dokku/data/storage/node-js-app:/app/storage
=====> python-sample storage information
Storage build mounts:
Storage deploy mounts:
Storage run mounts:
=====> ruby-sample storage information
Storage build mounts:
Storage deploy mounts:
Storage run mounts:
```
You can run the command for a specific app also.
```shell
dokku storage:report node-js-app
```
```
=====> node-js-app storage information
Storage build mounts:
Storage deploy mounts: -v /var/lib/dokku/data/storage/node-js-app:/app/storage
Storage run mounts: -v /var/lib/dokku/data/storage/node-js-app:/app/storage
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku storage:report node-js-app --storage-deploy-mounts
```
## Use Cases
### Persistent storage
@@ -73,15 +128,10 @@ You cannot use mounted volumes during the build phase of a Dockerfile deploy. Th
> Note: **This can cause data loss** if you bind a mount under `/app` in buildpack apps as herokuish will attempt to remove the original app path during the build phase.
## Docker-Options Note
The storage plugin is compatible with storage mounts created with the docker-options. The storage plugin will only list mounts from the deploy phase.
## Application User and Persistent Storage file ownership (buildpack apps only)
> New as of 0.7.1
## Application User and Persistent Storage file ownership (buildpack apps only)
By default, Dokku will execute your buildpack application processes as the `herokuishuser` user. You may override this by setting the `DOKKU_APP_USER` config variable.
> NOTE: this user must exist in your herokuish image.

View File

@@ -3,11 +3,11 @@
> New as of 0.4.0
```
plugin # Print active plugins
plugin:disable <name> # Disable an installed plugin (third-party only)
plugin:enable <name> # 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:uninstall <name> # 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,30 +31,30 @@ dokku plugin
```
plugn: dev
00_dokku-standard 0.7.2 enabled dokku core standard plugin
20_events 0.7.2 enabled dokku core events logging plugin
apps 0.7.2 enabled dokku core apps plugin
build-env 0.7.2 enabled dokku core build-env plugin
certs 0.7.2 enabled dokku core certificate management plugin
checks 0.7.2 enabled dokku core checks plugin
common 0.7.2 enabled dokku core common plugin
config 0.7.2 enabled dokku core config plugin
docker-options 0.7.2 enabled dokku core docker-options plugin
domains 0.7.2 enabled dokku core domains plugin
enter 0.7.2 enabled dokku core enter plugin
git 0.7.2 enabled dokku core git plugin
logs 0.7.2 enabled dokku core logs plugin
named-containers 0.7.2 enabled dokku core named containers plugin
nginx-vhosts 0.7.2 enabled dokku core nginx-vhosts plugin
plugin 0.7.2 enabled dokku core plugin plugin
proxy 0.7.2 enabled dokku core proxy plugin
ps 0.7.2 enabled dokku core ps plugin
repo 0.7.2 enabled dokku core repo plugin
shell 0.7.2 enabled dokku core shell plugin
ssh-keys 0.7.2 enabled dokku core ssh-keys plugin
storage 0.7.2 enabled dokku core storage plugin
tags 0.7.2 enabled dokku core tags plugin
tar 0.7.2 enabled dokku core tar plugin
00_dokku-standard 0.10.3 enabled dokku core standard plugin
20_events 0.10.3 enabled dokku core events logging plugin
apps 0.10.3 enabled dokku core apps plugin
build-env 0.10.3 enabled dokku core build-env plugin
certs 0.10.3 enabled dokku core certificate management plugin
checks 0.10.3 enabled dokku core checks plugin
common 0.10.3 enabled dokku core common plugin
config 0.10.3 enabled dokku core config plugin
docker-options 0.10.3 enabled dokku core docker-options plugin
domains 0.10.3 enabled dokku core domains plugin
enter 0.10.3 enabled dokku core enter plugin
git 0.10.3 enabled dokku core git plugin
logs 0.10.3 enabled dokku core logs plugin
named-containers 0.10.3 enabled dokku core named containers plugin
nginx-vhosts 0.10.3 enabled dokku core nginx-vhosts plugin
plugin 0.10.3 enabled dokku core plugin plugin
proxy 0.10.3 enabled dokku core proxy plugin
ps 0.10.3 enabled dokku core ps plugin
repo 0.10.3 enabled dokku core repo plugin
shell 0.10.3 enabled dokku core shell plugin
ssh-keys 0.10.3 enabled dokku core ssh-keys plugin
storage 0.10.3 enabled dokku core storage plugin
tags 0.10.3 enabled dokku core tags plugin
tar 0.10.3 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.
@@ -72,17 +72,6 @@ Receiving objects: 100% (646/646), 134.24 KiB | 0 bytes/s, done.
Resolving deltas: 100% (406/406), done.
Checking connectivity... done.
-----> Plugin postgres enabled
-----> Migrating zero downtime env variables to 0.5.x. The following variables have been deprecated
=====> DOKKU_SKIP_ALL_CHECKS DOKKU_SKIP_DEFAULT_CHECKS
=====> Please use dokku checks:[disable|enable] <app> to control zero downtime functionality
=====> Migration complete
=====>
-----> Migrating zero downtime env variables to 0.6.x. The following variables will be migrated
=====> DOKKU_CHECKS_ENABLED -> DOKKU_CHECKS_SKIPPED
=====> Migration complete
=====>
Adding user dokku to group adm
Starting nginx (via systemctl): nginx.service.
```
You can also uninstall a third-party plugin using the `plugin:uninstall` command:

View File

@@ -3,19 +3,21 @@
> New as of 0.5.0, Enhanced in 0.6.0
```
proxy <app> # Show proxy settings for app
proxy:disable <app> # Disable proxy for app
proxy:enable <app> # Enable proxy for app
proxy:ports <app> # List proxy port mappings for app
proxy:ports-add <app> <scheme>:<host-port>:<container-port> [<scheme>:<host-port>:<container-port>...] # Set proxy port mappings for app
proxy:ports-clear <app> # Clear all proxy port mappings for app
proxy:ports-remove <app> <host-port> [<host-port>|<scheme>:<host-port>:<container-port>...] # Unset proxy port mappings for app
proxy:report [<app>] [<flag>] # Displays a proxy report for one or more apps
proxy:set <app> <proxy-type> # Set proxy type for app
```
In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into the proxy plugin. Dokku 0.6.0 introduced the ability to map host ports to specific container ports. In the future this will allow other proxy software - such as HAProxy or Caddy - to be used in place of nginx.
## Container network interface binding
## Usage
### Container network interface binding
> New as of 0.5.0
@@ -58,7 +60,51 @@ CONTAINER ID IMAGE COMMAND CREATED
d6499edb0edb dokku/node-js-app:latest "/bin/bash -c '/star About a minute ago Up About a minute 0.0.0.0:49153->5000/tcp node-js-app.web.1
```
## Proxy port mapping
### Displaying proxy reports about an app
> New as of 0.8.1
You can get a report about the app's proxy status using the `proxy:report` command:
```shell
dokku proxy:report
```
```
=====> node-js-app proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000 https:443:5000
=====> python-sample proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000
=====> ruby-sample proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000
```
You can run the command for a specific app also.
```shell
dokku proxy:report node-js-app
```
```
=====> node-js-app proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000 https:443:5000
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku proxy:report node-js-app --proxy-type
```
### Proxy port mapping
> New as of 0.6.0
@@ -141,7 +187,7 @@ By default, buildpack apps and dockerfile apps **without** explicitly exposed po
> Note: This default behavior **will not** be automatically changed on subsequent pushes and must be manipulated with the `proxy:ports-*` syntax detailed above.
## Proxy Port Scheme
#### Proxy Port Scheme
The proxy port scheme is as follows:

View File

@@ -3,7 +3,7 @@
> New as of 0.6.0
```
repo:gc <app> # Runs 'git gc --agressive' against the application's repo
repo:gc <app> # Runs 'git gc --aggressive' against the application's repo
repo:purge-cache <app> # Deletes the contents of the build cache stored in the repository
```
@@ -13,7 +13,7 @@ The repository plugin is meant to allow users to perform management commands aga
### Git Garbage Collection
This will run a git gc --agressive against the applications repo. This is performed on the Dokku host, and not within an application container.
This will run a git gc --aggressive against the applications repo. This is performed on the Dokku host, and not within an application container.
```shell
dokku repo:gc node-js-app

View File

@@ -5,11 +5,11 @@
- The nginx-vhosts template language is now [sigil](https://github.com/gliderlabs/sigil)
- No need to escape literal `$` characters (or other "bash-isms")
- Template variables are represented as {{ .VARIABLE_NAME }}
- A detailed list of template variables can be found [here](/dokku/configuration/nginx/#available-template-variables)
- A detailed list of template variables can be found [here](/docs/configuration/nginx.md#available-template-variables)
- A custom nginx-vhosts template must be named `nginx.conf.sigil`
- The default path for this custom template is the root of your repo (i.e. `/app` in the container or `WORKDIR` if defined in a dockerfile app)
- Dokku no longer looks for this file in `/home/dokku/myapp` on the Dokku server
- Check out an example template [here](/dokku/configuration/nginx/)
- Check out an example template [here](/docs/configuration/nginx.md)
- Support for server-wide SSL certs have been dropped in favor of using the `certs` plugin
- `dokku certs:add myapp < certs.tar`
- All domains for an SSL-enabled app will be redirected to https by default
@@ -20,6 +20,6 @@
## Dockerfile apps with exposed ports
- Dockerfiles with `EXPOSE` clauses will get [all **tcp** ports proxied by default](/dokku/deployment/methods/dockerfiles/#exposed-ports)
- Dockerfiles with `EXPOSE` clauses will get [all **tcp** ports proxied by default](/docs/deployment/methods/dockerfiles.md#exposed-ports)
- Note that nginx will proxy the same port numbers to listen publicly
- UDP ports can be exposed by disabling the [nginx proxy](/dokku/advanced-usage/proxy-management/) with `dokku proxy:disable myapp`
- UDP ports can be exposed by disabling the [nginx proxy](/docs/advanced-usage/proxy-management.md) with `dokku proxy:disable myapp`

View File

@@ -7,16 +7,16 @@
- `DOKKU_CHECKS_ENABLED` has been migrated to `DOKKU_CHECKS_SKIPPED`
- `DOKKU_CHECKS_DISABLED` is now a thing
- The values for the above can be a comma-separated list of process-types or the literal string `_all_`
- See the [updated `checks`](/dokku/deployment/zero-downtime-deploys/) docs for more info
- See the [updated `checks`](/docs/deployment/zero-downtime-deploys.md) docs for more info
## Proxy port mapping
- You can now configure host -> container proxy port mappings
- The UI is handled by the [proxy](/dokku/advanced-usage/proxy-management/) interface plugin by setting the `DOKKU_PROXY_PORT_MAP` config variable in the format of `scheme:host-port:container-port`. The default `nginx-vhosts` proxy plugin supports both the `http` and `https` schemes.
- The UI is handled by the [proxy](/docs/advanced-usage/proxy-management.md) interface plugin by setting the `DOKKU_PROXY_PORT_MAP` config variable in the format of `scheme:host-port:container-port`. The default `nginx-vhosts` proxy plugin supports both the `http` and `https` schemes.
- Default port mappings
- buildpack apps will be set to `http:80:5000` and will also include `https:443:5000` if SSL is enabled.
- dockerfile apps with explicitly exposed ports (i.e. using the `EXPOSE` directive) will be configured with a listener on each exposed port that proxies to the same port of the deployed application container.
- You may override this behavior with the [`proxy:ports-*` commands](/dokku/advanced-usage/proxy-management/) or by directly setting `DOKKU_PROXY_PORT_MAP` with the `config:set` command
- You may override this behavior with the [`proxy:ports-*` commands](/docs/advanced-usage/proxy-management.md) or by directly setting `DOKKU_PROXY_PORT_MAP` with the `config:set` command
- dockerfile apps without explicitly exposed ports will behave the same as a buildpack app
- NOTE: These defaults **are not** automatically changed on subsequent pushes and must be manipulated with the aforementioned commands

View File

@@ -2,12 +2,12 @@
## Persistent Storage
We should now properly handle file ownership for mounted directories. This was enhanced in 0.7.1. See the [persistent storage documentation](/dokku/advanced-usage/persistent-storage/) for more details.
We should now properly handle file ownership for mounted directories. This was enhanced in 0.7.1. See the [persistent storage documentation](/docs/advanced-usage/persistent-storage.md) for more details.
## Restart Policies
If you previously managed container restart policies via docker-options, these can now be managed natively via the built-in `ps` plugin. There is no migration necessary. See the [restart policy documentation](/dokku/deployment/process-management/#restart-policies) for more details.
If you previously managed container restart policies via docker-options, these can now be managed natively via the built-in `ps` plugin. There is no migration necessary. See the [restart policy documentation](/docs/deployment/process-management.md#restart-policies) for more details.
## SSH Keys
Dokku now has an `ssh-keys` plugin that can be used to manage ssh keys for the `dokku` user on the host operating system. See the [user management documentation](/dokku/deployment/user-management/) for more details.
Dokku now has an `ssh-keys` plugin that can be used to manage ssh keys for the `dokku` user on the host operating system. See the [user management documentation](/docs/deployment/user-management.md) for more details.

View File

@@ -2,10 +2,10 @@
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/mstile-310x150.png"/>
<square70x70logo src="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/mstile-310x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>

View File

@@ -2,37 +2,37 @@
"name": "Dokku",
"icons": [
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.7.2\/docs\/assets\/favicons\/android-chrome-36x36.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.10.3\/docs\/assets\/favicons\/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.7.2\/docs\/assets\/favicons\/android-chrome-48x48.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.10.3\/docs\/assets\/favicons\/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.7.2\/docs\/assets\/favicons\/android-chrome-72x72.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.10.3\/docs\/assets\/favicons\/android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.7.2\/docs\/assets\/favicons\/android-chrome-96x96.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.10.3\/docs\/assets\/favicons\/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.7.2\/docs\/assets\/favicons\/android-chrome-144x144.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.10.3\/docs\/assets\/favicons\/android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.7.2\/docs\/assets\/favicons\/android-chrome-192x192.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.10.3\/docs\/assets\/favicons\/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"

View File

@@ -1,7 +1,6 @@
body {
font-family: 'Open Sans', sans-serif;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-weight: 400;
font-size: 12px;
padding-bottom: 40px;
color: #5a5a5a;
-webkit-font-smoothing: antialiased;
@@ -21,7 +20,7 @@ h1 {
.header .heading {
color: #fff;
font-size: 23px;
margin: 0;
margin: 7px 0 0 0;
padding: 0 0 0 1em;
}
.header a {
@@ -36,13 +35,13 @@ h1 {
background-repeat: no-repeat;
}
.header .navbar-brand a {
background-image: url(https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/dokku.png);
background-image: url(https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/dokku.png);
text-indent: 40px;
}
.blurb {
color: #424242;
background-color: #ededed;
background-image: url(https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/gplaypattern.png);
background-image: url(https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/gplaypattern.png);
padding: 45px 0;
text-align: center;
}
@@ -67,7 +66,6 @@ h1 {
color: #444;
display: block;
font-weight: 400;
font-size: 14px;
margin: 0 20px;
padding: 3px 0;
text-align: center;
@@ -211,6 +209,7 @@ h1 {
.list-group-item {
border: none;
font-size: 14px;
font-weight: normal;
padding: .2rem .5rem;
color: #157577;
@@ -246,10 +245,9 @@ a.list-group-item {
-webkit-font-smoothing: antialiased;
box-sizing: border-box;
color: rgb(71, 74, 84);
font-size: 14px;
font-weight: normal;
height: 20px;
line-height: 20px;
line-height: 1.5;
text-align: left;
}
.markdown-body h1 {
@@ -602,6 +600,11 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
height: auto
}
}
.button.slack-button > img {
width: inherit;
}
@media (min-width: 768px) {
.col-md-offset-right-2 {
margin-right: 20.666667%;

View File

@@ -1 +1,12 @@
{ "max-versions": [ "0.3.26", "0.4.14", "0.5.8", "0.6.5", "0.7.2" ] }
{
"max-versions": [
"0.3.26",
"0.4.14",
"0.5.8",
"0.6.5",
"0.7.2",
"0.8.2",
"0.9.4",
"0.10.3"
]
}

View File

@@ -12,11 +12,11 @@ Let's take a quick look at the current Dokku nginx plugin that's shipped with Do
## Installing a plugin
[See the plugin management documentation](/dokku/advanced-usage/plugin-management/).
[See the plugin management documentation](/docs/advanced-usage/plugin-management.md).
## Creating your own plugin
[See the full documentation](/dokku/development/plugin-creation/).
[See the full documentation](/docs/development/plugin-creation.md).
## Official Plugins (Beta)
@@ -61,6 +61,7 @@ Note: The following plugins have been supplied by our community and may not have
[Benjamin-Dobell]: https://github.com/Benjamin-Dobell
[blag]: https://github.com/blag
[cameron-martin]: https://github.com/cameron-martin
[candlewaster]: https://notabug.org/candlewaster
[cedricziel]: https://github.com/cedricziel
[cef]: https://github.com/cef
[cjblomqvist]: https://github.com/cjblomqvist
@@ -68,6 +69,7 @@ Note: The following plugins have been supplied by our community and may not have
[cu12]: https://github.com/cu12
[darkpixel]: https://github.com/darkpixel
[dokku]: https://github.com/dokku
[dokku-community]: https://github.com/dokku-community
[dyson]: https://github.com/dyson
[F4-Group]: https://github.com/F4-Group
[fermuch]: https://github.com/fermuch
@@ -89,6 +91,7 @@ Note: The following plugins have been supplied by our community and may not have
[luxifer]: https://github.com/luxifer
[Maciej Łebkowski]: https://github.com/mlebkowski
[matto1990]: https://github.com/matto1990
[mbreit]: https://github.com/mbreit
[mbriskar]: https://github.com/mbriskar
[michaelshobbs]: https://github.com/michaelshobbs
[mikecsh]: https://github.com/mikecsh
@@ -118,6 +121,7 @@ Note: The following plugins have been supplied by our community and may not have
[thrashr888]: https://github.com/thrashr888
[wmluke]: https://github.com/wmluke
[Zenedith]: https://github.com/Zenedith
[fteychene]: https://github.com/fteychene
### Datastores
@@ -161,7 +165,7 @@ Note: The following plugins have been supplied by our community and may not have
[c77cbf1]: https://github.com/dokku/dokku/commit/c77cbf1d3ae07f0eafb85082ed7edcae9e836147
[28de3ec]: https://github.com/dokku/dokku/commit/28de3ecaa3231a223f83fd8d03f373308673bc40
### Dokku Features
### Plugins Implementing New Dokku Functionality
| Plugin | Author | Compatibility |
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
@@ -171,17 +175,20 @@ Note: The following plugins have been supplied by our community and may not have
| [Dokku Copy App Config Files](https://github.com/josegonzalez/dokku-supply-config) | [josegonzalez][] | 0.4.0+ |
| [Dokku Registry](https://github.com/agco-adm/dokku-registry)<sup>1</sup> | [agco-adm][] | 0.4.0+ |
| [Dokku Require](https://github.com/crisward/dokku-require)<sup>2</sup> | [crisward][] | 0.4.0+ |
| [git rev-parse HEAD in env](https://github.com/cjblomqvist/dokku-git-rev) | [cjblomqvist][] | 0.4.0+ |
| [git rev-parse HEAD in env](https://github.com/dokku-community/dokku-git-rev) | [cjblomqvist][] | 0.4.0+ |
| [Global Certificates](https://github.com/josegonzalez/dokku-global-cert) | [josegonzalez][] | 0.5.0+ |
| [Graduate (Environment Management)](https://github.com/glassechidna/dokku-graduate) | [Benjamin-Dobell][] | 0.4.0+ |
| [Haproxy tcp load balancer](https://github.com/256dpi/dokku-haproxy) | [256dpi][] | 0.4.0+ |
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
| [HTTP Auth Secure Apps](https://github.com/matto1990/dokku-secure-apps) | [matto1990][] | 0.4.0+ |
| [Monit (Health Checks)](https://github.com/mbreit/dokku-monit) | [mbreit][] | 0.8.0+ |
| [Nuke Containers](https://github.com/josegonzalez/dokku-nuke) | [josegonzalez][] | 0.4.0+ |
| [Open App Ports](https://github.com/josegonzalez/dokku-ports) | [josegonzalez][] | 0.3.x |
| [Proctype Filter](https://github.com/michaelshobbs/dokku-proctype-filter) | [michaelshobbs][] | 0.4.0+ |
| [robots.txt](https://notabug.org/candlewaster/dokku-robots.txt) | [candlewaster][] | 0.4.x |
| [SSH Deployment Keys](https://github.com/cedricziel/dokku-deployment-keys)<sup>3</sup> | [cedricziel][] | 0.4.0+ |
| [SSH Hostkeys](https://github.com/cedricziel/dokku-hostkeys-plugin)<sup>4</sup> | [cedricziel][] | 0.3.x |
| [Application build hook](https://github.com/fteychene/dokku-build-hook) | [fteychene][] | 0.4.0+ |
[217d00a]: https://github.com/dokku/dokku/commit/217d00a1bc47a7e24d8847617bb08a1633025fc7
@@ -216,10 +223,11 @@ Note: The following plugins have been supplied by our community and may not have
| [Rollbar](https://github.com/iloveitaly/dokku-rollbar) | [iloveitaly][] | 0.5.0+ |
| [Slack Notifications](https://github.com/ribot/dokku-slack) | [ribot][] | 0.4.0+ |
| [Tor](https://github.com/michaelshobbs/dokku-tor) | [michaelshobbs][] | 0.4.0+ |
| [User ACL](https://github.com/mlebkowski/dokku-acl) | [Maciej Łebkowski][] | 0.4.0+ |
| [User ACL](https://github.com/dokku-community/dokku-acl) | [Maciej Łebkowski][] | 0.4.0+ |
| [Webhooks](https://github.com/nickstenning/dokku-webhooks) | [nickstenning][] | 0.3.x |
| [Wkhtmltopdf](https://github.com/mbriskar/dokku-wkhtmltopdf) | [mbriskar][] | 0.4.0+ |
| [Wordpress Setup](https://github.com/dudagroup/dokku-wordpress-template) | [abossard][] | |
| [Dokku Wordpress](https://github.com/dokku-community/dokku-wordpress) | [dokku-community][] | 0.4.0+ |
| [Access](https://github.com/mainto/dokku-access) | [mainto](https://github.com/mainto) | 0.4.0+ |
### Deprecated Plugins

View File

@@ -70,7 +70,7 @@ If everything is working correctly, you should also be able to query for any oth
If they all return your IP address, you have set DNS up properly for dokku. You should also be able to `ssh root@myserver.example.tld` and access your server.
Proceed with the setup instructions in the [installation documentation](/dokku/getting-started/installation/)
Proceed with the setup instructions in the [installation documentation](/docs/getting-started/installation.md)
#### Using the root of your domain (myapp.example.tld)

View File

@@ -5,15 +5,17 @@
```
domains:add <app> <domain> [<domain> ...] # Add domains to app
domains:add-global <domain> [<domain> ...] # Add global domain names
domains [<app>] # List domains
domains:clear <app> # Clear all domains for app
domains:disable <app> # Disable VHOST support
domains:enable <app> # Enable VHOST support
domains:remove <app> <domain> [<domain> ...] # Remove domains from app
domains:remove-global <domain> [<domain> ...] # Remove global domain names
domains:report [<app>] [<flag>] # Displays a domains report for one or more apps
domains:set <app> <domain> [<domain> ...] # Set domains for app
domains:set-global <domain> [<domain> ...] # Set global domain names
```
> Adding a domain before deploying an application will result in port mappings being set. This may cause issues for applications that use non-standard ports, as those will not be automatically detected. Please refer to the [proxy documentation](/dokku/advanced-usage/proxy-management/) for information as to how to reconfigure the mappings.
> Adding a domain before deploying an application will result in port mappings being set. This may cause issues for applications that use non-standard ports, as those will not be automatically detected. Please refer to the [proxy documentation](/docs/advanced-usage/proxy-management.md) for information as to how to reconfigure the mappings.
## Customizing hostnames
@@ -39,7 +41,7 @@ NEW_SUBDOMAIN=`echo $SUBDOMAIN | rev`
echo "$NEW_SUBDOMAIN.$VHOST"
```
If the `nginx-hostname` has no output, the normal hostname algorithm will be executed.
If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed.
## Disabling VHOSTS
@@ -68,11 +70,64 @@ dokku domains:clear myapp
# remove a custom domain from app
dokku domains:remove myapp example.com
# set all custom domains for app
dokku domains:set myapp example.com example.org
```
## Displaying domains reports about an app
> New as of 0.8.1
You can get a report about the app's domains status using the `domains:report` command:
```shell
dokku domains:report
```
```
=====> node-js-app domains information
Domains app enabled: true
Domains app vhosts: ruby-sample.example.org
Domains global enabled: true
Domains global vhosts: example.org
=====> python-sample domains information
Domains app enabled: true
Domains app vhosts: ruby-sample.example.org
Domains global enabled: true
Domains global vhosts: example.org
=====> ruby-sample domains information
Domains app enabled: true
Domains app vhosts: ruby-sample.example.org
Domains global enabled: true
Domains global vhosts: example.org
```
You can run the command for a specific app also.
```shell
dokku domains:report node-js-app
```
```
=====> node-js-app domains information
Domains app enabled: true
Domains app vhosts: node-js-app.example.org
Domains global enabled: true
Domains global vhosts: example.org
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku domains:report node-js-app --domains-app-enabled
```
## Default site
By default, Dokku will route any received request with an unknown HOST header value to the lexicographically first site in the nginx config stack. If this is not the desired behavior, you may want to add the following configuration to the global nginx configuration. This will catch all unknown HOST header values and return a `410 Gone` response. You can replace the `return 410;` with `return 444;` which will cause nginx to not respond to requests that do not match known domains (connection refused).
By default, Dokku will route any received request with an unknown HOST header value to the lexicographically first site in the nginx config stack. If this is not the desired behavior, you may want to add the following configuration to the global nginx configuration.
Create the file at `/etc/nginx/conf.d/00-default-vhost.conf`:
```nginx
server {
@@ -85,17 +140,10 @@ server {
}
```
You may also wish to use a separate vhost in your `/etc/nginx/sites-enabled` directory. To do so, create the vhost in that directory as `/etc/nginx/sites-enabled/00-default.conf`. You will also need to change two lines in the main `nginx.conf`:
Make sure to reload nginx after creating this file by running `service nginx reload`.
```nginx
# Swap both conf.d include line and the sites-enabled include line. From:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
This will catch all unknown HOST header values and return a `410 Gone` response. You can replace the `return 410;` with `return 444;` which will cause nginx to not respond to requests that do not match known domains (connection refused).
# to the following
include /etc/nginx/sites-enabled/*;
include /etc/nginx/conf.d/*.conf;
```
The configuration file must be loaded before `/etc/nginx/conf.d/dokku.conf`, so it can not be arranged as a vhost in `/etc/nginx/sites-enabled` that is only processed afterwards.
Alternatively, you may push an app to your Dokku host with a name like "00-default". As long as it lists first in `ls /home/dokku/*/nginx.conf | head`, it will be used as the default nginx vhost.

View File

@@ -57,3 +57,55 @@ dokku config node-js-app --shell
#
# ENV='prod' COMPILE_ASSETS='1'
```
## Special Config Variables
The following list config variables have special meaning and can be set in a variety of ways.
> Warning: This list is not exhaustive, and may vary from version to version.
| Name | Default | How to modify | Description |
| ------------------------------ | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| `DOKKU_ROOT` | `~dokku` | `/etc/environment` | The root directory where dokku will store application repositories, as well as certain configuration files. |
| `DOKKU_IMAGE` | `gliderlabs/herokuish` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | The default image to use when building herokuish containers. |
| `DOKKU_LIB_ROOT` | `/var/lib/dokku` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | The directory where plugins, certain data, and general configuration is stored. |
| `PLUGIN_PATH` | `$DOKKU_LIB_ROOT/plugins"` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | The top-level directory where plugins are stored. |
| `PLUGIN_AVAILABLE_PATH` | `$PLUGIN_PATH/available"` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | The directory that holds all available plugins, including core. |
| `PLUGIN_ENABLED_PATH` | `$PLUGIN_PATH/enabled"` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | The directory that holds all enabled plugins, including core. |
| `PLUGIN_CORE_PATH` | `$DOKKU_LIB_ROOT/core-plugins"` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | The directory that stores all core plugins. |
| `PLUGIN_CORE_AVAILABLE_PATH` | `$PLUGIN_CORE_PATH/available"` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | The directory that stores all available core plugins. |
| `PLUGIN_CORE_ENABLED_PATH` | `$PLUGIN_CORE_PATH/enabled"` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | The directory that stores all enabled core plugins. |
| `DOKKU_LOGS_DIR` | `/var/log/dokku` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Where dokku logs should be written to. |
| `DOKKU_EVENTS_LOGFILE` | `$DOKKU_LOGS_DIR/events.log` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Where the events log file is written to. |
| `DOKKU_APP_NAME` | none | `--app APP` flag | Name of application to work on. Respected by core plugins. |
| `DOKKU_APPS_FORCE_DELETE` | none | `--force` flag | Whether to force delete an application. Also used by other plugins for destructive actions. |
| `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` <br /> `--rm-container` flag <br /> `--rm` flag | Whether to keep `dokku run` containers around or not. |
| `DOKKU_TRACE` | none | `dokku trace on` <br /> `dokku trace false` <br /> `--trace` flag | Turn on very verbose debugging. |
| `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | |
| `DOKKU_APP_RESTORE` | `1` | `dokku config:set` <br /> `dokku ps:stop` | |
| `DOKKU_APP_TYPE` | `herokuish` | Auto-detected by using buildpacks or dockerfile | |
| `DOKKU_CHECKS_DISABLED` | none | `dokku checks:disable` | |
| `DOKKU_CHECKS_ENABLED` | none | `dokku checks:enable` | |
| `DOKKU_CHECKS_SKIPPED` | none | `dokku checks:skip` | |
| `DOKKU_CHECKS_WAIT` | `5` | `dokku config:set` | Wait this many seconds for the container to start before running checks.
| `DOKKU_CHECKS_TIMEOUT` | `30` | `dokku config:set` | Wait this many seconds for each response before marking it as a failure.
| `DOKKU_CHECKS_ATTEMPTS` | `5` | `dokku config:set` | Number of retries for to run for a specific check before marking it as a failure
| `DOKKU_DEFAULT_CHECKS_WAIT` | `10` | `dokku config:set` | If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running. |
| `DOKKU_DEPLOY_BRANCH` | `master` | `dokku config:set` | Branch to deploy by default. |
| `DOKKU_DISABLE_PROXY` | none | `dokku proxy:disable` <br /> `dokku proxy:enable` | Disables the proxy in front of your application, resulting in publicly routing the docker container. |
| `DOKKU_DOCKER_STOP_TIMEOUT` | `10` | `dokku config:set` | Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands _also_ respect this value. If not specified, the docker defaults for the [docker stop command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.|
| `DOKKU_DOCKERFILE_CMD` | dockerfile cmd | `dokku config:set` | |
| `DOKKU_DOCKERFILE_CACHE_BUILD` | none | `dokku config:set` | |
| `DOKKU_DOCKERFILE_ENTRYPOINT` | dockerfile entrypoint | `dokku config:set` | |
| `DOKKU_DOCKERFILE_PORTS` | dockerfile ports | `dokku config:set` | |
| `DOKKU_DOCKERFILE_START_CMD` | none | `dokku config:set` | |
| `DOKKU_NGINX_PORT` | automatically assigned | `dokku config:set` | |
| `DOKKU_NGINX_SSL_PORT` | automatically assigned | `dokku config:set` | |
| `DOKKU_PROXY_PORT_MAP` | automatically assigned | `dokku proxy:ports-add` <br /> `dokku proxy:ports-remove`, `dokku proxy:ports-clear` | |
| `DOKKU_SKIP_ALL_CHECKS` | none | `dokku config:set` | |
| `DOKKU_SKIP_CLEANUP` | | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | When a deploy is triggered, if this is set to a non-empty value, then old docker containers and images will not be removed. |
| `DOKKU_SKIP_DEFAULT_CHECKS` | | `dokku config:set` | |
| `DOKKU_SKIP_DEPLOY` | | `dokku config:set` | |
| `DOKKU_WAIT_TO_RETIRE` | `60` | `dokku config:set` | After a successful deploy, the grace period given to old containers before they are stopped/terminated. This is useful for ensuring completion of long-running http connections. |

View File

@@ -15,12 +15,33 @@ nginx:error-logs <app> [-t] # Show the nginx error logs for an appl
Dokku uses a templating library by the name of [sigil](https://github.com/gliderlabs/sigil) to generate nginx configuration for each app. You may also provide a custom template for your application as follows:
- Copy the following example template to a file named `nginx.conf.sigil` and either:
- check it into the root of your app repo for buildpack applications
- If using a buildpack application, you __must__ check it into the root of your app repo.
- `ADD` it to your dockerfile `WORKDIR`
- if your dockerfile has no `WORKDIR`, `ADD` it to the `/app` folder
> When using a custom `nginx.conf.sigil` file, depending upon your application configuration, you *may* be exposing the file externally. As this file is extracted before the container is run, you can, safely delete it in a custom `entrypoint.sh` configured in a Dockerfile `ENTRYPOINT`.
> The default template is available [here](https://github.com/dokku/dokku/blob/master/plugins/nginx-vhosts/templates/nginx.conf.sigil), and can be used as a guide for your own, custom `nginx.conf.sigil` file. Please refer to the appropriate template file version for your Dokku version.
### Available template variables
```
{{ .APP }} Application name
{{ .APP_SSL_PATH }} Path to SSL certificate and key
{{ .DOKKU_ROOT }} Global Dokku root directory (ex: app dir would be `{{ .DOKKU_ROOT }}/{{ .APP }}`)
{{ .DOKKU_APP_LISTENERS }} List of IP:PORT pairs of app containers
{{ .NGINX_PORT }} Non-SSL nginx listener port (same as `DOKKU_NGINX_PORT` config var)
{{ .NGINX_SSL_PORT }} SSL nginx listener port (same as `DOKKU_NGINX_SSL_PORT` config var)
{{ .NOSSL_SERVER_NAME }} List of non-SSL VHOSTS
{{ .PROXY_PORT_MAP }} List of port mappings (same as `DOKKU_PROXY_PORT_MAP` config var)
{{ .PROXY_UPSTREAM_PORTS }} List of configured upstream ports (derived from `DOKKU_PROXY_PORT_MAP` config var)
{{ .RAW_TCP_PORTS }} List of exposed tcp ports as defined by Dockerfile `EXPOSE` directive (**Dockerfile apps only**)
{{ .SSL_INUSE }} Boolean set when an app is SSL-enabled
{{ .SSL_SERVER_NAME }} List of SSL VHOSTS
```
> Note: Application config variables are available for use in custom templates. To do so, use the form of `{{ var "FOO" }}` to access a variable named `FOO`.
### Example Custom Template
Use case: add an `X-Served-By` header to requests
@@ -64,26 +85,6 @@ upstream {{ .APP }} {
}
```
### Available template variables
```
{{ .APP }} Application name
{{ .APP_SSL_PATH }} Path to SSL certificate and key
{{ .DOKKU_ROOT }} Global Dokku root directory (ex: app dir would be `{{ .DOKKU_ROOT }}/{{ .APP }}`)
{{ .DOKKU_APP_LISTENERS }} List of IP:PORT pairs of app containers
{{ .NGINX_PORT }} Non-SSL nginx listener port (same as `DOKKU_NGINX_PORT` config var)
{{ .NGINX_SSL_PORT }} SSL nginx listener port (same as `DOKKU_NGINX_SSL_PORT` config var)
{{ .NOSSL_SERVER_NAME }} List of non-SSL VHOSTS
{{ .PROXY_PORT_MAP }} List of port mappings (same as `DOKKU_PROXY_PORT_MAP` config var)
{{ .PROXY_UPSTREAM_PORTS }} List of configured upstream ports (derived from `DOKKU_PROXY_PORT_MAP` config var)
{{ .RAW_TCP_PORTS }} List of exposed tcp ports as defined by Dockerfile `EXPOSE` directive (**Dockerfile apps only**)
{{ .SSL_INUSE }} Boolean set when an app is SSL-enabled
{{ .SSL_SERVER_NAME }} List of SSL VHOSTS
```
> Note: Application config variables are available for use in custom templates. To do so, use the form of `{{ var "FOO" }}` to access a variable named `FOO`.
### Example HTTP to HTTPS Custom Template
Use case: a simple dockerfile app that includes `EXPOSE 80`
@@ -101,6 +102,7 @@ server {
server {
listen [::]:443 ssl spdy;
listen 443 ssl spdy;
{{ if .NOSSL_SERVER_NAME }}server_name {{ .NOSSL_SERVER_NAME }}; {{ end }}
{{ if .SSL_SERVER_NAME }}server_name {{ .SSL_SERVER_NAME }}; {{ end }}
access_log /var/log/nginx/{{ .APP }}-access.log;
@@ -176,7 +178,7 @@ upstream {{ $.APP }}-{{ $upstream_port }} {
{{ $listener_list := $listeners | split ":" }}
{{ $listener_ip := index $listener_list 0 }}
{{ $listener_port := index $listener_list 1 }}
server {{ $listener_ip }}:{{ $upstream_port }};{{ end }}
server {{ $listener_ip }}:{{ $listener_port }};{{ end }}
}
{{ end }}
```
@@ -202,36 +204,36 @@ The example above uses additional configuration files directly on the Dokku host
## Domains plugin
See the [domain configuration documentation](/dokku/configuration/domains/).
See the [domain configuration documentation](/docs/configuration/domains.md).
## Customizing hostnames
See the [customizing hostnames documentation](/dokku/configuration/domains/#customizing-hostnames).
See the [customizing hostnames documentation](/docs/configuration/domains.md#customizing-hostnames).
## Disabling VHOSTS
See the [disabling vhosts documentation](/dokku/configuration/domains/#disabling-vhosts).
See the [disabling vhosts documentation](/docs/configuration/domains.md#disabling-vhosts).
## Default site
See the [default site documentation](/dokku/configuration/domains/#default-site).
See the [default site documentation](/docs/configuration/domains.md#default-site).
## Running behind a load balancer
See the [load balancer documentation](/dokku/configuration/ssl/#running-behind-a-load-balancer).
See the [load balancer documentation](/docs/configuration/ssl.md#running-behind-a-load-balancer).
## HSTS Header
See the [HSTS documentation](/dokku/configuration/ssl/#hsts-header).
See the [HSTS documentation](/docs/configuration/ssl.md#hsts-header).
## SSL Configuration
See the [ssl documentation](/dokku/configuration/ssl/).
See the [ssl documentation](/docs/configuration/ssl.md).
## Disabling Nginx
See the [proxy documentation](/dokku/advanced-usage/proxy-management/).
See the [proxy documentation](/docs/advanced-usage/proxy-management.md).
## Managing Proxy Port mappings
See the [proxy documentation](/dokku/advanced-usage/proxy-management/#proxy-port-mapping).
See the [proxy documentation](/docs/advanced-usage/proxy-management.md#proxy-port-mapping).

View File

@@ -7,8 +7,8 @@ Dokku supports SSL/TLS certificate inspection and CSR/Self-signed certificate ge
```
certs:add <app> CRT KEY # Add an ssl endpoint to an app. Can also import from a tarball on stdin.
certs:generate <app> DOMAIN # Generate a key and certificate signing request (and self-signed certificate)
certs:info <app> # Show certificate information for an ssl endpoint.
certs:remove <app> # Remove an SSL Endpoint from an app.
certs:report [<app>] [<flag>] # Displays an ssl report for one or more apps
certs:update <app> CRT KEY # Update an SSL Endpoint on an app. Can also import from a tarball on stdin
```
@@ -17,7 +17,7 @@ certs:update <app> CRT KEY # Update an SSL Endpoint on an app. Can
dokku nginx:import-ssl <app> < certs.tar
```
> Adding an ssl certificate before deploying an application will result in port mappings being updated. This may cause issues for applications that use non-standard ports, as those may not be automatically detected. Please refer to the [proxy documentation](/dokku/advanced-usage/proxy-management/) for information as to how to reconfigure the mappings.
> Adding an ssl certificate before deploying an application will result in port mappings being updated. This may cause issues for applications that use non-standard ports, as those may not be automatically detected. Please refer to the [proxy documentation](/docs/advanced-usage/proxy-management.md) for information as to how to reconfigure the mappings.
## Per-application certificate management
@@ -29,8 +29,7 @@ The `certs:add` command can be used to push a `tar` containing a certificate `.c
```shell
tar cvf cert-key.tar server.crt server.key
# replace APP with the name of your application
dokku certs:add <app> < cert-key.tar
dokku certs:add node-js-app < cert-key.tar
```
> Note: If your `.crt` file came alongside a `.ca-bundle`, you'll want to concatenate those into a single `.crt` file before adding it to the `.tar`.
@@ -41,9 +40,9 @@ cat yourdomain_com.crt yourdomain_com.ca-bundle > server.crt
#### SSL and Multiple Domains
When an SSL certificate is associated to an application, the certificate will be associated with *all* domains currently associated with said application. Your certificate _should_ be associated with all of those domains, otherwise accessing the application will result in SSL errors. If you wish to remove one of the domains from the application, refer to the [domain configuration documentation](/dokku/configuration/domains/).
When an SSL certificate is associated to an application, the certificate will be associated with *all* domains currently associated with said application. Your certificate _should_ be associated with all of those domains, otherwise accessing the application will result in SSL errors. If you wish to remove one of the domains from the application, refer to the [domain configuration documentation](/docs/configuration/domains.md).
Note that with the default nginx template, requests will be redirected to the `https` version of the domain. If this is not the desired state of request resolution, you may customize the nginx template in use. For more details, see the [nginx documentation](/dokku/configuration/nginx/).
Note that with the default nginx template, requests will be redirected to the `https` version of the domain. If this is not the desired state of request resolution, you may customize the nginx template in use. For more details, see the [nginx documentation](/docs/configuration/nginx.md).
### Certificate generation
@@ -51,32 +50,66 @@ Note that with the default nginx template, requests will be redirected to the `h
The `certs:generate` command will walk you through the correct `openssl` commands to create a key, csr and a self-signed cert for a given app/domain. We automatically put the self-signed cert in place as well as add the specified domain to the application configuration.
If you decide to obtain a CA signed certficate, you can import that certificate using the aformentioned `dokku certs:add` command.
### Certificate information
The `certs:info` command will simply inspect the install SSL cert and print out details. NOTE: The server-wide certificate will be inspect if installed and no app-specific certificate exists.
```shell
dokku certs:info node-js-app
```
```
-----> Fetching SSL Endpoint info for node-js-app...
-----> Certificate details:
=====> Common Name(s):
=====> test.dokku.me
=====> Expires At: Aug 24 23:32:59 2016 GMT
=====> Issuer: C=US, ST=California, L=San Francisco, O=dokku.me, CN=test.dokku.me
=====> Starts At: Aug 25 23:32:59 2015 GMT
=====> Subject: C=US; ST=California; L=San Francisco; O=dokku.me; CN=test.dokku.me
=====> SSL certificate is self signed.
```
If you decide to obtain a CA signed certificate, you can import that certificate using the aforementioned `dokku certs:add` command.
### Certificate removal
The `certs:remove` command only works on app-specific certificates. It will `rm` the app-specific tls directory, rebuild the nginx configuration, and reload nginx.
### Displaying certificate reports about an app
> New as of 0.8.1
You can get a report about the apps ssl status using the `certs:report` command:
```shell
dokku certs:report
```
```
=====> node-js-sample
Ssl dir: /home/dokku/node-js-sample/tls
Ssl enabled: true
Ssl hostnames: *.node-js-sample.org node-js-sample.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 verified: self signed.
=====> python-sample
Ssl dir: /home/dokku/python-sample/tls
Ssl enabled: false
Ssl hostnames:
Ssl expires at:
Ssl issuer:
Ssl starts at:
Ssl subject:
Ssl verified:
```
You can run the command for a specific app also.
```shell
dokku certs:report node-js-sample
```
```
=====> node-js-sample ssl information
Ssl dir: /home/dokku/node-js-sample/tls
Ssl enabled: true
Ssl hostnames: *.example.org example.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=*.example.org
Ssl verified: self signed.
```
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
```
## HSTS Header
@@ -86,9 +119,9 @@ Beware that if you enable the header and a subsequent deploy of your application
## Running behind a load balancer
Your application has access to the HTTP headers `X-Forwarded-Proto`, `X-Forwarded-For` and `X-Forwarded-Port`. These headers indicate the protocol of the original request (HTTP or HTTPS), the port number, and the IP address of the client making the request, respectively. The default configuration is for Nginx to set these headers.
Your application has access to the HTTP headers `X-Forwarded-Proto`, `X-Forwarded-Port` and `X-Forwarded-For`. These headers indicate the protocol of the original request (HTTP or HTTPS), the port number, and the IP address of the client making the request, respectively. The default configuration is for Nginx to set these headers.
If your server runs behind an HTTP/S load balancer, then Nginx will see all requests as coming from the load balancer. If your load balancer sets the `X-Forwarded-` headers, you can tell Nginx to pass these headers from load balancer to your application by using the following [nginx custom template](/dokku/configuration/nginx/#customizing-the-nginx-configuration)
If your server runs behind an HTTP/S load balancer, then Nginx will see all requests as coming from the load balancer. If your load balancer sets the `X-Forwarded-` headers, you can tell Nginx to pass these headers from load balancer to your application by using the following [nginx custom template](/docs/configuration/nginx.md#customizing-the-nginx-configuration)
```go
server {

View File

@@ -6,6 +6,7 @@ Once Dokku has been configured with at least one user, applications can be deplo
```shell
# from your local machine
# SSH access to github must be enabled on this host
git clone git@github.com:heroku/ruby-rails-sample.git
```
@@ -20,7 +21,7 @@ dokku apps:create ruby-rails-sample
### Create the backing services
When you create a new app, Dokku by default *does not* provide any datastores such as MySQL or PostgreSQL. You will need to install plugins to handle that, but fortunately [Dokku has official plugins](/dokku/community/plugins/#official-plugins-beta) for common datastores. Our sample app requires a PostgreSQL service:
When you create a new app, Dokku by default *does not* provide any datastores such as MySQL or PostgreSQL. You will need to install plugins to handle that, but fortunately [Dokku has official plugins](/docs/community/plugins.md#official-plugins-beta) for common datastores. Our sample app requires a PostgreSQL service:
```shell
# on your Dokku host
@@ -32,7 +33,7 @@ sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
dokku postgres:create rails-database
```
> Each services may take a few moments to create.
> Each service may take a few moments to create.
### Linking backing services to applications
@@ -52,6 +53,8 @@ Now you can deploy the `ruby-rails-sample` app to your Dokku server. All you hav
```shell
# from your local machine
# the remote username *must* be dokku or pushes will fail
cd ruby-rails-sample
git remote add dokku dokku@dokku.me:ruby-rails-sample
git push dokku master
```
@@ -90,7 +93,19 @@ Dokku supports deploying applications via [Heroku buildpacks](https://devcenter.
Dokku only supports deploying from its master branch, so if you'd like to deploy a different local branch use: ```git push dokku <local branch>:master```
You can also support pushing multiple branches using the [receive-branch](/dokku/development/plugin-triggers/#receive-branch) plugin trigger in a custom plugin.
An alternative is to use the `DOKKU_DEPLOY_BRANCH` application config value to specify a branch that should be deployed. The implicit default is master, and this can be modified both at the app and global level:
```shell
# on your Dokku host
# set it globally
dokku config:set --global DOKKU_DEPLOY_BRANCH=some-branch
# override for a specific app
dokku config:set ruby-rails-sample DOKKU_DEPLOY_BRANCH=some-branch
```
You can also support pushing multiple branches using the [receive-branch](/docs/development/plugin-triggers.md#receive-branch) plugin trigger in a custom plugin.
### Skipping deployment
@@ -101,6 +116,17 @@ If you only want to rebuild and tag a container, you can skip the deployment pha
dokku config:set ruby-rails-sample DOKKU_SKIP_DEPLOY=true
```
### Re-Deploying / restarting
If you need to re-deploy (or restart) your app:
```shell
# on your Dokku host
dokku ps:rebuild ruby-rails-sample
```
See the [process scaling documentation](/docs/deployment/process-management.md) for more information.
### Deploying with private git submodules
Dokku uses git locally (i.e. not a docker image) to build its own copy of your app repo, including submodules. This is done as the `dokku` user. Therefore, in order to deploy private git submodules, you'll need to drop your deploy key in `/home/dokku/.ssh/` and potentially add github.com (or your VCS host key) into `/home/dokku/.ssh/known_hosts`. The following test should help confirm you've done it correctly.
@@ -119,6 +145,8 @@ Note that if the buildpack or dockerfile build process require ssh key access fo
The name of remote repository is used as the name of application to be deployed, as for example above:
```shell
# from your local machine
# the remote username *must* be dokku or pushes will fail
git remote add dokku dokku@dokku.me:ruby-rails-sample
git push dokku master
```
@@ -131,6 +159,8 @@ remote: http://ruby-rails-sample.dokku.me
You can also specify fully qualified names, say `app.dokku.me`, as
```shell
# from your local machine
# the remote username *must* be dokku or pushes will fail
git remote add dokku dokku@dokku.me:app.dokku.me
git push dokku master
```
@@ -143,6 +173,8 @@ remote: http://app.dokku.me
This is in particular useful, then you want to deploy to root domain, as
```shell
# from your local machine
# the remote username *must* be dokku or pushes will fail
git remote add dokku dokku@dokku.me:dokku.me
git push dokku master
```
@@ -160,32 +192,32 @@ As of 0.5.x, this function removes all containers with the label `dokku` where t
## Adding deploy users
See the [user management documentation](/dokku/deployment/user-management).
See the [user management documentation](/docs/deployment/user-management.md).
## Default vhost
See the [nginx documentation](/dokku/configuration/nginx/#default-site).
See the [nginx documentation](/docs/configuration/nginx.md#default-site).
## Dockerfile deployment
See the [dockerfile documentation](/dokku/deployment/methods/dockerfiles/).
See the [dockerfile documentation](/docs/deployment/methods/dockerfiles.md).
## Specifying a custom buildpack
See the [buildpack documentation](/dokku/deployment/methods/buildpacks/).
See the [buildpack documentation](/docs/deployment/methods/buildpacks.md).
## Image tagging
See the [image tagging documentation](/dokku/deployment/methods/images/).
See the [image tagging documentation](/docs/deployment/methods/images.md).
## Removing a deployed app
See the [application management documentation](/dokku/deployment/application-management/#removing-a-deployed-app).
See the [application management documentation](/docs/deployment/application-management.md#removing-a-deployed-app).
### Renaming a deployed app
See the [application management documentation](/dokku/deployment/application-management/#renaming-a-deployed-app).
See the [application management documentation](/docs/deployment/application-management.md#renaming-a-deployed-app).
## Zero downtime deploy
See the [zero-downtime deploy documentation](/dokku/deployment/zero-downtime-deploys/).
See the [zero-downtime deploy documentation](/docs/deployment/zero-downtime-deploys.md).

View File

@@ -3,20 +3,24 @@
> New as of 0.3.1
```
apps # List your apps
apps:clone <old-app> <new-app> # Clones an app
apps:create <app> # Create a new app
apps:destroy <app> # Permanently destroy an app
apps:list # List your apps
apps:rename <old-app> <new-app> # Rename an app
apps:report [<app>] [<flag>] # Display report about an app
```
## Usage
### Listing Applications
You can easily list all available applications using the `apps` command:
> New as of 0.8.1. Use the `apps` command for older versions.
You can easily list all available applications using the `apps:list` command:
```shell
dokku apps
dokku apps:list
```
```
@@ -28,7 +32,7 @@ python-app
Note that you can easily hide extra output from Dokku commands by using the `--quiet` flag, which makes it easier to parse on the command-line.
```shell
dokku --quiet apps
dokku --quiet apps:list
```
```
@@ -112,3 +116,72 @@ Renaming node-js-app to io-js-app... done
```
This will copy all of your app's contents into a new app directory with the name of your choice, delete your old app, then rebuild the new version of the app and deploy it. All of your config variables, including database urls, will be preserved.
### Cloning an existing app
> New as of 0.8.1
You can clone an existing app using the `apps:clone` command. Note that the application *must* have been deployed at least once, or cloning will not complete successfully:
```shell
dokku apps:clone node-js-app io-js-app
```
```
Cloning node-js-app to io-js-app... done
```
This will copy all of your app's contents into a new app directory with the name of your choice and then rebuild the new version of the app and deploy it. All of your config variables, including database urls, will be preserved.
> Warning: If you have exposed specific ports via docker-options, added generic domains, or performed anything that cannot be done against multiple applications, `apps:clone` may result in errors.
By default, Dokku will deploy this new application, though you can skip the deploy by using the `--skip-deploy` flag:
```shell
dokku apps:clone --skip-deploy node-js-app io-js-app
```
### Displaying reports about an app
> New as of 0.8.1
You can get a report about the deployed apps using the `apps:report` command:
```shell
dokku apps:report
```
```
=====> node-js-app
App dir: /home/dokku/node-js-app
Git sha: dbddc3f
App cid: 7b18489c98be
Status: running
=====> python-sample
not deployed
=====> ruby-sample
App dir: /home/dokku/ruby-sample
Git sha: a2d477c
App cid: 78a44d71012a
Status: running
```
You can run the command for a specific app also.
```shell
dokku apps:report node-js-app
```
```
=====> node-js-app
App dir: /home/dokku/node-js-app
Git sha: dbddc3f
App cid: 7b18489c98be
Status: running
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku apps:report node-js-app --git-sha
```

33
docs/deployment/logs.md Normal file
View File

@@ -0,0 +1,33 @@
# Log Management
```
logs <app> # display recent log output
```
## Usage
### Application Logs
You can easily get logs of an application using the `logs` command:
```shell
dokku logs node-js-app
```
## Behavioral modifiers
Dokku also supports certain command-line arguments that augment the `log` command's behavior.
```
-n, --num NUM # the number of lines to display
-p, --ps PS # only display logs from the given process
-t, --tail # continually stream logs
-q, --quiet # display raw logs without colors, time and names
```
You can use these modifiers as follows:
```shell
dokku logs node-js-app -t -p web
```
will show logs continually from the web process.

View File

@@ -4,7 +4,7 @@ Dokku normally defaults to using [heroku buildpacks](https://devcenter.heroku.co
- Use `dokku config:set` to set the `BUILDPACK_URL` environment variable.
- Add `BUILDPACK_URL` to a committed `.env` file in the root of your repository.
- See the [environment variable documentation](/dokku/configuration/environment-variables/) for more details.
- See the [environment variable documentation](/docs/configuration/environment-variables.md) for more details.
- Create a `.buildpacks` file in the root of your repository.
## Specifying a custom buildpack
@@ -14,12 +14,11 @@ In certain cases you may want to specify a custom buildpack. While Dokku uses he
To use a specific buildpack, you can run the following Dokku command:
```shell
# replace APP with the name of your application
# replace REPOSITORY_URL with your buildpack's url
dokku config:set APP BUILDPACK_URL=REPOSITORY_URL
dokku config:set node-js-app BUILDPACK_URL=REPOSITORY_URL
# example: using a specific ruby buildpack version
dokku config:set APP BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-ruby.git#v142
dokku config:set node-js-app BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-ruby.git#v142
```
Please check the documentation for your particular buildpack as you may need to include configuration files (such as a Procfile) in your project root.
@@ -45,21 +44,19 @@ As Dokku pins all buildpacks via herokuish releases, there may be occasions wher
```shell
# using the latest nodejs buildpack
# replace APP with the name of your application
dokku config:set APP BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs
dokku config:set node-js-app BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs
```
You may also wish to use a **specific** version of a buildpack, which is also simple
```shell
# using v87 of the nodejs buildpack
# replace APP with the name of your application
dokku config:set APP BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs#v87
dokku config:set node-js-app BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs#v87
```
## Specifying commands via Procfile
While many buildpacks have a default command that is run when a detected repository is pushed, it is possible to override this command via a Procfile. A Procfile can also be used to specify multiple commands, each of which is subject to process scaling. See the [process scaling documentation](/dokku/deployment/process-management/) for more details around scaling individual processes.
While many buildpacks have a default command that is run when a detected repository is pushed, it is possible to override this command via a Procfile. A Procfile can also be used to specify multiple commands, each of which is subject to process scaling. See the [process scaling documentation](/docs/deployment/process-management.md) for more details around scaling individual processes.
A Procfile is a file named `Procfile`. It should be named `Procfile` exactly, and not anything else. For example, `Procfile.txt` is not valid. The file should be a simple text file.
@@ -80,7 +77,7 @@ worker: env QUEUE=* bundle exec rake resque:work
importantworker: env QUEUE=important bundle exec rake resque:work
```
The `web` process type holds some significance in that it is the only process type that is automatically scaled to `1` on the initial application deploy. See the [process scaling documentation](/dokku/deployment/process-management/) for more details around scaling individual processes.
The `web` process type holds some significance in that it is the only process type that is automatically scaled to `1` on the initial application deploy. See the [process scaling documentation](/docs/deployment/process-management.md) for more details around scaling individual processes.
## Curl Build Timeouts
@@ -90,9 +87,9 @@ If you see output similar this when deploying , you may need to override the cur
```shell
dokku config:set --global CURL_TIMEOUT=600
dokku config:set --global CURL_CONNECT_TIMEOUT=30
dokku config:set --global CURL_CONNECT_TIMEOUT=180
```
## Clearing buildpack cache
See the [repository management documentation](/dokku/advanced-usage/repository-management/#clearing-app-cache).
See the [repository management documentation](/docs/advanced-usage/repository-management.md#clearing-app-cache).

View File

@@ -6,7 +6,7 @@ While Dokku normally defaults to using [heroku buildpacks](https://devcenter.her
> Dockerfile support is considered a **Power User** feature. By using Dockerfile-based deployment, you agree that you will not have the same comfort as that enjoyed by Buildpack users, and Dokku features may work differently. Differences between the two systems will be documented here.
To use a dockerfiles for deployment, commit a valid `Dockerfile` to the root of your repository and push the repository to your Dokku installation. If this file is detected, Dokku will default to using it to construct containers **except** in the following two cases:
To use a dockerfile for deployment, commit a valid `Dockerfile` to the root of your repository and push the repository to your Dokku installation. If this file is detected, Dokku will default to using it to construct containers **except** in the following two cases:
- The application has a `BUILDPACK_URL` environment variable set via the `dokku config:set` command or in a committed `.env` file. In this case, Dokku will use your specified buildpack.
- The application has a `.buildpacks` file in the root of the repository. In this case, Dokku will use your specified buildpack(s).
@@ -21,7 +21,48 @@ Dokku will extract all tcp ports exposed using the `EXPOSE` directive (one port
If you do not explicitly `EXPOSE` a port in your `Dockerfile`, Dokku will configure the nginx proxy to listen on port 80 (and 443 for TLS) and forward traffic to your app listening on port 5000 inside the container. Just like buildpack apps, you can also use the `$PORT` environment variable in your app to maintain portability.
When ports are exposed through the default nginx proxy, they are proxied externally as HTTP ports. At this time, in no case do we proxy plain TCP or UDP ports. If you would like to investigate alternative proxy methods, please refer to our [proxy management documentation](/dokku/advanced-usage/proxy-management/).
When ports are exposed through the default nginx proxy, they are proxied externally as HTTP ports. At this time, in no case do we proxy plain TCP or UDP ports. If you would like to investigate alternative proxy methods, please refer to our [proxy management documentation](/docs/advanced-usage/proxy-management.md).
## Build-time Configuration Variables
For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available only during runtime.
For users that require customization in the `build` phase, you may use build arguments via the [docker-options plugin](docs/advanced-usage/docker-options.md):
```shell
dokku docker-options:add node-js-app build '--build-arg NODE_ENV=production'
```
Once set, the Dockerfile usage would be as follows:
```Dockerfile
FROM debian:jessie
# set the argument default
ARG NODE_ENV=production
# use the argument
RUN echo $NODE_ENV
```
You may also set the argument as an environment variable
```Dockerfile
FROM debian:jessie
# set the argument default
ARG NODE_ENV=production
# assign it to an environment variable
# we can wrap the variable in brackets
ENV NODE_ENV ${NODE_ENV}
# or omit them completely
# use the argument
RUN echo $NODE_ENV
```
## Customizing the run command
@@ -34,7 +75,7 @@ ENTRYPOINT ["node"]
You can do:
```shell
dokku config:set APP DOKKU_DOCKERFILE_START_CMD="--harmony server.js"
dokku config:set node-js-app DOKKU_DOCKERFILE_START_CMD="--harmony server.js"
```
To tell docker what to run.

View File

@@ -1,4 +1,4 @@
# Image Tag Deployment
# Docker Image Tag Deployment
> New as of 0.4.0
@@ -162,3 +162,8 @@ docker save dokku/test-app:v12 | bzip2 | ssh my.dokku.host "bunzip2 | docker loa
# tag and deploy the image
ssh my.dokku.host "dokku tags:create test-app previous; dokku tags:deploy test-app v12 && dokku tags:create test-app latest"
```
## Related articles
- [Setting up Persistent Storage](/docs/advanced-usage/persistent-storage.md)
- [Defining Environment Variables](/docs/configuration/environment-variables.md)
- [Setting up the Ports](/docs/advanced-usage/proxy-management.md)

View File

@@ -29,7 +29,7 @@ dokku run my-app console
If you want to remove the container after a command has started, you can run the following command:
```shell
# keep `run` containers around
# don't keep `run` containers around
dokku config:set --global DOKKU_RM_CONTAINER=1
# revert the above setting and keep containers around

View File

@@ -4,18 +4,19 @@
```
ps <app> # List processes running in app container(s)
ps:rebuildall # Rebuild all apps from source
ps:rebuild <app> # Rebuild an app from source
ps:restartall # Restart all deployed app containers
ps:rebuildall # Rebuild all apps from source
ps:report [<app>] [<flag>] # Displays a process report for one or more apps
ps:restart <app> # Restart app container(s)
ps:scale <app> <proc>=<count> [<proc>=<count>] # Set how many processes of a given process to run
ps:restart-policy <app> # Shows the restart-policy for an app
ps:restartall # Restart all deployed app containers
ps:scale <app> <proc>=<count> [<proc>=<count>] # Get/Set how many instances of a given process to run
ps:set-restart-policy <app> <policy> # Sets app restart-policy
ps:start <app> # Start app container(s)
ps:stop <app> # Stop app container(s)
ps:restart-policy <app> # Shows the restart-policy for an app
ps:set-restart-policy <app> <policy> # Sets app restart-policy
```
By default, Dokku will only start a single `web` process - if defined - though process scaling can be managed by the `ps` plugin or via a custom `DOKKU_SCALE` file.
By default, Dokku will only start a single `web` process - if defined - though process scaling can be managed by the `ps` plugin or [via a custom `DOKKU_SCALE` file](/docs/deployment/process-management.md#manually-managing-process-scaling).
> The `web` proctype is the only proctype that will invoke custom checks as defined by a CHECKS file. It is also the only process type that will be launched in a container that is either proxied via nginx or bound to an external port.
@@ -31,7 +32,7 @@ dokku ps node-js-app
### Rebuilding applications
There are some Dokku commands which will not automatically rebuild an application's environment, or which can be told to skip a rebuild. For instance, you may wish to run mulitple `config:set` commands without a restart so as to speed up configuration. In these cases, you can ultimately trigger an application rebuild using `ps:rebuild`
There are some Dokku commands which will not automatically rebuild an application's environment, or which can be told to skip a rebuild. For instance, you may wish to run multiple `config:set` commands without a restart so as to speed up configuration. In these cases, you can ultimately trigger an application rebuild using `ps:rebuild`
```shell
dokku ps:rebuild node-js-app
@@ -45,7 +46,7 @@ dokku ps:rebuildall
> The `ps:rebuild` and `ps:rebuildall` commands only work for applications for which there is a source, and thus
> will only always work deterministically for git-deployed application. Please see
> the [images documentation](/dokku/deployment/methods/images/) and [tar documentation](/dokku/deployment/methods/tar/)
> the [images documentation](/docs/deployment/methods/images.md) and [tar documentation](/docs/deployment/methods/tar.md)
> in for more information concerning rebuilding those applications.
### Restarting applications
@@ -92,7 +93,7 @@ dokku ps:scale node-js-app
### Stopping applications
Deployed applications can be stopped using the `ps:stop` command. This turns all running containers for an application, and will result in a `502 Bad Gateway` reponse for the default nginx proxy implementation.
Deployed applications can be stopped using the `ps:stop` command. This turns all running containers for an application, and will result in a `502 Bad Gateway` response for the default nginx proxy implementation.
```shell
dokku ps:stop node-js-app
@@ -178,7 +179,7 @@ Restart policies have no bearing on server reboot, and Dokku will always attempt
## Manually managing process scaling
You can optionally create a `DOKKU_SCALE` file in the root of your repository. Dokku expects this file to contain one line for every process defined in your Procfile.
You can optionally _commit_ a `DOKKU_SCALE` file to the root of your repository - *not* to the /home/dokku/APP directory. Dokku expects this file to contain one line for every process defined in your Procfile.
Example:
@@ -187,4 +188,6 @@ web=1
worker=2
```
If it is not committed to the repository, the `DOKKU_SCALE` file will otherwise be automatically generated based on your `ps:scale` settings.
> *NOTE*: Dokku will always use the DOKKU_SCALE file that ships with the repo to override any local settings.

View File

@@ -25,4 +25,4 @@ in order to avoid ssh interpretting Dokku arguments for itself.
You may optionally use a client to connect to your Dokku server. Most clients use the configured `git remote` to locate the Dokku server, though some allow for overriding this via an environment variable or flag.
Please refer to the [clients](/dokku/community/clients/) list for more details.
Please refer to the [clients](/docs/community/clients.md) list for more details.

View File

@@ -12,7 +12,7 @@ When pushing to Dokku, ssh key based authorization is the preferred authenticati
Users in Dokku are managed via the `~/dokku/.ssh/authorized_keys` file. It is **highly** recommended that you follow the steps below to manage users on a Dokku server.
> Users of older versions of Dokku should use the `sshcommand` binary to manage keys. Please refer to the Dokku documentation for your version for more details.
> Users of older versions of Dokku may use the `sshcommand` binary to manage keys instead of the `ssh-keys` plugin. Please refer to the Dokku documentation for your version for more details.
## Usage
@@ -56,6 +56,13 @@ Admin users and root can also add keys remotely:
cat ~/.ssh/id_rsa.pub | ssh dokku@dokku.me ssh-keys:add KEY_NAME
```
If you are using an ssh user other than `dokku`, then you'll also need to specify the `dokku` bin:
```shell
cat ~/.ssh/id_rsa.pub | ssh root@dokku.me dokku ssh-keys:add KEY_NAME
```
Finally, if you are using the vagrant installation, you can also use the `make vagrant-acl-add` target to add your public key to Dokku (it will use your host username as the `USER`):
```shell
@@ -72,4 +79,17 @@ dokku ssh-keys:remove KEY_NAME
## Scoping commands to specific users
Keys are given unique names, which can be used in conjunction with the [user-auth](/dokku/development/plugin-triggers/#user-auth) plugin trigger to handle command authorization. Please see the documentation on that trigger for more information.
Keys are given unique names, which can be used in conjunction with the [user-auth](/docs/development/plugin-triggers.md#user-auth) plugin trigger to handle command authorization. Please see the documentation on that trigger for more information.
## Granting other Unix user accounts Dokku access
Any Unix user account which belongs to the 'sudo' Unix group can run Dokku. However, you may want to give them Dokku access but not full sudo privileges.
To allow other Unix user accounts to be able to run Dokku commands, without giving them full sudo access, modify your sudoers configuration.
Use `visudo /etc/sudoers.d/dokku-users`, or `visudo /etc/sudoers` to add the following line:
```
%dokku ALL=(ALL:ALL) NOPASSWD:SETENV: /usr/bin/dokku
```

View File

@@ -6,22 +6,37 @@
checks <app> Show zero-downtime status
checks:disable <app> [process-type(s)] Disable zero-downtime deployment for all processes (or comma-separated process-type list) ***WARNING: this will cause downtime during deployments***
checks:enable <app> [process-type(s)] Enable zero-downtime deployment for all processes (or comma-separated process-type list)
checks:report [<app>] [<flag>] Displays a checks report for one or more apps
checks:run <app> [process-type(s)] Runs zero-downtime checks for all processes (or comma-separated process-type list)
checks:skip <app> [process-type(s)] Skip zero-downtime checks for all processes (or comma-separated process-type list)
```
Following a deploy, Dokku will wait `10` seconds before routing traffic to the new container to give your application time to boot up. If the application is not running after this time, then the deploy is failed and your old container will continue serving traffic. You can modify this value globally or on a per-application basis:
```shell
dokku config:set --global DOKKU_DEFAULT_CHECKS_WAIT=30
dokku config:set node-js-app DOKKU_DEFAULT_CHECKS_WAIT=30
```
You can also choose to skip checks or disable zero-downtime completely on a per-application/per-process basis
> Note that `checks:disable` will now (as of 0.6.0) cause downtime for that process-type during deployments.
By default, Dokku will wait `10` seconds after starting each container before assuming it is up and proceeding with the deploy. Once this has occurred for all containers started by for an application, traffic will be switched to point to your new containers. Dokku will also wait a further `60` seconds _after_ the deploy is complete before terminating old containers in order to give time for long running connections to terminate. In either case, you may have more than one container running for a given application.
You may both create user-defined checks for web processes using a `CHECKS` file, as well as customize any and all parts of this experience using the checks plugin.
## Configuring Check Settings using the `config` plugin
There are certain settings that can be configured via environment variables:
- `DOKKU_DEFAULT_CHECKS_WAIT`: (default: `10`) If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running.
- `DOKKU_DOCKER_STOP_TIMEOUT`: (default: `10`) Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands _also_ respect this value. If not specified, the docker defaults for the [docker stop command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.
- `DOKKU_WAIT_TO_RETIRE`: (default: `60`) After a successful deploy, the grace period given to old containers before they are stopped/terminated. This is useful for ensuring completion of long-running http connections.
The following settings may also be specified in the `CHECKS` file, though are available as environment variables in order to ease application reuse.
- `DOKKU_CHECKS_WAIT`: (default: `5`) Wait this many seconds for the container to start before running checks.
- `DOKKU_CHECKS_TIMEOUT`: (default: `30`) Wait this many seconds for each response before marking it as a failure.
- `DOKKU_CHECKS_ATTEMPTS`: (default: `5`) Number of retries for to run for a specific check before marking it as a failure
## Skipping and Disabling Checks
> Note that `checks:disable` will now (as of 0.6.0) cause downtime for that process-type during deployments. Previously, it acted as `checks:skip` currently does.
You can choose to skip checks completely on a per-application/per-process basis. Skipping checks will avoid the default 10 second waiting period entirely, as well as any other user-defined checks.
```shell
# process type specification is optional
dokku checks:skip node-js-app worker,web
```
@@ -33,8 +48,7 @@ dokku checks:skip node-js-app worker,web
DOKKU_CHECKS_SKIPPED: worker,web
```
Additionally, any given process can only be configured to disable zero-downtime. example:
Zero-downtime checks can also be disabled completely. This will stop old containers **before** new ones start, which may result in broken connections and downtime if your application fails to boot properly.
```shell
dokku checks:disable node-js-app worker
@@ -48,14 +62,107 @@ dokku checks:disable node-js-app worker
DOKKU_CHECKS_SKIPPED: web
```
Dokku will wait `60` seconds before stopping the old container so that existing connections are given a chance to complete. You can modify this value globally or on a per-application basis:
### Displaying checks reports about an app
> New as of 0.8.1
You can get a report about the app's checks status using the `checks:report` command:
```shell
dokku config:set --global DOKKU_WAIT_TO_RETIRE=120
dokku config:set <app> DOKKU_WAIT_TO_RETIRE=120
dokku checks:report
```
> Note that during this time, multiple containers may be running on your server, which can be an issue for memory-hungry applications on memory-constrained servers.
```
=====> search checks information
Checks disabled list: none
Checks skipped list: none
=====> python-sample checks information
Checks disabled list: none
Checks skipped list: none
=====> ruby-sample checks information
Checks disabled list: _all_
Checks skipped list: none
```
You can run the command for a specific app also.
```shell
dokku checks:report node-js-sample
```
```
=====> node-js-sample checks information
Checks disabled list: none
Checks skipped list: none
```
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
```
## Customizing Checks
If your application needs a longer period to boot up - perhaps to load data into memory, or because of slow boot time - you may also use dokku's `checks` functionality to more precisely check whether an application can serve traffic or not.
Checks are run against the detected `web` process from your application's `Procfile`. For non-web processes, Dokku will fallback to the aforementioned process uptime check.
To specify checks, add a `CHECKS` file to the root of your project directory. The `CHECKS` file should be plain text and may contain:
- Check instructions
- Settings (NAME=VALUE)
- Comments (lines starting with #)
- Empty lines
> For dockerfile-based deploys, the file *must* be in `/app/CHECKS` within the container. `/app` is used by default as the root container directory for buildpack-based deploys.
### Check Instructions
The format of a check instruction is a path or relative URL, optionally followed by the expected content:
```
/about Our Amazing Team
```
The `CHECKS` file can contain multiple checks:
```
/ My Amazing App
/stylesheets/index.css .body
/scripts/index.js $(function()
/images/logo.png
```
To check an application that supports multiple hostnames, use relative URLs that include the hostname:
```
//admin.example.com Admin Dashboard
//static.example.com/logo.png
```
You can also specify the protocol to explicitly check HTTPS requests:
```
https://admin.example.com Admin Dashboard
https://static.example.com/logo.png
```
While a full url may be used in order to invoke checks, if you are using relative urls, the port *must* be omitted.
### Check Settings
The default behavior is to wait for `5` seconds before running the checks, to timeout the checks after `30` seconds, and to attempt the checks `5` times. If the checks fail `5` times, the deployment is considered failed and the old container will continue serving traffic.
You can change the default behavior by setting `WAIT`, `TIMEOUT`, and `ATTEMPTS` to different values in the `CHECKS` file:
```
WAIT=30 # Wait 1/2 minute
TIMEOUT=60 # Timeout after a minute
ATTEMPTS=10 # Attempt checks 10 times
/ My Amazing App
```
## Manually Invoking Checks
@@ -92,7 +199,7 @@ dokku checks:run APP
Checks can be scoped to a particular process type:
```shell
dokku checks:run APP worker
dokku checks:run node-js-app worker
```
```
@@ -108,7 +215,7 @@ dokku checks:run APP worker
An app process id may also be specified:
```shell
dokku checks:run APP web.2
dokku checks:run node-js-app web.2
```
```
@@ -124,7 +231,7 @@ dokku checks:run APP web.2
Non-existent process types will result in an error:
```shell
dokku checks:run APP non-existent
dokku checks:run node-js-app non-existent
```
```
@@ -135,7 +242,7 @@ Invalid process type specified (APP.non-existent)
Non-existent process ids will *also* result in an error
```shell
dokku checks:run APP web.3
dokku checks:run node-js-app web.3
```
```
@@ -143,88 +250,6 @@ dokku checks:run APP web.3
Invalid container id specified (APP.web.3)
```
## Customizing Checks
If your application needs a longer period to boot up - perhaps to load data into memory, or because of slow boot time - you may also use dokku's `checks` functionality to more precisely check whether an application can serve traffic or not.
Checks are run against the detected `web` process from your application's `Procfile`. For non-web processes, Dokku will fallback to the aforementioned process uptime check.
To specify checks, add a `CHECKS` file to the root of your project directory. The `CHECKS` file should be plain text and may contain:
* Check instructions
* Settings (NAME=VALUE)
* Comments (lines starting with #)
* Empty lines
> For dockerfile-based deploys, the file *must* be in `/app/CHECKS` within the container. `/app` is used by default as the root container directory for buildpack-based deploys.
### Check Instructions
The format of a check instruction is a path or relative URL, optionally followed by the expected content:
```
/about Our Amazing Team
```
The `CHECKS` file can contain multiple checks:
```
/ My Amazing App
/stylesheets/index.css .body
/scripts/index.js $(function()
/images/logo.png
```
To check an application that supports multiple hostnames, use relative URLs that include the hostname:
```
//admin.example.com Admin Dashboard
//static.example.com/logo.png
```
You can also specify the protocol to explicitly check HTTPS requests:
```
https://admin.example.com Admin Dashboard
https://static.example.com/logo.png
```
### Check Settings
The default behavior is to wait for `5` seconds before running the checks, to timeout the checks after `30` seconds, and to attempt the checks `5` times. If the checks fail `5` times, the deployment is considered failed and the old container will continue serving traffic.
You can change the default behavior by setting `WAIT`, `TIMEOUT`, and `ATTEMPTS` to different values in the `CHECKS` file:
```
WAIT=30 # Wait 1/2 minute
TIMEOUT=60 # Timeout after a minute
ATTEMPTS=10 # Attempt checks 10 times
/ My Amazing App
```
You can also override the default `WAIT`, `TIMEOUT`, and `ATTEMPTS` variables for the global Dokku installation:
```shell
dokku config:set --global DOKKU_CHECKS_WAIT=30
dokku config:set --global DOKKU_CHECKS_TIMEOUT=60
dokku config:set --global DOKKU_CHECKS_ATTEMPTS=10
```
If your application runs multiple processes (a background worker configured in your `Procfile`, for example) and you have checks to ensure that your web application has booted up, you may want to disable the default check wait time for that application to avoid the `10` second wait per non-web process:
```shell
dokku config:set <app> DOKKU_DEFAULT_CHECKS_WAIT=0
```
### Configuring docker stop timeout
[By default](https://docs.docker.com/engine/reference/commandline/stop/), docker will wait 10 seconds from the time the `stop` command is passed to a container before it attempts to kill said container. This timeout can be configured on a per-app basis in Dokku by setting the `DOKKU_DOCKER_STOP_TIMEOUT` configuration variable. This timeout applies to normal zero-downtime deployments as well as the `ps:stop` and `apps:destroy` commands.
```shell
dokku config:set $APP DOKKU_DOCKER_STOP_TIMEOUT=20
```
## Example: Successful Rails Deployment
In this example, a Rails application is successfully deployed to dokku. The initial round of checks fails while the server is starting, but once it starts they succeed and the deployment is successful. `WAIT` is set to `10` because our application takes a while to boot up. `ATTEMPTS` is set to `6`, but the third attempt succeeds.

View File

@@ -1,14 +1,33 @@
# Plugin Creation
Plugins can simply be implementations of [triggers](/docs/development/plugin-triggers.md) or they may implement a command structure of their own. Dokku has no restrictions on the language in which a plugin is implemented, it only cares that the plugin implements the appropriate [commands](/docs/development/plugin-creation.md#command-api) or [triggers](/docs/development/plugin-triggers.md) API. NOTE: all files that implement the triggers or commands API must be executable.
If you create your own plugin:
1. Take a look at the plugins shipped with Dokku and hack away!
2. Check out the [list of triggers](/dokku/development/plugin-triggers) your plugin can implement.
2. Check out the [list of triggers](/docs/development/plugin-triggers.md) your plugin can implement.
3. Upload your plugin to github with a repository name in form of `dokku-<name>` (e.g. `dokku-mariadb`)
4. Edit [this page](/dokku/community/plugins/) and add a link to it.
4. Edit [this page](/docs/community/plugins.md) and add a link to it.
5. Subscribe to the [dokku development blog](http://progrium.com) to be notified about API changes and releases
### Compilable Plugins (i.e. golang, java(?), c, etc.)
The plugin developer is required to implement the `install` trigger such that it will output your built executable(s) in the correct directory structure to implement the plugin's desired command and/or trigger API. See [smoke-test-plugin](https://github.com/dokku/smoke-test-plugin) for an example.
### Command API
There are 3 main implementation points: `commands`, `subcommands/default`, and `subcommands/<command-name>`
#### commands
Primarily used to supply the plugin's usage/help output. (i.e. [plugin help](https://github.com/dokku/dokku/tree/master/plugins/plugin/commands))
#### subcommands/default
Implements the plugin's default command behavior. (i.e. [`dokku plugin`](https://github.com/dokku/dokku/tree/master/plugins/plugin/subcommands/default))
#### subcommands/<command-name>
Implements the additional command interface and will translate to `dokku plugin:cmd` on the command line. (i.e. [`dokku plugin:install`](https://github.com/dokku/dokku/tree/master/plugins/plugin/subcommands/install))
### Sample plugin
The below plugin is a dummy `dokku hello` plugin.
@@ -30,7 +49,7 @@ hello_main_cmd() {
set -- $cmd $@
##
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
verify_app_name "$2"
local APP="$2";
@@ -58,7 +77,7 @@ hello_world_cmd() {
set -- $cmd $@
##
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
verify_app_name "$2"
local APP="$2";
@@ -150,10 +169,10 @@ A few notes:
- As some plugins require access to set app config settings and do not want/require the default Heroku-style behavior of a restart, we have the following "internal" commands that provide this functionality :
```shell
dokku config:set --no-restart APP KEY1=VALUE1 [KEY2=VALUE2 ...]
dokku config:unset --no-restart APP KEY1 [KEY2 ...]
dokku config:set --no-restart node-js-app KEY1=VALUE1 [KEY2=VALUE2 ...]
dokku config:unset --no-restart node-js-app KEY1 [KEY2 ...]
```
- From time to time you may want to allow other plugins access to (some of) your plugin's functionality. You can expose this by including a `functions` file in your plugin for others to source. Consider all functions in that file to be publicly accessible by other plugins. Any functions not wished to be made "public" should reside within your plugin trigger or commands files.
- As of 0.4.0, we allow image tagging and deployment of said tagged images. Therefore, hard-coding of `$IMAGE` as `dokku/$APP` is no longer sufficient. Instead, for non `pre/post-build-*` plugins, use `get_running_image_tag()` & `get_app_image_name()` as sourced from common/functions. See the [plugin triggers](/dokku/development/plugin-triggers) doc for examples.
- As of 0.4.0, we allow image tagging and deployment of said tagged images. Therefore, hard-coding of `$IMAGE` as `dokku/$APP` is no longer sufficient. Instead, for non `pre/post-build-*` plugins, use `get_running_image_tag()` & `get_app_image_name()` as sourced from common/functions. See the [plugin triggers](/docs/development/plugin-triggers.md) doc for examples.
- As of 0.5.0, we use container labels to help cleanup intermediate containers with `dokku cleanup`. If manually calling `docker run`, include `$DOKKU_GLOBAL_RUN_ARGS`. This will ensure you intermediate containers labeled correctly.
- As of 0.6.0, we advise you to *not* call the `dokku` binary directly from within plugins. Clients using the `--app` argument are potentially broken, amongst other issues, when doing so. Instead, please source the `functions` file for a given plugin when attempting to call Dokku internal functions

View File

@@ -27,7 +27,7 @@ There are a number of plugin-related triggers. These can be optionally implement
The following plugin triggers describe those available to a Dokku installation. As well, there is an example for each trigger that you can use as templates for your own plugin development.
> The example plugin trigger code is not guaranteed to be implemented as in within dokkku, and are merely simplified examples. Please look at the Dokku source for larger, more in-depth examples.
> The example plugin trigger code is not guaranteed to be implemented as in within dokku, and are merely simplified examples. Please look at the Dokku source for larger, more in-depth examples.
### `post-config-update`
@@ -134,6 +134,24 @@ help_content
esac
```
### `core-post-deploy`
> To avoid issues with community plugins, this plugin trigger should be used *only* for core plugins. Please avoid using this trigger in your own plugins.
- Description: Allows running of commands after an application's processes have been scaled up, but before old containers are torn down. Dokku core currently uses this to switch traffic on nginx.
- Invoked by: `dokku deploy`
- Arguments: `$APP $INTERNAL_PORT $INTERNAL_IP_ADDRESS $IMAGE_TAG`
- Example:
```shell
#!/usr/bin/env bash
# Notify an external service that a successful deploy has occurred.
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
curl "http://httpstat.us/200"
```
### `dependencies`
- Description: Used to install system-level dependencies. Invoked by `plugin:install-dependencies`.
@@ -303,6 +321,10 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
> WARNING: The `git-pre-pull` trigger should _not_ be used for authentication
since it does not get called for commands that use `git-upload-archive` such
as `git archive`. Instead, use the [`user-auth`](#user-auth) trigger.
### `install`
- Description: Used to setup any files/configuration for a plugin.
@@ -430,7 +452,9 @@ dokku postgres:destroy $APP
### `post-deploy`
- Description: Allows running of commands after an application's processes have been scaled up, but before old containers are torn down. Dokku core currently uses this to switch traffic on nginx.
> Please see [core-post-deploy](#core-post-deploy) if contributing a core plugin with the `post-deploy` hook.
- Description: Allows running of commands after an application's processes have been scaled up, but before old containers are torn down. Dokku calls this _after_ `core-post-deploy`. Deployment Tasks are also invoked by this plugin trigger.
- Invoked by: `dokku deploy`
- Arguments: `$APP $INTERNAL_PORT $INTERNAL_IP_ADDRESS $IMAGE_TAG`
- Example:
@@ -447,7 +471,7 @@ curl "http://httpstat.us/200"
### `post-domains-update`
- Description: Allows you to run commands once the domain for an application has been updated. It also sends in the command that has been used. This can be "add", "clear" or "remove". The third argument will be the optional list of domains
- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`
- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:set`
- Arguments: `$APP` `action name` `domains`
- Example:
@@ -461,6 +485,28 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
sudo service haproxy reload
```
### `post-extract`
- Description: Allows you to modify the contents of an application *after* it has been extracted from git/tarball but *before* the image source type is detected.
- Invoked by: `dokku tar:in`, `dokku tar:from` and the `receive-app` plugin trigger
- Arguments: `$APP` `$TMP_WORK_DIR` `$REV`
- Example:
```shell
#!/usr/bin/env bash
# Adds a clock process to an app's Procfile
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
APP="$1"; verify_app_name "$APP"
TMP_WORK_DIR="$2"
REV="$3" # optional, may not be sent for tar-based builds
pushd "$TMP_WORK_DIR" > /dev/null
touch Procfile
echo "clock: some-command" >> Procfile
```
### `post-proxy-ports-update`
- Description: Allows you to run commands once the proxy port mappings for an application have been updated. It also sends the invoking command. This can be "add", "clear" or "remove".
@@ -846,6 +892,26 @@ APP="$1"; IMAGE_TAG="$2"
some code to remove a docker hub tag because it's not implemented in the CLI....
```
### `uninstall`
- Description: Used to cleanup after itself.
- Invoked by: `dokku plugin:uninstall`
- Arguments: `$PLUGIN`
- Example:
```shell
#!/usr/bin/env bash
# Cleanup up extra containers created
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
PLUGIN="$1"
[[ "$PLUGIN" = "my-plugin" ]] && docker rmi -f "${PLUGIN_IMAGE_DEPENDENCY}"
```
> To avoid uninstalling other plugins make sure to check the plugin name like shown in the example.
### `update`
- Description: Can be used to run plugin updates on a regular interval. You can schedule the invoker in a cron-task to ensure your system gets regular updates.

View File

@@ -20,7 +20,7 @@ To propose a release, the following tasks need to be performed:
- The versioned links should be updated or added to the `docs/assets/versions.json` file.
- A list of changes must be made in the `HISTORY.md`.
- A tag must be created locally with your release version
- Debian packages *must* be created via `vagrant up build`
- Debian and RPM packages *must* be created via `vagrant up build`
- The packages should be uploaded to packagecloud.io
- All changes are pushed to master and the tag should be turned into a release which will contain the changelog.
- ArchLinux package description *must* be updated via `vagrant up build-arch` (needs to be done after the tag is pushed to GitHub, because it is based on that)
@@ -37,9 +37,9 @@ git tag v0.9.9
At the moment, tags need not be signed, though that may change in the future.
## Debian Packages
## Debian and RPM packages
The `build` target in the Dokku `Vagrantfile` creates debian packages for Dokku at a point in time. The version will be based upon the latest local tag - you may create your own, internal tags/releases if that is so desired.
The `build` target in the Dokku `Vagrantfile` creates debian and rpm packages for Dokku at a point in time. The version will be based upon the latest local tag - you may create your own, internal tags/releases if that is so desired.
Debian package information is held in the `debian` directory of the Dokku project.
@@ -51,6 +51,7 @@ git tag v0.9.9
vagrant up build
export PACKAGECLOUD_TOKEN=SOME_TOKEN
package_cloud push dokku/dokku/ubuntu/trusty dokku_0.9.9_amd64.deb
package_cloud push dokku/dokku/el/7 dokku-0.9.9-1.x86_64.rpm
```
If new versions of other packages were created, these should also be pushed at this time.
@@ -66,7 +67,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.7.2-2 (Mon Feb 22 23:20:37 CET 2016)"
# wait for "==> build-arch: ==> Finished making: dokku 0.10.3-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'

View File

@@ -17,7 +17,7 @@ While we do provide official packages for a variety of platforms, as our test su
## Local Test Execution
- Setup Dokku in a [vagrant vm](/dokku/getting-started/install/vagrant)
- Setup Dokku in a [vagrant vm](/docs/getting-started/install/vagrant.md)
- Run the following to setup tests and execute them:
```shell

View File

@@ -4,7 +4,7 @@ You can always install Dokku straight from the latest - potentially unstable - m
```shell
# using a branch results in installing from source
wget https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh;
sudo DOKKU_BRANCH=master bash bootstrap.sh
```
@@ -29,7 +29,7 @@ sudo SSHCOMMAND_URL=https://raw.githubusercontent.com/yourusername/sshcommand/ma
The bootstrap script allows the Dokku repository URL to be overridden to bootstrap a host from your own clone of Dokku using the `DOKKU_REPO` environment variable. Example:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh;
chmod +x bootstrap.sh
sudo DOKKU_REPO=https://github.com/yourusername/dokku.git DOKKU_BRANCH=master ./bootstrap.sh
```
@@ -52,7 +52,7 @@ Once Dokku is installed, if you are not using the web-installer, you'll want to
Set up a domain and a wildcard domain pointing to that host. Make sure `/home/dokku/VHOST` is set to this domain. By default it's set to whatever hostname the host has. This file is only created if the hostname can be resolved by dig (`dig +short $(hostname -f)`). Otherwise you have to create the file manually and set it to your preferred domain. If this file still is not present when you push your app, Dokku will publish the app with a port number (i.e. `http://example.com:49154` - note the missing subdomain).
Follow the [user management documentation](/dokku/deployment/user-management/) in order to add users to dokku.
Follow the [user management documentation](/docs/deployment/user-management.md) in order to add users to Dokku, or to give other Unix accounts access to Dokku.
That's it!

View File

@@ -1,7 +1,22 @@
# Digital Ocean
# Digital Ocean Droplet
On Digital Ocean, there is a pre-made image that can be run for Dokku. You can choose to run this image on any sized droplet, though larger droplets will allow you to run larger applications.
[Digital Ocean](https://www.digitalocean.com/products/compute/) offers a pre-installed Dokku image. You can run this image on any sized droplet, although larger droplets will allow you to run larger applications.
When choosing your Droplet configuration, please disable IPv6 on the droplet. There are known issues with IPv6 on Digital Ocean and Docker, and many have been reported to the Dokku issue tracker.
> **Please disable IPv6**. There are known issues with IPv6 on Digital Ocean and Docker. If you would like to run Dokku on an IPv6 Digital Ocean Droplet, please consult [this guide](https://jeffloughridge.wordpress.com/2015/01/17/native-ipv6-functionality-in-docker/).
If you would like to run Dokku on an IPv6 Digital Ocean Droplet, please consult [this guide](https://jeffloughridge.wordpress.com/2015/01/17/native-ipv6-functionality-in-docker/) for modifying Docker to run under the Digital Ocean IPv6 configuration.
1. Login to your [Digital Ocean](https://m.do.co/c/fe06b043a083) account
2. Click **Create a Droplet**.
3. Under **Choose an image > One-click apps** and choose the latest **Dokku** release for 16.04 _(version numbers may vary)_.
4. Under **Choose a size** and select your a machine spec. We recommend a machine with _at least_ 1GB of memory.
5. Under **Choose a datacenter region** select your region.
6. Add an SSH Key
* New Keys
1. Under **Add your SSH keys** click **New SSH Key** _(this opens a dialog)_
2. From your terminal, execute `cat $HOME/.ssh/id_rsa.pub`
3. Copy the output and paste it into the **New SSH Key** dialog, provide a name and click **Add SSH Key**
* Existing Keys
1. Simply add a checkmark next to the existing keys you'd like to add.
7. Under **Finalize and create**, give your droplet a hostname _(not required)_ and click **Create**.
8. Once created, copy the IP address to your clipboard.
9. In a browser, go to the IP address you copied above and fill out the presented form to complete configuration. **Failure to do so may allow others to reconfigure SSH access on your server.**
10. Once the web ui has been submitted, you will be redirected to our [application deployment tutorial](http://dokku.viewdocs.io/dokku/deployment/application-deployment/), which will guide you through deploying a sample application to your Dokku server.

View File

@@ -4,7 +4,7 @@ Cloud-init script can be used to automate installation of Dokku on
Dreamhost (or any other OpenStack-compatible cloud with minimal
changes).
A new server can be created on DreamHost Cloud from the command line
A new server instance can be created on DreamHost Cloud from the command line
using openstack client or from the web UI and with the same command
use a cloud-init script to install Dokku. Install the [openstack
cli](https://help.dreamhost.com/hc/en-us/articles/216185658-How-to-Install-the-OpenStack-command-line-clients),
@@ -18,18 +18,18 @@ source openrc.sh # Set the environment variables for DreamHost Cloud
```
This allows openstack client to connect to DreamHost API endpoints.
The command below creates a new server named `my-dokku-instance` based
on Ubuntu 14.04, with 2GB RAM and 1CPU (the flavor called
`semisonic`), opening network port access to http and ssh (the
The command below creates a new server instance named `my-dokku-instance`
based on Ubuntu 14.04, with 2GB RAM and 1CPU (the flavor called
`supersonic`), opening network port access to http and ssh (the
`default` security group), and the name of the chosen SSH key. This
key will be automatically added to the new server in the
`authorized_keys` for the default SSH user (`dhc-user`), and it will
`authorized_keys` for the default SSH user (`ubuntu`), and it will
be reused by Dokku.
```sh
openstack server create \
--image Ubuntu-14.04 \
--flavor gp1.semisonic \
--flavor gp1.supersonic \
--security-group default \
--key-name $YOUR_SSH_KEYNAME \
--user-data dokku-cloudinit.sh \
@@ -178,8 +178,20 @@ debconf_selections: |
# set the domain name of the new Dokku server
dokku dokku/hostname string $YOUR_FULL_QUALIFIED_DOMAIN
# this copies over the public SSH key assigned to the server
dokku dokku/key_file string /home/dhc-user/.ssh/authorized_keys
dokku dokku/key_file string /home/ubuntu/.ssh/authorized_keys
packages:
- dokku
```
Shortly after running the create command you will get a confirmation that the
instance has been created, and after about a minute it should be ready to login.
Check the IP of the instance through the web UI or by running:
```sh
nova list
```
SSH with the `ubuntu` username and the public key previously added.
Keep in mind that if you logged in quick enough dokku might still be installing
in the background, and not be ready. The installation takes a few minutes.

View File

@@ -1,41 +0,0 @@
# Installing on Linode
When installing Dokku on a Linode server, you'll likely see an error during Docker installation:
> Warning: current kernel is not supported by the linux-image-extra-virtual package. We have no AUFS support. Consider installing the packages linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.
After 10 seconds, the installation will continue as normal.
This warning is the result of Linode using its own kernel, which does not support AUFS, instead of using the kernel supplied by Ubuntu. If you ignore the warning, Docker will fall back to using the DeviceMapper storage backend and Dokku will work normally. However, AUFS is better tested and will perform better.
If you would like to use AUFS, follow the steps below to install Ubuntu's kernel and configure your server to boot it instead of Linode's.
## Preparing your Linode for AUFS
__Warning__: These steps will delete *everything* on your Linode.
1. Open your server's dashboard in the [Linode Manager](https://manager.linode.com/).
2. Make sure your Linode is [using KVM](https://www.linode.com/docs/platform/kvm#how-to-enable-kvm), not Xen, for virtualization.
3. In the "Rebuild" tab, select "Ubuntu 14.04 LTS", set a root password, and rebuild.
4. Once your Linode has been created, click "Boot" and wait for it to complete.
5. SSH into your Linode as root and run the following commands:
```shell
apt-get update
apt-get -qq upgrade
apt-get install linux-image-virtual linux-image-extra-virtual
```
6. When prompted, install Grub onto the first hard drive.
7. Back in your server's dashboard, click "Edit" on its Configuration Profile
8. Change the "Kernel" option to "GRUB 2" and save your changes.
9. Lastly, reboot the Linode.
Once your server comes back online, you'll be running Ubuntu's default kernel. You can now follow Dokku's [normal installation instructions](/dokku/getting-started/installation/) and `bootstrap.sh` will take care of everything else.

View File

@@ -0,0 +1,27 @@
# RPM Package Installation Notes
> New as of 0.8.0 *(experimental)*
>**Warning:** Web installer is not available on CentOS. You will need to configure [SSH keys](/docs/deployment/user-management.md#adding-ssh-keys) and [virtual hosts](/docs/configuration/domains.md#customizing-hostnames) using dokku command line interface.
Dokku defaults to being installed via RPM package on CentOS 7. While certain hosts may require extra work to get running, you may optionally wish to automate the installation of Dokku without the use of our `bootstrap.sh` bash script. The following are the steps run by said script:
```shell
# Install docker
curl -fsSL https://get.docker.com/ | sh
# Install epel for nginx packages to be available
sudo yum install -y epel-release
# Install dokku
curl -s https://packagecloud.io/install/repositories/dokku/dokku/script.rpm.sh | sudo bash
sudo yum install -y herokuish dokku
sudo dokku plugin:install-dependencies --core
systemctl start nginx
# Enable docker and nginx on system startup
systemctl enable docker
systemctl enable nginx
```
The [devicemapper](https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/) is the default Docker storage driver on CentOS 7 and defaults to a configuration mode known as `loop-lvm`. This mode is designed to work out-of-the-box with no additional configuration. However, production deployments should not run under `loop-lvm` mode. The preferred configuration for production deployments is [`direct-lvm`](https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#/configure-direct-lvm-mode-for-production).

View File

@@ -19,15 +19,23 @@
# - `DOKKU_IP`
# - `FORWARDED_PORT`.
cd path/to/dokku
# for most users
vagrant up
# windows users must instead use the following
vagrant up dokku-windows
```
- Setup SSH Config in `~/.ssh/config`. The port listed here is usually correct, though you may want to verify that it is the same as the one listed in the output of `vagrant ssh-config dokku`
- Setup SSH Config in `~/.ssh/config`.
```ini
Host dokku.me
Port 22
```
> For users that have customized the IP address of their VM - either in a custom `Vagrantfile` or via the `DOKKU_IP` environment variable - and are not using `10.0.0.2` for the Vagrant IP, you'll need to instead use the output of `vagrant ssh-config dokku` for your ~/.ssh/config entry.
- Copy your SSH key via `cat ~/.ssh/id_rsa.pub | pbcopy` and paste it into the dokku-installer at http://dokku.me . Change the `Hostname` field on the Dokku Setup screen to your domain and then check the box that says `Use virtualhost naming`. Then click *Finish Setup* to install your key. You'll be directed to application deployment instructions from here.
Please note, the `dokku.me` domain is setup to point to `10.0.0.2` along with all subdomains (ie yourapp.dokku.me). If you change the `DOKKU_IP` in your vagrant setup you'll need to update your `/etc/hosts` file to point your reconfigured ip address.

View File

@@ -6,12 +6,12 @@ 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 14.04 x64](http://www.ubuntu.com/download/) with the FQDN set <sup>[1]</sup>
- 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 <sup>[1]</sup>
- At least `1GB` of system memory <sup>[2]</sup>
You can *optionally* have a domain name pointed at the host's IP, though this is not necessary.
Dokku is designed for usage on a fresh installation of Ubuntu, and should install all necessary dependencies if installing via the bootstrap method.
Dokku is designed for usage on a fresh VM installation, and should install all necessary dependencies if installing via the bootstrap method.
### Installing the latest stable version
@@ -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.7.2/bootstrap.sh
sudo DOKKU_TAG=v0.7.2 bash bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/v0.10.3/bootstrap.sh;
sudo DOKKU_TAG=v0.10.3 bash bootstrap.sh
```
The installation process takes about 5-10 minutes, depending upon internet connection speed.
@@ -31,7 +31,9 @@ The installation process takes about 5-10 minutes, depending upon internet conne
Once the installation is complete, you can open a browser to setup your SSH key and virtualhost settings. Open your browser of choice and navigate to the host's IP address - or the domain you assigned to that IP previously - and configure Dokku via the web admin.
*If you don't complete setup via the web installer (even if you set up SSH keys and virtual hosts otherwise) your Dokku installation will remain vulnerable to anyone finding the setup page and inserting their key.*
>**Warning:** If you don't complete setup via the web installer (even if you set up SSH keys and virtual hosts otherwise) your Dokku installation will remain vulnerable to anyone finding the setup page and inserting their key.
>**Warning:** Web installer is not available on CentOS and Arch Linux. You will need to configure [SSH keys](/docs/deployment/user-management.md#adding-ssh-keys) and [virtual hosts](/docs/configuration/domains.md#customizing-hostnames) using dokku command line interface.
#### 3. Deploy your first application
Once you save your settings, the web admin will self-terminate and you should be able to run or deploy to the Dokku installation.
@@ -40,18 +42,18 @@ Once you save your settings, the web admin will self-terminate and you should be
For various reasons, certain hosting providers may have other steps that should be preferred to the above. If hosted on any of the following popular hosts, please follow the linked to instructions:
- [Digital Ocean Installation Notes](/dokku/getting-started/install/digitalocean)
- [DreamHost Cloud Installation Notes](/dokku/getting-started/install/dreamhost/)
- [Linode Installation Notes](/dokku/getting-started/install/linode/)
- [Microsoft Azure Installation Notes](/dokku/getting-started/install/azure/)
- [Digital Ocean Installation Notes](/docs/getting-started/install/digitalocean.md)
- [DreamHost Cloud Installation Notes](/docs/getting-started/install/dreamhost.md)
- [Microsoft Azure Installation Notes](/docs/getting-started/install/azure.md)
As well, you may wish to customize your installation in some other fashion. or experiment with vagrant. The guides below should get you started:
- [Debian Package Installation Notes](/dokku/getting-started/install/debian/)
- [Vagrant Installation Notes](/dokku/getting-started/install/vagrant/)
- [Advanced Install Customization](/dokku/getting-started/advanced-installation/)
- [Debian Package Installation Notes](/docs/getting-started/install/debian.md)
- [RPM Package Installation Notes](/docs/getting-started/install/rpm.md)
- [Vagrant Installation Notes](/docs/getting-started/install/vagrant.md)
- [Advanced Install Customization](/docs/getting-started/advanced-installation.md)
---
- <sup>[1]: To check whether your system has an fqdn set, run `sudo hostname -f`</sup>
- <sup>[2]: If your system has less than 1GB of memory, you can use [this workaround](/dokku/getting-started/advanced-installation/#vms-with-less-than-1gb-of-memory).</sup>
- <sup>[2]: If your system has less than 1GB of memory, you can use [this workaround](/docs/getting-started/advanced-installation.md#vms-with-less-than-1gb-of-memory).</sup>

View File

@@ -150,7 +150,57 @@ it might that the curl command that is supposed to fetch the buildpack (anything
```shell
dokku config:set --global CURL_TIMEOUT=600
dokku config:set --global CURL_CONNECT_TIMEOUT=30
dokku config:set --global CURL_CONNECT_TIMEOUT=180
```
Please see https://github.com/dokku/dokku/issues/509
Another reason for this error (although it may respond immediately ruling out a timeout issue) may be because you've set the config setting `SSL_CERT_FILE`. Using a config setting with this key interferes with the buildpack's ability to download it's dependencies, so you must rename the config setting to something else, e.g. `MY_APP_SSL_CERT_FILE`.
***
__Symptom:__ Build fails with `Killed` message.
__Solution:__
This generally occurs when the server runs out of memory. You can either add more ram to your server or setup swap space. The follow script will create 2gb of swap space.
```shell
sudo install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=2048k
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
```
***
__Symptom:__ I successfully deployed my application with no deployment errors but I'm receiving Connection Timeout when attempting to access the application.
__Solution:__
This can occur if Dokku is running on a system with a firewall like ufw enabled (some OS versions like Ubuntu 16.04 have this enabled by default). You can check if this is your case by running the following script:
```shell
sudo ufw status
```
If the previous script returned `Status: active` and a list of ports, ufw is enabled and is probably the cause of the symptom described above. To disable it, run:
```shell
sudo ufw disable
```
***
__Symptom:__ I can't connect to my application because the server is sending an invalid response, or can't provide a secure connection.
__Solution:__
This isn't usually an issue with Dokku, but rather an app config problem. This can happen when your application is configured to enforce secure connections/HSTS, but you don't have SSL set up for the app.
In Rails at least, if your `application.rb` or `environmnents/production.rb` include the line `configure.force_ssl = true`, which includes HSTS try commenting that out and redeploying.
If this solves the issue temporarily, longer term you should consider [configuring SSL](http://dokku.viewdocs.io/dokku/configuration/ssl/).

View File

@@ -0,0 +1,54 @@
# Uninstalling
While we hate to see you go, if you need to uninstall Dokku, the following may help you out:
## Arch Installation
```shell
# purge dokku from your system
yaourt -Rsn dokku
```
## CentOS Installation
```shell
# uninstall dokku
yum remove dokku herokuish
```
## Debian Installation
```shell
# purge dokku from your system
apt-get purge -y --force-yes dokku herokuish
# remove any dependencies that are no longer necessary
apt-get -y --force-yes autoremove
```
## Makefile Installation
This is a manual deletion process, and as it is not a recommended installation method, there is currently no automated uninstallation.
All service plugins should be unlinked from applications, stopped, and destroyed.
All applications should be stopped, and all docker containers and images deleted:
```shell
# stop all applications
dokku --quiet apps | xargs dokku ps:stop
# cleanup containers and images
dokku cleanup
```
The following user/group must be deleted:
- user: `dokku`
- group: `dokku`
The following directories must be deleted:
- `~dokku`
- `/var/lib/dokku`
- `/var/log/dokku`

View File

@@ -1,6 +1,6 @@
# Upgrading
If your version of Dokku is pre 0.3.0 (check with `dokku version`), we recommend [a fresh install](/dokku/getting-started/installation/) on a new server.
If your version of Dokku is pre 0.3.0 (check with `dokku version`), we recommend [a fresh install](/docs/getting-started/installation.md) on a new server.
## Migration Guides
@@ -8,15 +8,15 @@ Before upgrading, check the migration guides to get comfortable with new feature
### 0.5 Migration Guide
- [0.5 Migration Guide](/dokku/appendices/0.5.0-migration-guide/)
- [0.5 Migration Guide](/docs/appendices/0.5.0-migration-guide.md)
### 0.6 Migration Guide
- [0.6 Migration Guide](/dokku/appendices/0.6.0-migration-guide/)
- [0.6 Migration Guide](/docs/appendices/0.6.0-migration-guide.md)
### 0.7 Migration Guide
- [0.7 Migration Guide](/dokku/appendices/0.7.0-migration-guide/)
- [0.7 Migration Guide](/docs/appendices/0.7.0-migration-guide.md)
## Upgrade Instructions
@@ -24,9 +24,8 @@ If Dokku was installed via `apt-get install dokku` or `bootstrap.sh` (most commo
```shell
sudo apt-get update
dokku apps
dokku ps:stop <app> # repeat to shut down each running app
sudo apt-get install -qq -y dokku herokuish
dokku --quiet apps | xargs -L1 dokku ps:stop # stops each running app
sudo apt-get install -qq -y dokku herokuish sshcommand plugn
dokku ps:rebuildall # rebuilds all applications
```
@@ -37,7 +36,7 @@ dokku ps:rebuildall # rebuilds all applications
> dokku ps:rebuild APP
> ```
>
> Please see the [images documentation](/dokku/deployment/methods/images/) and [tar documentation](/dokku/deployment/methods/tar/)
> Please see the [images documentation](/docs/deployment/methods/images.md) and [tar documentation](/docs/deployment/methods/tar.md)
> for instructions on rebuilding applications deployed by those plugins.
### Upgrade From Source
@@ -45,8 +44,7 @@ dokku ps:rebuildall # rebuilds all applications
If you installed Dokku from source (less common), upgrade with:
```shell
dokku apps
dokku ps:stop <app> # repeat to shut down each running app
dokku --quiet apps | xargs -L1 dokku ps:stop # stops each running app
cd ~/dokku
git pull --tags origin master

View File

@@ -4,7 +4,7 @@ If you’re stuck, there are a number of places you can get help:
## The Official Dokku Website
- [http://dokku.viewdocs.io/dokku/](/dokku/)
- [http://dokku.viewdocs.io/dokku/](/docs/)
The Official Dokku website is always a great place to visit. It features links to oft-used developer tools, community plugins, and guides on using dokku.

View File

@@ -7,33 +7,33 @@
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link href="https://fonts.googleapis.com/css?family=Montserrat:400.7.2" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/style.css" rel="stylesheet">
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
<style>
</style>
@@ -98,12 +98,12 @@
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.7.2/bootstrap.sh</span>
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.10.3/bootstrap.sh</span>
</p>
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">sudo DOKKU_TAG=v0.7.2 bash bootstrap.sh</span>
<span class="command">sudo DOKKU_TAG=v0.10.3 bash bootstrap.sh</span>
</p>
<p class="line">
<span class="output">&nbsp;# go to your server's IP and follow the web installer</span>
@@ -173,7 +173,7 @@
</div>
<div class="alternate-instructions">
<p>Hate <code>curl | bash</code>? See our official <a href="https://github.com/Azure/azure-quickstart-templates/tree/master/dokku-vm" target="_blank">Azure</a>, <a href="https://www.digitalocean.com/features/one-click-apps/dokku/" target="_blank">DigitalOcean</a>, <a href="/{{NAME}}~{{REF}}/getting-started/install/dreamhost/">DreamHost Cloud</a>, and <a href="/{{NAME}}~{{REF}}/getting-started/install/linode/" target="_blank">Linode</a> instructions.<p>
<p>Hate <code>curl | bash</code>? See our official <a href="https://github.com/Azure/azure-quickstart-templates/tree/master/dokku-vm" target="_blank">Azure</a>, <a href="https://www.digitalocean.com/features/one-click-apps/dokku/" target="_blank">DigitalOcean</a>, and <a href="/{{NAME}}~{{REF}}/getting-started/install/dreamhost/">DreamHost Cloud</a> instructions.<p>
<p>Still no love? <a href="https://github.com/dokku/dokku/blob/master/CONTRIBUTING.md" target="_blank">Contributions welcome</a>!</a>
</div>
</div>
@@ -283,7 +283,7 @@
<div class="container">
<footer>
<p>&copy; 2013-2016 Dokku</p>
<p>&copy; 2013-2017 Dokku</p>
</footer>
</div>
<script>

View File

@@ -7,29 +7,28 @@
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400:sans-serif|Open+Sans:400:sans-serif" rel="stylesheet" type="text/css">
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<script>
@@ -43,97 +42,18 @@
</script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/dokku/dokku/v0.7.2/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/dokku/dokku/v0.10.3/docs/assets/style.css" rel="stylesheet">
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
<style>
.highlight-show-language {
position: relative;
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
.highlight-show-language-label {
color: black;
background-color: #CFCFCF;
display: inline-block;
position: absolute;
bottom: auto;
left: auto;
top: 0;
right: 0;
width: auto;
height: auto;
font-size: 0.9em;
border-radius: 0 0 0 5px;
padding: 0 0.5em;
text-shadow: none;
z-index: 1;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
-webkit-transform: none;
-moz-transform: none;
-ms-transform: none;
-o-transform: none;
transform: none;
}
.highlight-output pre {
color: #fff;
background-color: #000;
padding: 10px;
}
.improve-slideout {
position: fixed;
bottom: 66%;
right: 0;
-webkit-transition-duration: 0.3s;
-moz-transition-duration: 0.3s;
-o-transition-duration: 0.3s;
transition-duration: 0.3s;
background: #363637;
padding: 5px 0px 4px;
z-index: 90;
}
.improve-slideout:hover {
right: 205px;
}
.improve-slideout:hover .improve-slideout-inner {
right: 0;
}
.improve-slideout-inner {
position: fixed;
bottom: 66%;
right: -205px;
-webkit-transition-duration: 0.3s;
-moz-transition-duration: 0.3s;
-o-transition-duration: 0.3s;
transition-duration: 0.3s;
background: #e0e0d9;
padding: 4px 12px;
width: 205px;
}
.improve-slideout-inner h6 {
color: #363637;
font-weight: 700;
text-transform: uppercase;
margin: 0;
.list-group-item {
font-size: 14px;
}
.git-improve {
font-size: 20px;
vertical-align: -2px;
padding-left: 8px;
}
.back-to-contents {
position: fixed;
bottom: calc(66% - 34px);
right: 0;
background: #363637;
padding: 5px 0px 4px;
z-index: 90;
}
.icon-improve {
color: #bdbdb5;
padding: 2px 9px 0 10px;
font-size: 14px;
.markdown-body {
line-height: 1.5;
}
</style>
</head>
@@ -191,6 +111,7 @@
<a href="#" class="list-group-item disabled">Getting Started</a>
<a href="/{{NAME}}/getting-started/installation/" class="list-group-item">Getting Started with Dokku</a>
<a href="/{{NAME}}/getting-started/upgrading/" class="list-group-item">Upgrading Dokku</a>
<a href="/{{NAME}}/getting-started/uninstalling/" class="list-group-item">Uninstalling Dokku</a>
<a href="/{{NAME}}/getting-started/troubleshooting/" class="list-group-item">Troubleshooting</a>
<a href="/{{NAME}}/getting-started/where-to-get-help/" class="list-group-item">Getting Help</a>
@@ -198,6 +119,7 @@
<a href="/{{NAME}}/deployment/application-deployment/" class="list-group-item">Deploying an Application</a>
<a href="/{{NAME}}/deployment/application-management/" class="list-group-item">Application Management</a>
<a href="/{{NAME}}/deployment/logs/" class="list-group-item">Application Logs</a>
<a href="/{{NAME}}/deployment/remote-commands/" class="list-group-item">Remote Commands</a>
<a href="/{{NAME}}/deployment/one-off-processes/" class="list-group-item">One Off Processes/Cron</a>
<a href="/{{NAME}}/deployment/process-management/" class="list-group-item">Process Scaling</a>

View File

@@ -1,5 +1,6 @@
{
"redirects": {
"installation": "getting-started/advanced-installation/",
"advanced-installation": "getting-started/advanced-installation/",
"troubleshooting": "getting-started/troubleshooting/",
"upgrading": "getting-started/upgrading/",

26
dokku
View File

@@ -7,17 +7,9 @@ export DOKKU_ROOT=${DOKKU_ROOT:=~dokku}
[[ -d $DOKKU_ROOT/.dokkurc ]] && for f in $DOKKU_ROOT/.dokkurc/*; do source "$f"; done
[[ $DOKKU_TRACE ]] && set -x
case "$(lsb_release -si)" in
Arch)
export DOKKU_DISTRO=${DOKKU_DISTRO:="arch"}
;;
Debian)
export DOKKU_DISTRO=${DOKKU_DISTRO:="debian"}
;;
*)
export DOKKU_DISTRO=${DOKKU_DISTRO:="ubuntu"}
;;
esac
export DOKKU_DISTRO
# shellcheck disable=SC1091
DOKKU_DISTRO=$(. /etc/os-release > /dev/null 2>&1 || true ; echo "$ID")
export DOKKU_IMAGE=${DOKKU_IMAGE:="gliderlabs/herokuish"}
export DOKKU_LIB_ROOT=${DOKKU_LIB_PATH:="/var/lib/dokku"}
@@ -43,10 +35,12 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
parse_args "$@"
args=("$@")
skip_arg=false
if [[ "${args[0]}" =~ ^--.* ]]; then
for arg in "$@"; do
$skip_arg && skip_arg=false && continue
if [[ "$arg" == "--app" ]]; then
shift 2
shift 2 && skip_arg=true
elif [[ "$arg" =~ ^--.* ]]; then
shift 1
else
@@ -62,8 +56,12 @@ if [[ $(id -un) != "dokku" ]] && [[ ! $1 =~ plugin:* ]] && [[ ! $1 == "ssh-keys:
exit $?
fi
if [[ $(id -un) != "root" && $1 =~ ^plugin:.* ]] || [[ $(id -un) != "root" && $1 == "ssh-keys:add" ]]; then
dokku_log_fail "This command must be run as root"
if [[ $1 =~ ^plugin:.* && $1 != "plugin:help" && $1 != "plugin:list" ]] || [[ $1 == "ssh-keys:add" ]]; then
if [[ $(id -un) != "root" ]]; then
dokku_log_fail "This command must be run as root"
else
export SSH_USER=root
fi
fi
if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; then

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
cleanup_container_state() {
declare desc="core post-deploy state cleanup"
local trigger="core-post-deploy cleanup_container_state"
local APP="$1"; local PROCTYPES="$(egrep -v "^#" "$DOKKU_ROOT/$APP/DOKKU_SCALE" | awk -F '=' '{ print $1 }' | xargs)"
local CONTAINER_FILES="$(find "$DOKKU_ROOT/$APP" -maxdepth 1 -name "CONTAINER.*" -printf "%f\n" 2>/dev/null | sort -t . -k 3 -n | xargs)"
local CONTAINER_FILE
for CONTAINER_FILE in $CONTAINER_FILES; do
local CONTAINER_TYPE="$(awk -F '.' '{ print $2 }' <<< "$CONTAINER_FILE")"
if [[ "$(is_val_in_list "$CONTAINER_TYPE" "$PROCTYPES" " ")" == "false" ]]; then
dokku_log_info1 "Container type ($CONTAINER_TYPE) is no longer defined. Removing state"
local IP_FILE="${CONTAINER_FILE//CONTAINER/IP}"
local PORT_FILE="${CONTAINER_FILE//CONTAINER/PORT}"
rm -f "$DOKKU_ROOT/$APP/$CONTAINER_FILE" "$DOKKU_ROOT/$APP/$IP_FILE" "$DOKKU_ROOT/$APP/$PORT_FILE"
fi
done
}
cleanup_container_state "$@"

View File

@@ -42,7 +42,7 @@ execute_script() {
COMMAND+=" rm -rf /tmp/cache ; "
COMMAND+=" ln -sf /cache /tmp/cache ; "
COMMAND+=" fi ; "
COMMAND+=" $SCRIPT_CMD ;"
COMMAND+=" $SCRIPT_CMD || exit 1;"
COMMAND+=" if [[ -d '/cache' ]]; then "
COMMAND+=" echo removing installation cache... ; "
COMMAND+=" rm -f /tmp/cache ; "

View File

@@ -30,7 +30,8 @@ if [[ $(systemctl 2> /dev/null) =~ -\.mount ]]; then
cat<<EOF > /etc/systemd/system/dokku-redeploy.service
[Unit]
Description=Dokku app redeploy service
After=docker.target
Requires=docker.service
After=docker.service
[Service]
Type=simple

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core standard plugin"
version = "0.7.2"
version = "0.10.3"
[plugin.config]

View File

@@ -5,30 +5,11 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/00_dokku-standard/exec-app-json-scripts"
exec_app_json_scripts() {
declare desc="core app.json scripts execution"
local trigger="pre-deploy app_json_scripts"
local trigger="post-deploy app_json_scripts"
local APP="$1"; local IMAGE_TAG="$4"; local PHASE_SCRIPT_KEY="postdeploy"
dokku_log_info1 "Attempting to run scripts.dokku.$PHASE_SCRIPT_KEY from app.json (if defined)"
execute_script "$APP" "$IMAGE_TAG" "$PHASE_SCRIPT_KEY"
}
cleanup_container_state() {
declare desc="core post-deploy state cleanup"
local trigger="post-deploy cleanup_container_state"
local APP="$1"; local PROCTYPES="$(egrep -v "^#" "$DOKKU_ROOT/$APP/DOKKU_SCALE" | awk -F '=' '{ print $1 }' | xargs)"
local CONTAINER_FILES="$(find "$DOKKU_ROOT/$APP" -maxdepth 1 -name "CONTAINER.*" -printf "%f\n" 2>/dev/null | sort -t . -k 3 -n | xargs)"
local CONTAINER_FILE
for CONTAINER_FILE in $CONTAINER_FILES; do
local CONTAINER_TYPE="$(awk -F '.' '{ print $2 }' <<< "$CONTAINER_FILE")"
if [[ "$(is_val_in_list "$CONTAINER_TYPE" "$PROCTYPES" " ")" == "false" ]]; then
dokku_log_info1 "Container type ($CONTAINER_TYPE) is no longer defined. Removing state"
local IP_FILE="${CONTAINER_FILE//CONTAINER/IP}"
local PORT_FILE="${CONTAINER_FILE//CONTAINER/PORT}"
rm -f "$DOKKU_ROOT/$APP/$CONTAINER_FILE" "$DOKKU_ROOT/$APP/$IP_FILE" "$DOKKU_ROOT/$APP/$PORT_FILE"
fi
done
}
exec_app_json_scripts "$@"
cleanup_container_state "$@"

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/config/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/00_dokku-standard/exec-app-json-scripts"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
exec_app_json_scripts() {
declare desc="core app.json scripts execution"

View File

@@ -6,7 +6,7 @@ dokku_cleanup_cmd(){
declare desc="cleans up old deployment cruft"
local cmd="cleanup"
docker_cleanup
docker_cleanup "$APP" "true"
}

View File

@@ -18,7 +18,7 @@ dokku_report_cmd() {
docker run --rm -ti gliderlabs/herokuish:latest herokuish version
dokku_log_info1 "dokku version: $(dokku version)"
dokku_log_info1 "dokku plugins: "
dokku plugin
dokku plugin:list
}
dokku_report_cmd "$@"

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/ps/functions"
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
dokku_run_cmd() {

View File

@@ -0,0 +1 @@
hook

View File

@@ -10,9 +10,10 @@ flag_rsyslog_needs_restart=n
# This can be done unconditionally as mkdir -p
# exits gracefully if the path already exists
# shellcheck disable=SC2174
mkdir -m 775 -p "$DOKKU_LOGS_DIR"
case "$DOKKU_DISTRO" in
arch|debian)
arch|debian|centos)
chgrp dokku "$DOKKU_LOGS_DIR"
;;
*)
@@ -23,7 +24,7 @@ esac
if [[ ! -f "$DOKKU_EVENTS_LOGFILE" ]]; then
touch "$DOKKU_EVENTS_LOGFILE"
case "$DOKKU_DISTRO" in
arch|debian)
arch|debian|centos)
chgrp dokku "$DOKKU_EVENTS_LOGFILE"
;;
*)
@@ -59,7 +60,7 @@ $DOKKU_LOGS_DIR/*.log {
EOF
if [[ "$DOKKU_DISTRO" = "debian" ]]; then
sed -i '/\s*su syslog dokku/d; s/\(create [0-7][0-7][0-7]\) syslog dokku/\1 root dokku/g' $DOKKU_LOGROTATE_FILE
sed -i 's/ syslog dokku$/ root dokku/g' $DOKKU_LOGROTATE_FILE
fi
flag_rsyslog_needs_restart=y

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core events logging plugin"
version = "0.7.2"
version = "0.10.3"
[plugin.config]

View File

@@ -1,36 +1,11 @@
#!/usr/bin/env bash
[[ " help apps:help " == *" $1 "* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
source "$PLUGIN_AVAILABLE_PATH/apps/internal-functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
case "$1" in
help | apps:help)
help_content_func () {
declare desc="return apps plugin help content"
cat<<help_content
apps, List your apps
apps:create <app>, Create a new app
apps:destroy <app>, Permanently destroy an app
apps:rename <old-app> <new-app>, Rename an app
help_content
}
if [[ $1 = "apps:help" ]] ; then
echo -e 'Usage: dokku apps[:COMMAND]'
echo ''
echo 'List your apps.'
echo ''
echo 'Example:'
echo ''
echo '$ dokku apps'
echo '=====> My Apps'
echo 'example'
echo 'example2'
echo ''
echo 'Additional commands:'
help_content_func | sort | column -c2 -t -s,
else
help_content_func
fi
apps_help_cmd "$@"
;;
*)

51
plugins/apps/internal-functions Executable file
View File

@@ -0,0 +1,51 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
apps_help_content_func() {
declare desc="return apps plugin help content"
cat<<help_content
apps, [DEPRECATED] Alias for apps:list
apps:clone <old-app> <new-app>, Clones an app
apps:create <app>, Create a new app
apps:destroy <app>, Permanently destroy an app
apps:list, List your apps
apps:rename <old-app> <new-app>, Rename an app
apps:report [<app>] [<flag>], Display report about an app
help_content
}
apps_help_cmd() {
if [[ $1 = "apps:help" ]] ; then
echo -e 'Usage: dokku apps[:COMMAND]'
echo ''
echo 'Manage Dokku apps'
echo ''
echo 'Example:'
echo ''
echo '$ dokku apps:list'
echo '=====> My Apps'
echo 'example'
echo 'example2'
echo ''
echo 'Additional commands:'
apps_help_content_func | sort | column -c2 -t -s,
elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then
apps_help_content_func
else
cat<<help_desc
apps, Manage Dokku apps
help_desc
fi
}
apps_list_cmd() {
declare desc="lists all apps"
local cmd="apps"
local app
dokku_log_info2_quiet "My Apps"
for app in $(dokku_apps); do
echo "$app"
done
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core apps plugin"
version = "0.7.2"
version = "0.10.3"
[plugin.config]

41
plugins/apps/subcommands/clone Executable file
View File

@@ -0,0 +1,41 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/apps/functions"
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
apps_clone_cmd() {
declare desc="clones an app"
declare OLD_APP="$2" NEW_APP="$3"
local cmd="apps:clone"
local SKIP_REBUILD=false
if [[ "$2" == "--skip-deploy" ]]; then
SKIP_REBUILD=true
OLD_APP="$3"
NEW_APP="$4"
fi
[[ -z "$OLD_APP" ]] && dokku_log_fail "Please specify an app to run the command on"
[[ -d "$DOKKU_ROOT/$NEW_APP" ]] && dokku_log_fail "Name is already taken"
local NEW_CACHE_DIR="$DOKKU_ROOT/$NEW_APP/cache"
apps_create "$NEW_APP"
pushd "$DOKKU_ROOT/$OLD_APP/." > /dev/null
find ./* -not \( -name .cache \) | cpio -pvdmu "$DOKKU_ROOT/$NEW_APP"
popd > /dev/null
if [[ -d "$NEW_CACHE_DIR" ]] && ! rmdir "$NEW_CACHE_DIR"; then
docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$NEW_CACHE_DIR:/cache" "dokku/$OLD_APP" chmod 777 -R /cache
fi
rm -rf "$NEW_CACHE_DIR"
[[ -f "$DOKKU_ROOT/$NEW_APP/URLS" ]] && sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/URLS"
[[ -f "$DOKKU_ROOT/$NEW_APP/VHOST" ]] && sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/VHOST"
[[ -f "$DOKKU_ROOT/$NEW_APP/hooks/pre-receive" ]] && sed -i -e "s/git-hook $OLD_APP/git-hook $NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/hooks/pre-receive"
[[ "$SKIP_REBUILD" == "true" ]] || ps_rebuild "$NEW_APP"
plugn trigger post-app-clone "$OLD_APP" "$NEW_APP"
echo "Cloning $OLD_APP to $NEW_APP... done"
}
apps_clone_cmd "$@"

View File

@@ -1,16 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/apps/internal-functions"
apps_main_cmd() {
declare desc="lists all apps"
local cmd="apps"
local app
dokku_log_info2_quiet "My Apps"
for app in $(dokku_apps); do
echo "$app"
done
}
apps_main_cmd "$@"
dokku_log_warn "Deprecated: Please use apps:list"
apps_list_cmd "$@"

5
plugins/apps/subcommands/list Executable file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_AVAILABLE_PATH/apps/internal-functions"
apps_list_cmd "$@"

View File

@@ -13,11 +13,11 @@ apps_rename_cmd() {
local NEW_APP="$3"
local OLD_CACHE_DIR="$DOKKU_ROOT/$OLD_APP/cache"
mkdir -p "$DOKKU_ROOT/$NEW_APP"
if [[ -d "$OLD_CACHE_DIR" ]] && ! rmdir "$OLD_CACHE_DIR"; then
docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$OLD_CACHE_DIR:/cache" "dokku/$OLD_APP" chmod 777 -R /cache
fi
rm -rf "$OLD_CACHE_DIR"
apps_create "$NEW_APP"
cp -a "$DOKKU_ROOT/$OLD_APP/." "$DOKKU_ROOT/$NEW_APP"
DOKKU_APPS_FORCE_DELETE=1 apps_destroy "$OLD_APP"
[[ -f "$DOKKU_ROOT/$NEW_APP/URLS" ]] && sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/URLS"

92
plugins/apps/subcommands/report Executable file
View File

@@ -0,0 +1,92 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/apps/functions"
report_single_app() {
declare APP="$1" INFO_FLAG="$2"
local APP_DIR="$DOKKU_ROOT/$APP"
local use_echo;
if [[ "$INFO_FLAG" == "true" ]]; then
use_echo=true
INFO_FLAG=""
fi
verify_app_name "$APP"
local DOKKU_APP_CIDS=$(get_app_container_ids "$APP")
if [[ -n $DOKKU_APP_CIDS ]]; then
local cid
for CID in $DOKKU_APP_CIDS; do
local APP_CONTAINER_STATUS
local DOKKU_APP_CID
DOKKU_APP_CID=$CID
APP_CONTAINER_STATUS=$(docker inspect -f '{{.State.Status}}' "$CID")
done
fi
local flag_map=(
"--app-dir: $APP_DIR"
"--git-sha: $(GIT_DIR="$APP_DIR" git rev-parse --short HEAD 2> /dev/null || false)"
"--app-cid: ${DOKKU_APP_CID:0:12}"
"--status: $APP_CONTAINER_STATUS"
)
if [[ -z "$INFO_FLAG" ]]; then
dokku_log_info2_quiet "$APP app information"
if (is_deployed "$APP"); then
for flag in "${flag_map[@]}"; do
key="$(echo "${flag#--}" | cut -f1 -d' ' | tr - ' ')"
dokku_log_verbose "$(printf "%-20s %-25s" "${key^}" "${flag#*: }")"
done
else
if [[ "$use_echo" ]]; then
echo "not deployed"
else
dokku_log_fail "not deployed"
fi
fi
else
local match=false; local value_exists=false
for flag in "${flag_map[@]}"; do
valid_flags="${valid_flags} $(echo "$flag" | cut -d':' -f1)"
if [[ "$flag" == "${INFO_FLAG}:"* ]]; then
value=${flag#*: }
size="${#value}"
if [[ "$size" -ne 0 ]]; then
echo "$value" && match=true && value_exists=true
else
match=true
fi
fi
done
if [[ "$match" == "true" ]]; then
[[ "$value_exists" == "true" ]] || dokku_log_fail "not deployed"
else
dokku_log_fail "Invalid flag passed, valid flags:${valid_flags}"
fi
fi
}
apps_report_cmd() {
declare desc="displays the app report for one or more apps"
local cmd="apps:report"
local INSTALLED_APPS=$(dokku_apps)
local APP="$2" INFO_FLAG="$3"
if [[ -n "$APP" ]] && [[ "$APP" == --* ]]; then
INFO_FLAG="$APP"
APP=""
fi
if [[ -z "$APP" ]] && [[ -z "$INFO_FLAG" ]]; then
INFO_FLAG="true"
fi
if [[ -z "$APP" ]]; then
for app in $INSTALLED_APPS; do
report_single_app "$app" "$INFO_FLAG" | tee || true
done
else
report_single_app "$APP" "$INFO_FLAG"
fi
}
apps_report_cmd "$@"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core build-env plugin"
version = "0.7.2"
version = "0.10.3"
[plugin.config]

View File

@@ -9,8 +9,8 @@ build_env_pre_build_buildpack() {
local APP="$1"; local IMAGE=$(get_app_image_name "$APP"); local BUILD_ENV=""
verify_app_name "$APP"
[[ -z $(config_get --global CURL_CONNECT_TIMEOUT) ]] && config_set --global CURL_CONNECT_TIMEOUT=5
[[ -z $(config_get --global CURL_TIMEOUT) ]] && config_set --global CURL_TIMEOUT=30
[[ -z $(config_get --global CURL_CONNECT_TIMEOUT) ]] && config_set --global CURL_CONNECT_TIMEOUT=90
[[ -z $(config_get --global CURL_TIMEOUT) ]] && config_set --global CURL_TIMEOUT=60
if [[ -n $(config_export global) ]]; then
local BUILD_ENV+=$'\n'

View File

@@ -1,34 +1,11 @@
#!/usr/bin/env bash
[[ " help certs:help " == *" $1 "* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
source "$PLUGIN_AVAILABLE_PATH/certs/internal-functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
case "$1" in
help | certs:help)
help_content_func () {
declare desc="return certs plugin help content"
cat<<help_content
certs, Manage Dokku apps SSL (TLS) certs
certs:add <app> CRT KEY, Add an ssl endpoint to an app. Can also import from a tarball on stdin
certs:chain CRT [CRT ...], [NOT IMPLEMENTED] Print the ordered and complete chain for the given certificate
certs:generate <app> DOMAIN, Generate a key and certificate signing request (and self-signed certificate)
certs:info <app>, Show certificate information for an ssl endpoint
certs:key <app> CRT KEY [KEY ...], [NOT IMPLEMENTED] Print the correct key for the given certificate
certs:remove <app>, Remove an SSL Endpoint from an app
certs:rollback <app>, [NOT IMPLEMENTED] Rollback an SSL Endpoint for an app
certs:update <app> CRT KEY, Update an SSL Endpoint on an app. Can also import from a tarball on stdin
help_content
}
if [[ $1 = "certs:help" ]] ; then
echo -e 'Usage: dokku certs:COMMAND'
echo ''
echo 'Manage Dokku apps SSL (TLS) certs.'
echo ''
echo 'Additional commands:'
help_content_func | sort | column -c2 -t -s,
else
help_content_func
fi
certs_help_cmd "$@"
;;
*)

View File

@@ -26,6 +26,6 @@ get_ssl_hostnames() {
else
local SSL_HOSTNAMES=$SSL_HOSTNAME
fi
echo -e "$SSL_HOSTNAMES"
echo -e "$SSL_HOSTNAMES" | sort -u
return 0
}

View File

@@ -0,0 +1,71 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/certs/functions"
certs_help_content_func() {
declare desc="return certs plugin help content"
cat<<help_content
certs <app>, [DEPRECATED] Alternative for certs:report
certs:add <app> CRT KEY, Add an ssl endpoint to an app. Can also import from a tarball on stdin
certs:chain CRT [CRT ...], [NOT IMPLEMENTED] Print the ordered and complete chain for the given certificate
certs:generate <app> DOMAIN, Generate a key and certificate signing request (and self-signed certificate)
certs:info <app>, [DEPRECATED] Alternative for certs:report
certs:key <app> CRT KEY [KEY ...], [NOT IMPLEMENTED] Print the correct key for the given certificate
certs:remove <app>, Remove an SSL Endpoint from an app
certs:report [<app>] [<flag>], Displays an ssl report for one or more apps
certs:rollback <app>, [NOT IMPLEMENTED] Rollback an SSL Endpoint for an app
certs:update <app> CRT KEY, Update an SSL Endpoint on an app. Can also import from a tarball on stdin
help_content
}
certs_help_cmd() {
if [[ $1 = "certs:help" ]] ; then
echo -e 'Usage: dokku certs[:COMMAND]'
echo ''
echo 'Manage Dokku apps SSL (TLS) certs.'
echo ''
echo 'Additional commands:'
certs_help_content_func | sort | column -c2 -t -s,
elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then
certs_help_content_func
else
cat<<help_desc
certs, Manage Dokku apps SSL (TLS) certs
help_desc
fi
}
certs_info_cmd() {
# This is here because it's used in both the info and the default
declare desc="prints SSL certificate info for app"
local cmd="certs:info"
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
verify_app_name "$2"
local APP="$2"
local APP_SSL_PATH="$DOKKU_ROOT/$APP/tls"
if is_ssl_enabled "$APP"; then
dokku_log_info1 "Fetching SSL Endpoint info for $APP..."
dokku_log_info1 "Certificate details:"
dokku_log_info2 "Common Name(s): "
for domain in $(get_ssl_hostnames "$APP" | xargs); do
dokku_log_info2 " $domain"
done
dokku_log_info2 "Expires At: $(openssl x509 -in "$APP_SSL_PATH/server.crt" -noout -text | grep "Not After :" | awk -F " : " '{ print $2 }')"
dokku_log_info2 "Issuer: $(openssl x509 -in "$APP_SSL_PATH/server.crt" -noout -text | grep "Issuer:" | xargs | sed -e "s/Issuer: //g")"
dokku_log_info2 "Starts At: $(openssl x509 -in "$APP_SSL_PATH/server.crt" -noout -text | grep "Not Before:" | awk -F ": " '{ print $2 }')"
dokku_log_info2 "Subject: $(openssl x509 -in "$APP_SSL_PATH/server.crt" -noout -subject | sed -e "s:subject= ::g"| sed -e "s:^/::g" | sed -e "s:/:; :g")"
local SSL_VERIFY_OUTPUT="$(openssl verify -verbose -purpose sslserver "$APP_SSL_PATH/server.crt" | awk -F ':' '{ print $2 }' | tail -1 | xargs || true)"
if [[ "$SSL_VERIFY_OUTPUT" == "OK" ]]; then
local SSL_SELF_SIGNED="verified by a certificate authority."
else
local SSL_SELF_SIGNED="self signed."
fi
dokku_log_info2 "SSL certificate is $SSL_SELF_SIGNED"
else
dokku_log_info1 "$APP does not have an SSL endpoint"
fi
}

Some files were not shown because too many files have changed in this diff Show More