Commit Graph

58 Commits

Author SHA1 Message Date
Assaf Arkin
00ec004871 Zero down-time deploy and server checks
This change makes Dokku start up the new container, run a set of checks
against it, and only switch traffic over to the new containers if all
checks complete successfully. No requests are dropped during the switch
over.

To specify checks, add a CHECKS file to the root of your project
directory. This is a text file with one line per check. Empty lines and
lines starting with # are ignored.

A check is a relative URL and may be followed by expected content from
the page, for example:

  /about     Our Amazing Team

Even if you don’t use any checks, this change will prevent downtime
during switching from old to new container.

See: https://labnotes.org/zero-downtime-deploy-with-dokku/
2014-04-28 21:28:50 -07:00
Jessica Frazelle
969aed87c6 double brackets 2014-04-15 09:31:08 -04:00
Jessica Frazelle
2953ed2486 if dokku.conf has not been created, create it 2014-04-14 20:24:18 -04:00
Stafford Brunk
e2135a2c5f Change cert folder name from ssl to tls 2014-04-08 06:48:50 -06:00
Stafford Brunk
22c25dc40a Implement nginx spdy support 2014-04-03 07:20:18 -06:00
Stafford Brunk
dfac47cbe2 Allow symlinks for SSL cert detection in nginx-vhosts post-deploy 2014-04-03 07:15:21 -06:00
Stafford Brunk
bd5b2b210c Factor common SSL settings out to the http block 2014-04-03 07:05:30 -06:00
Stafford Brunk
e33f5c94a5 Use listen 443 ssl instead of ssl on in vhost conf file 2014-04-03 07:04:35 -06:00
Lukas Schauer
95c9656fc8 nginx vhost ipv6 compatibility
IPv6 Compatibility (Nginx Default Site is IPv6 compatible, resulting in not-working vhosts when AAAA DNS entry is set)
2013-11-27 12:03:38 -08:00
Paul Lietar
10a8c75224 Add an empty help message to the nginx-vhosts plugin.
Not doing anything just destroys the help message coming from previous
plugins. Run cat to forward stdin into stdout.
2013-11-23 00:10:30 +00:00
Paul Lietar
455be29249 Fix commands, the easy way.
Don't use pluginhook to run the commands hook, just run all the scripts
in a loop.
2013-11-22 21:42:39 +00:00
rhy-jot
e8037da726 Use globs, set nullglob, and remove stdout redirection for import 2013-11-20 15:40:50 -08:00
rhy-jot
6d64edc16a Update headers 2013-11-19 21:15:29 -08:00
rhy-jot
dae4e55f25 Merge pull request #265 from asm89/backup
Introduce `backup` plugin to export/import settings
2013-11-19 21:07:20 -08:00
Paul Lietar
83ce81fc51 Enable tracing in hooks when DOKKU_TRACE is set.
This makes it much easier to debug plugins.
Also source the 'dokkurc' file when starting dokku. This makes it easy
to define DOKKU_TRACE over ssh.
2013-11-18 20:59:48 +00:00
rhy-jot
805c5a27c6 Don't overwrite $DOKKU_ROOT/{HOSTNAME,VHOST} 2013-11-18 11:50:28 -08:00
Paul Lietar
a06d27ab45 Use the FQDN to setup the HOSTNAME and VHOST files.
The HOSTNAME environment var only contains the first part of the domain
name. Use the fqdn to have it entirely.
2013-11-15 03:07:51 +00:00
Alexander
8981b9e613 Introduce backup plugin to export/import settings 2013-11-14 21:52:49 +01:00
rhy-jot
3c1666076e Silence nginx reloading 2013-10-30 17:17:53 -07:00
Jeff Lindsay
df7507d1be normalizing shebang and bash options. also added long-term fix for bootstrap instructions 2013-10-29 17:13:02 -05:00
Paul Lietar
b5c8dd7436 Use DOKKU_ROOT instead of HOME.
HOME is not consistent if dokku is ran e.g. as root (for setup).
The DOKKU_ROOT variable will also make it possible to have the repositories stored in an arbitrary location (works-ish right now)
2013-10-28 21:15:17 +00:00
Paul Lietar
27d4bc8c3c Replace gitreceive by a git plugin.
This removes the need for two distinct users.
Git pushes and dokku commands are sent using the same user.
2013-10-28 21:15:17 +00:00
Jose Diaz-Gonzalez
01d57ef0dc New command: dokku delete <app>
Two new hooks are implemented:

- pre-delete $APP
- post-delete $APP

The following are implemented in the `post-delete` hook:

- `$APP` directory deletion (00_dokku-standard)
- nginx reload (nginx-vhosts)

The following command can be executed by either the `dokku` or `git` user as `sudo`:

    sudo /etc/init.d/nginx reload

Refs #124
Closes #186
2013-10-27 17:49:11 -04:00
Jose Diaz-Gonzalez
bcfaefa896 Enable 'nginx reload' support for git and dokku user. Refs #124. Refs #186 2013-10-25 02:42:49 -04:00
Alexander
85f14baad5 Introduce URL for app. Plugins can override this.
fixes #242
2013-10-24 13:44:05 +02:00
Jose Diaz-Gonzalez
a308ff6546 heroku-like configuration handling for dokku
refs #55
superscedes #188
2013-10-17 17:47:19 -04:00
Jason Staten
ba1f1bc30d Add X-Forwarded-Port and X-Request-Start
Adding additional proxy headers to match what Heroku provides. Also,
X-Request-Start is compatible with NewRelic's latest agent[1].

[1]: http://blog.newrelic.com/2013/02/21/using-new-relic-on-heroku-read-how-our-new-ruby-agent-measures-queue-time/
2013-09-09 15:46:19 -06:00
Jason Staten
7f4f46a1e2 Set X-Forwarded-Proto Header
Heroku passes the X-Forwarded-Proto header to indicate the protocol of
the incoming request[1]. Ruby's rack relies on this header to
determine if a request is HTTPS[2].

Also, the X-Scheme header was removed to eliminate redundant passing of
the scheme.

[1]: https://devcenter.heroku.com/articles/http-routing#heroku-headers
[2]: https://github.com/rack/rack/blob/master/lib/rack/request.rb#L77
2013-09-09 12:12:01 -06:00
Jeffery Utter
1a7d68a3fc Add nginx configure hook
This adds a pluginhook for nginx-configure to be called after the main nginx configuration is called and before nginx is reloaded. This will allow other plugins to modify the nginx configuration
2013-08-27 09:47:41 -05:00
Alexander
774b1f3c45 Merge pull request #180 from asm89/add-run-cmd
Add dokku run command to run commands in the app env
2013-08-21 14:47:51 -07:00
Alexander
3e9e6127a7 run-cli -> run, fix help formatting 2013-08-21 00:02:52 +02:00
Alexander
6ead1ab943 Fix that only the output the last plugin command is shown
Plugin "commands" should end with "cat" because the output of each
plugin's command is piped through the next one by pluginhook
2013-08-19 21:22:18 +02:00
Alexander
2563581f49 Update help command 2013-08-18 14:32:14 +02:00
Alexander
4b5b86173f Remove redundant command from dokku-standard plugin 2013-08-18 14:27:38 +02:00
rhy-jot
84cf39bf09 Merge pull request #145 from msumpter/patch-2
Added X-Forwarded-For to pass client IP to backend
2013-08-15 21:10:09 -07:00
alexanderbeletsky
5ef7b00243 review comment by @rhy-jot 2013-08-08 10:17:39 +03:00
alexanderbeletsky
9e9cc0c96e issue #138: added wildcard support 2013-08-05 18:17:53 +03:00
Mat Sumpter
2f92d500f8 Added X-Forwarded-For to pass client IP to backend 2013-08-05 09:37:40 -04:00
Jeff Lindsay
9b27a3faf6 Merge pull request #104 from alexanderbeletsky/ssl
issue #101: added ssl configuration
2013-08-02 19:47:34 -07:00
alexanderbeletsky
33a3b85674 ssl ciphers config from @rhy-jot 2013-07-31 07:00:46 +03:00
Jeff Lindsay
bb59f47cab Merge pull request #81 from eugeneware/remove_socket_file
Fix for nginx not reloading.
2013-07-24 16:02:29 -07:00
alexanderbeletsky
7f6e6ee8a4 review issues by @progrium 2013-07-24 12:13:50 +03:00
alexanderbeletsky
3bd0f6d3fb issue #101: added ssl configuration
- application folder /ssl is detected and ssl hginx config added
- readme corrections
2013-07-23 22:01:04 +03:00
Eugene Ware
f4cdc94209 don't use fully qualified name if a subdomain of $HOME/VHOST 2013-07-08 21:12:37 +10:00
Eugene Ware
3eadb0ae03 support for fully qualified domain names 2013-07-08 15:50:17 +10:00
Eugene Ware
6c6196fd5a check file exists before removing 2013-07-08 15:07:41 +10:00
Eugene Ware
1f4dab1fd8 make reloader service start on reload 2013-07-07 20:27:23 +10:00
Eugene Ware
ee40473a18 Remove socket file before listening for reload 2013-07-07 20:17:19 +10:00
Erik
a0eb48c32b ensure that the original http_host gets passed in the proxy to the app 2013-07-02 10:20:29 -04:00
Jeff Lindsay
6d8232dc20 Merge pull request #62 from asm89/patch-1
Run apt-get update after adding ppa
2013-07-01 14:15:46 -07:00