Compare commits

...

111 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
715e51b80c Release 0.4.6 2015-12-14 16:52:42 -05:00
Jose Diaz-Gonzalez
260b294ee9 Merge pull request #1775 from dokku/lg-fix-regex-in-named-containers
Match complete container name in named-containers plugin
2015-12-13 20:39:18 -05:00
Loïc Guitaut
16242e78ba Match complete container name in named-containers plugin
Fixes #1746
2015-12-13 23:28:00 +01:00
Jose Diaz-Gonzalez
74ebcb472f Merge pull request #1767 from jvanbaarsen/remove-shebang
Remove shebang from config/functions
2015-12-10 15:59:30 -05:00
Jeroen van Baarsen
2d147cfd12 Remove shebang from config/functions
In order to be one step closer to lintian compliance, lets remove the shebang
from this file so it doesn;t have to be executable

See #1641

Signed-off-by: Jeroen van Baarsen <jeroenvanbaarsen@gmail.com>
2015-12-10 21:55:43 +01:00
Jose Diaz-Gonzalez
7fa6b1901a Merge pull request #1761 from dokku/josegonzalez-patch-1
Fix link to docker-options documentation
2015-12-09 15:35:06 -05:00
Jose Diaz-Gonzalez
1c33159dcd Fix link to docker-options documentation
[ci skip]
2015-12-09 15:34:57 -05:00
Jose Diaz-Gonzalez
4e6f03a2c1 Merge pull request #1757 from dokku/josegonzalez-patch-1
Add DigitalOcean as a sponsor
2015-12-07 12:54:13 -05:00
Jose Diaz-Gonzalez
89a2dbfb3e Add DigitalOcean as a sponsor
They provide hosting for test infrastructure.

[ci skip]
2015-12-07 12:54:03 -05:00
Jose Diaz-Gonzalez
9001c1079b Merge pull request #1756 from dokku/josegonzalez-patch-1
Guard against invalid key file during installation
2015-12-07 11:52:20 -05:00
Jose Diaz-Gonzalez
ab2721bc37 Guard against invalid key file during installation
[ci skip]
2015-12-07 11:52:14 -05:00
Jose Diaz-Gonzalez
b4e56c43fc Merge pull request #1754 from dokku/josegonzalez-patch-1
Update all links to dokku repo
2015-12-06 04:56:27 -05:00
Jose Diaz-Gonzalez
80dc4cc3b6 Update all links to dokku repo
[ci skip]
2015-12-06 04:55:11 -05:00
Jose Diaz-Gonzalez
f66d764197 Merge pull request #1753 from hhff/patch-1
Add .ca-bundle information to SSL docs
2015-12-04 16:44:33 -05:00
Hugh Francis
37db940d1f Add .ca-bundle information to SSL docs 2015-12-04 16:40:36 -05:00
Jose Diaz-Gonzalez
fb5bc6c3e3 Merge pull request #1752 from byrnedo/master
Moved dokku-nats into official plugins section
2015-12-04 14:43:24 -05:00
Donal Byrne
244fd15d48 Moved dokku-nats into official plugins section 2015-12-04 20:40:45 +01:00
Jose Diaz-Gonzalez
6d58c8af40 Merge pull request #1748 from byrnedo/master
Added unofficial Nats plugin to plugins.md
2015-12-04 12:45:24 -05:00
Jose Diaz-Gonzalez
bed6254450 Merge pull request #1751 from progrium/josegonzalez-patch-1
Use flat-square style on image badges
2015-12-04 12:41:56 -05:00
Jose Diaz-Gonzalez
711a0c12d4 Use flat-square style on image badges
[ci skip]
2015-12-04 12:41:51 -05:00
Jose Diaz-Gonzalez
be1a9d3d9a Use master branch for badge
[ci skip]
2015-12-04 12:40:30 -05:00
Jose Diaz-Gonzalez
9ba2d15f86 Merge pull request #1750 from jlachowski/master
New graphite & statsd plugin with grafana frontend added
2015-12-04 12:39:24 -05:00
jlachowski
c1dfb46bf0 New graphite & statsd plugin with grafana frontend added 2015-12-04 14:23:28 +01:00
Donal Byrne
3fd4f519bf Added unofficial Nats plugin to plugins.md 2015-12-04 14:09:06 +01:00
Jose Diaz-Gonzalez
c2153aa840 Merge pull request #1747 from progrium/josegonzalez-patch-1
Add Lets Encrypt plugin
2015-12-03 15:23:32 -05:00
Jose Diaz-Gonzalez
f8f9aa7b1b Add Lets Encrypt plugin
[ci skip]
2015-12-03 15:23:26 -05:00
Jose Diaz-Gonzalez
012d8eabe7 Merge pull request #1745 from beverku/master
Change herokuish to recommended package
2015-12-03 14:29:24 -05:00
Jose Diaz-Gonzalez
9d3c856afd Merge pull request #1727 from louisbl/enable-redeploy-service
Enable dokku-redeploy systemd service.
2015-12-02 14:07:49 -05:00
Ryan Bever
65cda8b04e Change herokuish to recommended package
Changing the herokuish package to Recommends instead of Depends allows users to skip the installation of that package by specifying --no-install-recommends.  Herokuish will still be installed by default using apt-get
2015-12-02 11:47:33 -07:00
Michael Hobbs
da70a18601 Merge pull request #1739 from progrium/mh-clarify-nginx-template-location
clarify location of nginx.conf.template in app repo
2015-12-02 09:08:14 -08:00
Michael Hobbs
783cf417a0 [ci skip] clarify location of nginx.conf.template in app repo 2015-12-02 09:07:43 -08:00
Jose Diaz-Gonzalez
63867d4abe Merge pull request #1735 from progrium/mh-replace-restartall-with-restore
use ps:restore on instance boot
2015-12-01 15:36:21 -05:00
Michael Hobbs
606036a50f [ci skip] use ps:restore on instance boot 2015-12-01 11:54:36 -08:00
Michael Hobbs
0606d1a805 Merge pull request #1732 from progrium/1729_mh-fix-certs-gen
do not chown file that doesn't exist
2015-12-01 09:29:16 -08:00
Michael Hobbs
a86119ddb6 do not chown file that doesn't exist. closes #1729 2015-12-01 09:01:59 -08:00
louisbl
2f95fa0a95 Fix #1726. Enable dokku-redeploy systemd service. 2015-11-29 22:26:40 +01:00
Jose Diaz-Gonzalez
cfe7604696 Merge pull request #1718 from progrium/post-create-hook
Add post-create hook
2015-11-26 20:03:09 -05:00
Jose Diaz-Gonzalez
8e9d04ae36 Add post-create hook
Note that this is invoked *before* the application is deployed, so it's usage is quite different than a potential post-successful-create hook.
2015-11-26 15:47:59 -05:00
Jose Diaz-Gonzalez
e0143ed226 Merge pull request #1717 from progrium/josegonzalez-nginx
Avoid using the PPA for ubuntu versions 15.10 and higher
2015-11-26 15:35:24 -05:00
Jose Diaz-Gonzalez
4894a03bfe Merge pull request #1723 from progrium/josegonzalez-patch-1
Add herokuish version to desired debugging info
2015-11-26 15:15:40 -05:00
Jose Diaz-Gonzalez
21799dcf40 Add herokuish version to desired debugging info
[ci skip]
2015-11-26 15:15:31 -05:00
Jose Diaz-Gonzalez
d520be9e81 Merge pull request #1720 from progrium/josegonzalez-patch-1
Add memory usage output as desired data for reporting issues
2015-11-26 15:14:21 -05:00
Jose Diaz-Gonzalez
757e6b8f68 Add memory usage output as desired data for reporting issues 2015-11-26 01:04:26 -05:00
Jose Diaz-Gonzalez
f11459faad Avoid using the PPA for ubuntu versions 15.10 and higher
As of 15.10, we are graced with a relatively recent version of nginx, and thus no longer need access to the ppa. Assuming this is the only such issue, this should also allow us to support Ubuntu 16.04 without any future changes.
2015-11-25 18:59:59 -05:00
Jose Diaz-Gonzalez
9c73cfa452 Release 0.4.5 2015-11-25 17:47:21 -05:00
Michael Hobbs
6495537d44 Merge pull request #1712 from progrium/1609_filter-link-with-dockerfile
filter incompatible docker option when building dockerfile vs herokuish apps
2015-11-25 11:14:31 -08:00
Michael Hobbs
2c34a60a8d filter incompatible docker option when building dockerfile vs herokuish apps. closes #1609 2015-11-25 09:09:11 -08:00
Michael Hobbs
f188e6ff3d Merge pull request #1715 from progrium/mh-use-official-static-fork
use patched static buildpack in test
2015-11-25 09:08:39 -08:00
Michael Hobbs
aae62398b0 use patched static buildpack in test 2015-11-25 09:06:53 -08:00
Jose Diaz-Gonzalez
d540b6e3fe Merge pull request #1714 from mbriskar/patch-2
added link
2015-11-24 15:42:38 -05:00
Matej Briskar
f6f1d2adfc added link 2015-11-24 21:38:14 +01:00
Jose Diaz-Gonzalez
dc4f7f6f88 Merge pull request #1713 from mbriskar/patch-1
Wkhtmltopdf plugin
2015-11-24 15:33:48 -05:00
Matej Briskar
b1632958f5 New plugin created
I have created a plugin for installing a specific library that is not working properly when installed using dokku-apt.
It took me a lot of time to figure out how to properly install it and therefore I wanted to share it.
2015-11-24 21:32:41 +01:00
Jose Diaz-Gonzalez
0e205b8133 Merge pull request #1708 from progrium/1705_mh-secure-tls
ensure permissions are locked down on tls folder and contents
2015-11-19 14:12:41 -05:00
Michael Hobbs
6a51ec0f64 Merge pull request #1709 from progrium/1614_mh-wildcard-domains
fix Must specify DOMAIN error over ssh (supercedes #1691)
2015-11-19 14:10:20 -05:00
Michael Hobbs
aa1ffd1aab Merge pull request #1707 from Flink/fix-named-container-filter-match
Do a perfect match on the container name
2015-11-19 12:09:33 -05:00
Michael Hobbs
11d396e6ef Merge pull request #1706 from progrium/1704_mh-rm-container
app/global override for DOKKU_RM_CONTAINER
2015-11-19 12:09:20 -05:00
Michael Hobbs
a2ccbcbbfb Merge pull request #1701 from progrium/mh-dont-call-nginx-build-twice
don't call nginx_build_config twice
2015-11-19 12:09:02 -05:00
Michael Hobbs
4b2a777425 add test for wildcard domain. don't match domain substring. closes #1614 2015-11-19 12:03:31 -05:00
Michael Hobbs
091c1acf15 ensure permissions are locked down on tls folder and contents. fixes #1705 2015-11-19 11:03:21 -05:00
Michael Hobbs
2ed0424860 app/global override for DOKKU_RM_CONTAINER. closes #1704 2015-11-19 10:40:14 -05:00
Loïc Guitaut
ad4a945941 Do a perfect match on the container name
This way we avoid to match every container that begins with the same
name.
2015-11-19 16:40:00 +01:00
Michael Hobbs
498d52ecdf don't call nginx_build_config twice and make ip regex functions globally accessible 2015-11-19 09:10:04 -05:00
Michael Hobbs
da91841ac6 Merge pull request #1698 from pmvieira/pv/vagrant-with-curl
if the repo we are pushing has a CHECKS file...
2015-11-19 07:43:27 -05:00
pmvieira
1eb1e1cd94 Adding back curl 2015-11-19 08:51:31 +00:00
Jose Diaz-Gonzalez
8bca701bc8 Merge pull request #1703 from progrium/josegonzalez-patch-1
Fix casing on help output
2015-11-19 03:15:02 -05:00
Jose Diaz-Gonzalez
6cd1b768ff Fix casing on help output
[ci skip]
2015-11-19 03:14:48 -05:00
Jose Diaz-Gonzalez
e23328b16c Merge pull request #1702 from progrium/josegonzalez-patch-1
Remove extra whitespace in command output
2015-11-19 03:13:32 -05:00
Jose Diaz-Gonzalez
939feb62eb Remove extra whitespace in command output
[ci skip]
2015-11-19 03:13:25 -05:00
Michael Hobbs
3e466917fd Merge pull request #1700 from progrium/1697_mh-copy-nginx-ssl-template-from-container
copy nginx.ssl.template from app container
2015-11-18 19:26:49 -05:00
Jose Diaz-Gonzalez
650dcd2538 Merge pull request #1671 from progrium/user-auth
User Auth plugin trigger
2015-11-18 19:23:47 -05:00
Michael Hobbs
518d7f9e56 make custom template tests actually test 2015-11-18 18:04:50 -05:00
Michael Hobbs
d2f288d3a9 Merge pull request #1699 from progrium/1685_mh-print-dokku-scale-location
print where we find DOKKU_SCALE when we find it
2015-11-18 17:45:37 -05:00
Michael Hobbs
09aa97f9e5 copy nginx.ssl.template from app container. fixes #1697 2015-11-18 17:36:02 -05:00
Michael Hobbs
e57d9dac3b print where we find DOKKU_SCALE when we find it. closes #1685 2015-11-18 16:10:29 -05:00
Jose Diaz-Gonzalez
5f7543bf46 Merge pull request #1696 from progrium/1554_mh-chown-plugins
chown plugins paths to dokku:dokku
2015-11-16 14:24:54 -05:00
Michael Hobbs
6eee13b67f chown plugins paths to dokku:dokku. closes #1554 2015-11-16 13:32:34 -05:00
Jose Diaz-Gonzalez
aae2213168 Merge pull request #1694 from MarcDiethelm/docs-improve-docker-options
Improve docker-options doc
2015-11-16 03:40:42 -05:00
Marc Diethelm
daa3b88d91 Add backticks around build, deploy and run 2015-11-15 23:12:42 +01:00
Marc Diethelm
9cfa1b9065 Docs, wording: else --> otherwise 2015-11-15 22:52:34 +01:00
Marc Diethelm
200d1128a1 Update docker-options plugin help for consistency with help docs 2015-11-15 22:50:24 +01:00
Marc Diethelm
06b8d166ca Small improvements to doc 2015-11-15 12:22:40 +01:00
Marc Diethelm
76e9ea6cc3 Improve docker-options.md
- Add note to avoid problems with shared volumes permissions
- Restructure the doc to help comprehension
- Make command examples consistent
- Improve wording in some places
- Advanced usage: remove "avoid if possible". It made little sense.
- docker (project) --> Docker
- dokku (project) --> Dokku
- dokku (command) --> `dokku`
- add `shell` to code blocks
2015-11-15 12:18:35 +01:00
Jose Diaz-Gonzalez
6ff55ff16c Merge pull request #1690 from u2mejc/u2mejc-issue1571
Fix "App tls has not been deployed" error
2015-11-13 21:57:03 -05:00
Justin Clark
59912d43f1 fix Must specify DOMAIN error over ssh 2015-11-13 18:02:07 -08:00
Justin Clark
ef7d49bafc Fix App tls has not been deployed error 2015-11-13 16:40:22 -08:00
Jose Diaz-Gonzalez
6af8811912 Merge pull request #1684 from u2mejc/u2mejc-certsremove
Cause certs:remove to return non zero on error
2015-11-12 14:12:18 -05:00
Jose Diaz-Gonzalez
d694a73aed Merge pull request #1683 from u2mejc/u2mejc-certs.bat
Add bats test for certs plugin
2015-11-11 22:17:37 -05:00
Justin Clark
8a1f7fb900 Cause certs:remove to return non zero on error
This was caught when writing the certs.bats. This patch will return
non zero on error instead of zero which can casue false negatives
in testing.
2015-11-11 18:18:06 -08:00
Justin Clark
3c1b85f272 Add bats test for certs plugin 2015-11-11 17:23:05 -08:00
Michael Hobbs
cff8e27545 Merge pull request #1682 from progrium/1678_mh-nullglob-fix
set nullglob when looking for PORT files
2015-11-11 15:51:02 -08:00
Michael Hobbs
75b8953799 set nullglob when looking for PORT files. closes #1678 2015-11-11 12:01:56 -08:00
Jose Diaz-Gonzalez
9b283fd6ec Merge pull request #1681 from progrium/josegonzalez-patch-1
Fix email in code of conduct
2015-11-11 12:14:30 -05:00
Jose Diaz-Gonzalez
8f5eacf516 Fix email in code of conduct
Closes #1676

[ci skip]
2015-11-11 12:14:24 -05:00
Jose Diaz-Gonzalez
ffbb2f3c42 Merge pull request #1667 from u2mejc/u2mejc-certs
Fix dokku certs:add file input bug
2015-11-10 20:16:54 -05:00
Jose Diaz-Gonzalez
acbd1b8655 Merge pull request #1666 from progrium/1572_mh-nginx-logrotate
revert dokku group changes and add dokku user to adm group
2015-11-10 15:09:23 -05:00
Jose Diaz-Gonzalez
b6240fcb9a Merge pull request #1642 from cjblomqvist/patch-3
Add new plugin adding app name to env
2015-11-10 15:08:18 -05:00
Jose Diaz-Gonzalez
23f4bb7983 Merge pull request #1677 from ignlg/patch-1
Added dokku-builders-plugin to plugins page
2015-11-10 15:07:35 -05:00
Jose Diaz-Gonzalez
cd633d4427 Merge pull request #1665 from callahad/funroll-curls
Replace curl with wget; see #1567
2015-11-10 14:00:44 -05:00
Michael Hobbs
0853850f7a revert dokku group changes and add dokku user to adm group. closes #1572 2015-11-10 09:21:09 -08:00
Ignacio Lago
db02e2a11a Added dokku-builders-plugin to plugins page 2015-11-10 17:38:01 +01:00
Dan Callahan
a49adef9b0 Use wget instead of curl when bootstrapping 2015-11-09 22:52:58 -06:00
Jose Diaz-Gonzalez
bb9fd8b320 Merge pull request #1675 from progrium/josegonzalez-patch-1
Create CODE_OF_CONDUCT.md
2015-11-09 21:00:35 -05:00
Jose Diaz-Gonzalez
4ddbb84367 Create CODE_OF_CONDUCT.md
Closes #1669

[ci skip]
2015-11-09 21:00:27 -05:00
Jose Diaz-Gonzalez
f3f9a11813 Merge pull request #1674 from progrium/buildpack-docs
Expand buildpack deployment documentation
2015-11-09 14:59:35 -05:00
Jose Diaz-Gonzalez
2a7e2393ad Expand buildpack deployment documentation
This should consolidate a lot of knowledge around how dokku deals with buildpacks, as well as clears up a few misconceptions - mainly that dokku doesn't support multiple/custom buildpacks.

By bringing this information front-and-center, we can avoid a lot of questions by users trying to use dokku.

[ci skip]
2015-11-09 14:56:45 -05:00
Jose Diaz-Gonzalez
fc125d41e8 Add user-auth plugin trigger
This plugin trigger should allow users to pair down the available commands for a given user. While this does not affect help output - or any output at all - this is a good first step in allowing administrative access to certain commands while still allowing users to deploy/manage given applications.

Note that because of how dokku works, all parsing of commands must be done within the pluginhook, and we cannot give visibility into the actual command or application that will be affected by a given run.
2015-11-08 15:36:04 -05:00
Jose Diaz-Gonzalez
0eab678fcc add documentation to example ci skip
[ci skip]
2015-11-08 15:33:57 -05:00
Jose Diaz-Gonzalez
7307b385d8 Ensure we exit with the proper status code 2015-11-08 15:33:15 -05:00
Justin Clark
b7fbd9aea0 Fix dokku certs:add file input bug
- fixes issue #1658
- add better output for argument files missing
- don't delete (move) the certs passed in
2015-11-06 16:47:19 -08:00
cjblomqvist
85db7c7552 Add new plugin adding app name to env
Which is quite useful in some situations, for example when you want each app to point to a DB with the same name as the app (reducing the amount of app-specific config).

I've not yet tested with 0.4.x but asap we upgrade our environment I'll ensure it's compatible (should be super simple since it's a super simple plugin).
2015-11-02 15:07:15 +01:00
61 changed files with 719 additions and 273 deletions

50
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,50 @@
# Contributor Code of Conduct
As contributors and maintainers of this project, and in the interest of
fostering an open and welcoming community, we pledge to respect all people who
contribute through reporting issues, posting feature requests, updating
documentation, submitting pull requests or patches, and other activities.
We are committed to making participation in this project a harassment-free
experience for everyone, regardless of level of experience, gender, gender
identity and expression, sexual orientation, disability, personal appearance,
body size, race, ethnicity, age, religion, or nationality.
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information, such as physical or electronic
addresses, without explicit permission
* Other unethical or unprofessional conduct
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
By adopting this Code of Conduct, project maintainers commit themselves to
fairly and consistently applying these principles to every aspect of managing
this project. Project maintainers who do not follow or enforce the Code of
Conduct may be permanently removed from the project team.
This code of conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting a project maintainer at dokku@josediazgonzalez.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. Maintainers are
obligated to maintain confidentiality with regard to the reporter of an
incident.
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 1.3.0, available at
[http://contributor-covenant.org/version/1/3/0/][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/3/0/

View File

@@ -2,7 +2,7 @@
Dokku loves to welcome your contributions. There are several ways to help out:
* Create an [issue](https://github.com/progrium/dokku/issues) on GitHub, if you
* Create an [issue](https://github.com/dokku/dokku/issues) on GitHub, if you
have found a bug
* Write test cases for open bug issues
* Write patches for open bug/feature issues, preferably with test cases
@@ -46,7 +46,7 @@ and we encourage our users to create and contribute such packages. From time to
time, we will also pull plugins into the dokku core when the task they solve is
a common one for our users.
Check that [our issue database](https://github.com/progrium/dokku/issues)
Check that [our issue database](https://github.com/dokku/dokku/issues)
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.
@@ -55,8 +55,10 @@ When reporting issues, please include your host OS (Ubuntu 14.04, Fedora 19,
etc). Please include:
* The output of `uname -a`.
* The output of `free -m`
* The output of `docker version`.
* The output of `docker -D info`.
* The output of `docker run -ti gliderlabs/herokuish:latest herokuish version`
* The output of `dokku version`.
* The output of `dokku plugin`.
@@ -72,13 +74,15 @@ Description of problem:
Output of the following commands
- `uname -a`:
- `free -m`:
- `docker version`:
- `docker -D info`:
- `docker run -ti gliderlabs/herokuish:latest herokuish version`:
- `dokku version`:
- `dokku plugin`:
- `docker inspect CONTAINER_ID` (if applicable):
- `cat /home/dokku/<app>/nginx.conf` (if applicable):
- Output of failing dokku commands with `dokku trace on`
- Output of failing dokku commands with `dokku trace on`
(BEWARE: `trace on` will print environment variables for some commands, be sure you're not exposing any sensitive information when posting issues):
Environment details (AWS, VirtualBox, physical, etc.):
@@ -108,7 +112,7 @@ Before you contribute to the dokku project, there are a few things that you'll
need to do
* Make sure you have a [GitHub account](https://github.com/signup/free).
* Submit an [issue](https://github.com/progrium/dokku/issues), assuming one
* Submit an [issue](https://github.com/dokku/dokku/issues), assuming one
does not already exist.
* Clearly describe the issue including steps to reproduce when it is a bug.
* Make sure you fill in the earliest version that you know has the issue.
@@ -132,7 +136,7 @@ need to do
* Check for unnecessary whitespace with `git diff --check` before committing.
* Use descriptive commit messages and reference the #issue number.
* Core test cases should continue to pass. You can run tests locally or enable
[circle-ci](https://circleci.com/gh/progrium/dokku) for your fork, so all
[circle-ci](https://circleci.com/gh/dokku/dokku) for your fork, so all
tests and codesniffs will be executed.
* Your work should apply the [Dokku coding standards](https://github.com/progrium/bashstyle)
* Pull requests must be cleanly rebased on top of master without multiple branches
@@ -188,7 +192,7 @@ contains installation info for bats and shellcheck.
# Additional Resources
* [Dokku coding standards](https://github.com/progrium/bashstyle)
* [Existing issues](https://github.com/progrium/dokku/issues)
* [Existing issues](https://github.com/dokku/dokku/issues)
* [General GitHub documentation](https://help.github.com/)
* [GitHub pull request documentation](https://help.github.com/send-pull-requests/)
* [#dokku IRC channel on freenode.org](https://webchat.freenode.net/?channels=dokku)

View File

@@ -1,5 +1,90 @@
# History
## 0.4.6
This is mostly a documentation change. A few notable changes:
- Rebooting dokku servers should properly handle not starting stopped services.
- Better support for newer versions of Debian/Ubuntu.
- Moved the dokku project to the dokku github organization.
Thanks to all the contributors who helped with this release!
### Bug Fixes
- #1775: @Flink Match complete container name in named-containers plugin
- #1767: @jvanbaarsen Remove shebang from config/functions
- #1745: @beverku Change herokuish to recommended package
- #1727: @louisbl Enable dokku-redeploy systemd service.
- #1732: @michaelshobbs do not chown file that doesn't exist
- #1717: @josegonzalez Avoid using the PPA for ubuntu versions 15.10 and higher
### New Features
- #1735: @michaelshobbs use ps:restore on instance boot
- #1718: @josegonzalez Add post-create hook
### Documentation
- #1761: @josegonzalez Fix link to docker-options documentation
- #1757: @josegonzalez Add DigitalOcean as a sponsor
- #1754: @josegonzalez Update all links to dokku repo
- #1753: @hhff Add .ca-bundle information to SSL docs
- #1752: @byrnedo Moved dokku-nats into official plugins section
- #1748: @byrnedo Added unofficial Nats plugin to plugins.md
- #1751: @josegonzalez Use flat-square style on image badges
- #1750: @jlachowski New graphite & statsd plugin with grafana frontend added
- #1747: @josegonzalez Add Lets Encrypt plugin
- #1739: @michaelshobbs clarify location of nginx.conf.template in app repo
- #1723: @josegonzalez Add herokuish version to desired debugging info
- #1720: @josegonzalez Add memory usage output as desired data for reporting issues
## 0.4.5
This release is mostly a bugfix release. Two notable changes:
- It is now possible to build complex authentication layers around dokku using the new user auth plugin trigger introduced in #1671.
- We have a Code of Conduct in our repository. Please refer to this document if you have any questiosn regarding what is acceptable in the Dokku community.
Thanks to all the contributors who helped with this release!
### Bug Fixes
- #1666: @michaelshobbs Revert dokku group changes and add dokku user to adm group
- #1667: @u2mejc Fix dokku certs:add file input bug
- #1684: @u2mejc Cause certs:remove to return non zero on error
- #1690: @u2mejc Fix "App tls has not been deployed" error
- #1696: @michaelshobbs chown plugins paths to dokku:dokku
- #1698: @pmvieira Ensure curl is installed inside of source-based installations
- #1700: @michaelshobbs copy nginx.ssl.template from app container
- #1701: @michaelshobbs Don't call nginx_build_config twice
- #1702: @josegonzalez Remove extra whitespace in command output
- #1703: @josegonzalez Fix casing on help output
- #1706: @michaelshobbs Respect DOKKU_RM_CONTAINER in run phase
- #1707: @Flink Do a perfect match on the container name in named-containers plugin
- #1708: @michaelshobbs ensure permissions are locked down on tls folder and contents
- #1709: @michaelshobbs Fix Must specify DOMAIN error over ssh
- #1712: @michaelshobbs filter incompatible docker option when building dockerfile vs herokuish apps
- #1715: @michaelshobbs use patched static buildpack in test
- @1682: @michaelshobbs Aet nullglob when looking for PORT files
### New Features
- #1665: @callahad Replace curl with wget
- #1671: @josegonzalez User Auth plugin trigger
- #1683: @u2mejc Add bats test for certs plugin
- #1699: @michaelshobbs print where we find DOKKU_SCALE when we find it
### Documentation
- #1642: @cjblomqvist Add new plugin adding app name to env
- #1674: @josegonzalez Expand buildpack deployment documentation
- #1675: @josegonzalez Create CODE_OF_CONDUCT.md
- #1677: @ignlg Added dokku-builders-plugin to plugins page
- #1681: @josegonzalez Fix email in code of conduct
- #1694: @MarcDiethelm Improve docker-options doc
- #1713: @mbriskar Wkhtmltopdf plugin
## 0.4.4
This release adds a few interesting changes:

View File

@@ -1,7 +1,7 @@
DOKKU_VERSION = master
SSHCOMMAND_URL ?= https://raw.githubusercontent.com/progrium/sshcommand/master/sshcommand
PLUGN_URL ?= https://github.com/progrium/dokku/releases/download/v0.4.0/plugn_0.2.0_linux_x86_64.tgz
PLUGN_URL ?= https://github.com/dokku/dokku/releases/download/v0.4.0/plugn_0.2.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
@@ -103,7 +103,7 @@ docker: aufs
egrep -i "^docker" /etc/group || groupadd docker
usermod -aG docker dokku
ifndef CI
curl -sSL https://get.docker.com/ | sh
wget -nv -O - https://get.docker.com/ | sh
ifdef DOCKER_VERSION
apt-get install -qq -y docker-engine=${DOCKER_VERSION} || (apt-cache madison docker-engine ; exit 1)
endif
@@ -123,7 +123,7 @@ ifdef BUILD_STACK
else
ifeq ($(shell echo ${PREBUILT_STACK_URL} | egrep -q 'http.*://|file://' && echo $$?),0)
@echo "Start importing herokuish from ${PREBUILT_STACK_URL}"
docker images | grep gliderlabs/herokuish || curl --silent -L ${PREBUILT_STACK_URL} | gunzip -cd | docker import - gliderlabs/herokuish
docker images | grep gliderlabs/herokuish || wget -nv -O - ${PREBUILT_STACK_URL} | gunzip -cd | docker import - gliderlabs/herokuish
else
@echo "Start pulling herokuish from ${PREBUILT_STACK_URL}"
docker images | grep gliderlabs/herokuish || docker pull ${PREBUILT_STACK_URL}

View File

@@ -1,4 +1,4 @@
# Dokku [![Build Status](https://img.shields.io/circleci/project/progrium/dokku.svg "Build Status")](https://circleci.com/gh/progrium/dokku/tree/master) [![Ubuntu Package](https://img.shields.io/badge/package-ubuntu-brightgreen.svg?style=flat-square "Ubuntu Package")](https://packagecloud.io/dokku/dokku) [![IRC Network](https://img.shields.io/badge/irc-freenode-blue.svg "IRC Freenode")](https://webchat.freenode.net/?channels=dokku) [![Documentation](https://img.shields.io/badge/docs-viewdocs-blue.svg "Viewdocs")](http://progrium.viewdocs.io/dokku/) [![Gratipay](https://img.shields.io/gratipay/dokku.svg)](https://gratipay.com/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) [![IRC Network](https://img.shields.io/badge/irc-freenode-blue.svg?style=flat-square "IRC Freenode")](https://webchat.freenode.net/?channels=dokku) [![Documentation](https://img.shields.io/badge/docs-viewdocs-blue.svg?style=flat-square "Viewdocs")](http://dokku.viewdocs.io/dokku/) [![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. Sponsored by our friends at [Deis](http://deis.io/).
@@ -10,24 +10,24 @@ Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen. S
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/progrium/dokku/v0.4.4/bootstrap.sh
sudo DOKKU_TAG=v0.4.4 bash bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/v0.4.6/bootstrap.sh
sudo DOKKU_TAG=v0.4.6 bash bootstrap.sh
### Upgrading
[View the docs for upgrading](http://progrium.viewdocs.io/dokku/upgrading) from an older version of Dokku.
[View the docs for upgrading](http://dokku.viewdocs.io/dokku/upgrading) from an older version of Dokku.
## Documentation
Full documentation - including advanced installation docs - are available online at [docs](http://progrium.viewdocs.io/dokku/)
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/progrium/dokku/issues), check [Troubleshooting](http://progrium.viewdocs.io/dokku/troubleshooting) in the documentation, or join us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku)
You can use [Github Issues](https://github.com/dokku/dokku/issues), check [Troubleshooting](http://dokku.viewdocs.io/dokku/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/progrium/dokku/issues), the [Troubleshooting Guide](http://progrium.viewdocs.io/dokku/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.
After checking [Github Issues](https://github.com/dokku/dokku/issues), the [Troubleshooting Guide](http://dokku.viewdocs.io/dokku/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.
@@ -37,4 +37,4 @@ Dokku is currently sponsored by the enterprise grade, multi-host PaaS project [D
## License
[MIT License](https://github.com/progrium/dokku/blob/master/LICENSE) © Jeff Lindsay
[MIT License](https://github.com/dokku/dokku/blob/master/LICENSE) © Jeff Lindsay

View File

@@ -1 +1,2 @@
Deis http://deis.io
Deis http://deis.io
DigitalOcean https://www.digitalocean.com/

View File

@@ -7,7 +7,7 @@
# We wrap this whole script in a function, so that we won't execute
# until the entire script is downloaded.
# That's good because it prevents our output overlapping with curl's.
# That's good because it prevents our output overlapping with wget's.
# It also means that we can't run a partially downloaded script.
@@ -16,7 +16,7 @@ bootstrap () {
set -eo pipefail
export DEBIAN_FRONTEND=noninteractive
export DOKKU_REPO=${DOKKU_REPO:-"https://github.com/progrium/dokku.git"}
export DOKKU_REPO=${DOKKU_REPO:-"https://github.com/dokku/dokku.git"}
echo "Preparing to install $DOKKU_TAG from $DOKKU_REPO..."
if ! command -v apt-get &>/dev/null; then
@@ -30,7 +30,6 @@ hostname -f > /dev/null 2>&1 || {
}
apt-get update -qq > /dev/null
which curl > /dev/null || apt-get install -qq -y curl
[[ $(lsb_release -sr) == "12.04" ]] && apt-get install -qq -y python-software-properties
dokku_install_source() {
@@ -58,10 +57,10 @@ dokku_install_package() {
echo " Installation will continue in 10 seconds."
sleep 10
fi
curl -sSL https://get.docker.com/ | sh
wget -nv -O - https://get.docker.com/ | sh
echo "--> Installing dokku"
curl -sSL https://packagecloud.io/gpg.key | apt-key add -
wget -nv -O - https://packagecloud.io/gpg.key | apt-key add -
echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main" | tee /etc/apt/sources.list.d/dokku.list
apt-get update -qq > /dev/null

View File

@@ -32,10 +32,10 @@ if ARGV[0] == "onboot"
exit
end
version = "v0.4.4"
version = "v0.4.6"
dokku_root = ENV["DOKKU_ROOT"] || "/home/dokku"
admin_keys = `cat /root/.ssh/authorized_keys`.split("\n")
hostname = `bash -c '[[ $(dig +short $HOSTNAME) ]] && echo $HOSTNAME || curl icanhazip.com'`.strip
hostname = `bash -c '[[ $(dig +short $HOSTNAME) ]] && echo $HOSTNAME || wget -q -O - icanhazip.com'`.strip
template = DATA.read
set :port, 2000

10
deb.mk
View File

@@ -1,11 +1,11 @@
HEROKUISH_DESCRIPTION = 'Herokuish uses Docker and Buildpacks to build applications like Heroku'
HEROKUISH_REPO_NAME ?= gliderlabs/herokuish
HEROKUISH_VERSION ?= 0.3.4
HEROKUISH_VERSION ?= 0.3.5
HEROKUISH_ARCHITECTURE = amd64
HEROKUISH_PACKAGE_NAME = herokuish_$(HEROKUISH_VERSION)_$(HEROKUISH_ARCHITECTURE).deb
DOKKU_DESCRIPTION = 'Docker powered mini-Heroku in around 100 lines of Bash'
DOKKU_REPO_NAME ?= progrium/dokku
DOKKU_REPO_NAME ?= dokku/dokku
DOKKU_ARCHITECTURE = amd64
PLUGN_DESCRIPTION = 'Hook system that lets users extend your application with plugins'
@@ -31,13 +31,13 @@ GOPATH = /home/vagrant/gocode
install-from-deb:
echo "--> Initial apt-get update"
sudo apt-get update -qq > /dev/null
sudo apt-get install -qq -y apt-transport-https curl
sudo apt-get install -qq -y apt-transport-https
echo "--> Installing docker"
curl -sSL https://get.docker.com/ | sh
wget -nv -O - https://get.docker.com/ | sh
echo "--> Installing dokku"
curl -sSL https://packagecloud.io/gpg.key | apt-key add -
wget -nv -O - https://packagecloud.io/gpg.key | apt-key add -
echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main" | sudo tee /etc/apt/sources.list.d/dokku.list
sudo apt-get update -qq > /dev/null
sudo apt-get install dokku

5
debian/control vendored
View File

@@ -1,9 +1,10 @@
Package: dokku
Version: 0.4.4
Version: 0.4.6
Section: web
Priority: optional
Architecture: amd64
Depends: locales, git, make, curl, gcc, man-db, herokuish, sshcommand, docker-engine-cs | docker-engine | lxc-docker (>= 1.6.2) | docker.io (>= 1.6.2), software-properties-common, python-software-properties
Depends: locales, git, make, curl, gcc, man-db, sshcommand, docker-engine-cs | docker-engine | lxc-docker (>= 1.6.2) | docker.io (>= 1.6.2), software-properties-common, python-software-properties
Recommends: herokuish
Pre-Depends: nginx (>= 1.4.6), dnsutils, apparmor, cgroupfs-mount | cgroup-lite, plugn, sudo, ruby, ruby-dev, rubygem-rack , rubygem-rack-protection, rubygem-sinatra, rubygem-tilt
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
Description: Docker powered mini-Heroku in around 100 lines of Bash

5
debian/postinst vendored
View File

@@ -42,6 +42,7 @@ case "$1" in
PLUGIN_PATH=/var/lib/dokku/plugins plugn enable $plugin
fi
done
chown dokku:dokku -R /var/lib/dokku/plugins /var/lib/dokku/core-plugins
dokku plugin:install --core
@@ -70,7 +71,9 @@ case "$1" in
if [ -z "${DEBCONF_RECONFIGURE}" ]; then
db_get "dokku/key_file"
sshcommand acl-add dokku default < "$RET"
if [ -f "$RET" ]; then
sshcommand acl-add dokku default < "$RET"
fi
fi
;;

View File

@@ -3,7 +3,7 @@
You can always install dokku straight from the latest - potentially unstable - master release via the following bash command:
```shell
wget -qO- https://raw.githubusercontent.com/progrium/dokku/master/bootstrap.sh | sudo DOKKU_BRANCH=master bash
wget -qO- https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh | sudo DOKKU_BRANCH=master bash
```
## Development
@@ -27,7 +27,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/progrium/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
```
@@ -37,7 +37,7 @@ sudo DOKKU_REPO=https://github.com/yourusername/dokku.git DOKKU_BRANCH=master ./
Dokku ships with a pre-built version of version of the [herokuish](https://github.com/gliderlabs/herokuish) component by default. If you want to build your own version you can specify that with an env variable.
```shell
git clone https://github.com/progrium/dokku.git
git clone https://github.com/dokku/dokku.git
cd dokku
sudo BUILD_STACK=true STACK_URL=https://github.com/gliderlabs/herokuish.git make install
```

View File

@@ -128,20 +128,6 @@ ssh -T git@github.com
Note that if the buildpack or dockerfile build process require ssh key access for other reasons, the above may not always apply.
### Specifying a custom buildpack
In certain cases you may want to specify a custom buildpack. While dokku uses herokuish to support all the [official heroku buildpacks](https://github.com/gliderlabs/herokuish#buildpacks), it is possible that the buildpack detection does not work well for your application. As well, you may wish to use a custom buildpack to handle specific application logic.
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
```
Please check the documentation for your particular build pack as you may need to include configuration files (such as a Procfile) in your project root.
## Deploying to subdomains
The name of remote repository is used as the name of application to be deployed, as for example above:
@@ -176,7 +162,11 @@ This is in particular useful, then you want to deploy to root domain, as
## Dokku/Docker Container Management Compatibility
Dokku is, at its core, a docker container manager. Thus, it does not necessarily play well with other out-of-band processes interacting with the docker daemon. One thing to note as in [issue #1220](https://github.com/progrium/dokku/issues/1220), dokku executes a cleanup function prior to every deployment. This function removes all exited containers and all 'unattached' images.
Dokku is, at its core, a docker container manager. Thus, it does not necessarily play well with other out-of-band processes interacting with the docker daemon. One thing to note as in [issue #1220](https://github.com/dokku/dokku/issues/1220), dokku executes a cleanup function prior to every deployment. This function removes all exited containers and all 'unattached' images.
### Specifying a custom buildpack
See the [buildpack documentation](/dokku/deployment/buildpacks/).
## Default vhost

View File

@@ -2,10 +2,10 @@
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/mstile-310x150.png"/>
<square70x70logo src="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.rawgit.com/dokku/dokku/v0.4.6/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.4.4\/docs\/assets\/favicons\/android-chrome-36x36.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.6\/docs\/assets\/favicons\/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.4\/docs\/assets\/favicons\/android-chrome-48x48.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.6\/docs\/assets\/favicons\/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.4\/docs\/assets\/favicons\/android-chrome-72x72.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.6\/docs\/assets\/favicons\/android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.4\/docs\/assets\/favicons\/android-chrome-96x96.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.6\/docs\/assets\/favicons\/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.4\/docs\/assets\/favicons\/android-chrome-144x144.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.6\/docs\/assets\/favicons\/android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.4\/docs\/assets\/favicons\/android-chrome-192x192.png",
"src": "https:\/\/cdn.rawgit.com\/progrium\/dokku\/v0.4.6\/docs\/assets\/favicons\/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"

View File

@@ -25,7 +25,7 @@ h1 {
padding: 0 0 0 1em;
}
.header a {
background-image: url(https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/dokku.png);
background-image: url(https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/dokku.png);
color: #fff;
text-indent: 40px;
background-position: center left;
@@ -40,7 +40,7 @@ h1 {
.blurb {
color: #424242;
background-color: #ededed;
background-image: url(https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/gplaypattern.png);
background-image: url(https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/gplaypattern.png);
padding: 45px 0;
text-align: center;
}

View File

@@ -11,7 +11,7 @@ Of all methods, this is the *most* official method of interacting with your dokk
To install, simply clone the dokku repository down and add the `dokku` alias pointing at the script:
```shell
git clone git@github.com:progrium/dokku.git ~/.dokku
git clone git@github.com:dokku/dokku.git ~/.dokku
# add the following to either your
# .bashrc, .bash_profile, or .profile file

View File

@@ -0,0 +1,72 @@
# Buildpack Deployment
Dokku normally defaults to using [heroku buildpacks](https://devcenter.heroku.com/articles/buildpacks) for deployment, though this may be overridden by committing a valid `Dockerfile` to the root of your repository and pushing the repository to your Dokku installation. To avoid this automatic `Dockerfile` deployment detection, you may do one of the following:
- 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.
- Create a `.buildpacks` file in the root of your repository.
## Specifying a custom buildpack
In certain cases you may want to specify a custom buildpack. While dokku uses herokuish to support all the [official heroku buildpacks](https://github.com/gliderlabs/herokuish#buildpacks), it is possible that the buildpack detection does not work well for your application. As well, you may wish to use a custom buildpack to handle specific application logic.
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
```
Please check the documentation for your particular buildpack as you may need to include configuration files (such as a Procfile) in your project root.
## Using multiple buildpacks
You can only set a single buildpack using the `BUILDPACK_URL`, though there may be times when you wish to use multiple buildpacks. To do so, simply create a `.buildpacks` file in the base of your repository. This file should list all the buildpacks, one-per-line. For instance, if you wish to use both the `nodejs` and `ruby` buildpacks, your `.buildpacks` file should contain the following:
```shell
https://github.com/heroku/heroku-buildpack-nodejs.git
https://github.com/heroku/heroku-buildpack-ruby.git
```
You may also choose to set just a single buildpack in this file, though that is up to you.
Please check the documentation for your particular buildpack(s) as you may need to include configuration files (such as a Procfile) in your project root.
## Using a specific buildpack version
As Dokku pins all buildpacks via herokuish releases, there may be occasions where a local buildpack version is out of date. If you wish to use a more recent version of the buildpack, you may use any of the above methods to specify a buildpack **without** the git sha attached like so:
```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
```
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
```
## Clearing buildpack cache
Building containers with buildpacks currently results in a persistent `cache` directory between deploys. If you need to clear this cache directory for any reason, you may do so by running the following shell command:
```shell
# replace APP with the name of your application
sudo rm -rf /home/dokku/APP/cache/*
```
### Curl Build Timeouts
Certain buildpacks may time out in retrieving dependencies via curl. This can happen when your network connection is poor or if there is significant network congestion. You may see a message similar to `gzip: stdin: unexpected end of file` after a curl command.
If you see output similar this when deploying , you may need to override the curl timeouts to increase the length of time allotted to those tasks. You can do so via the `config` plugin:
```shell
dokku config:set --global CURL_TIMEOUT=600
dokku config:set --global CURL_CONNECT_TIMEOUT=30
```

View File

@@ -18,7 +18,7 @@ By default, Dokku will extract the first `EXPOSE` tcp port and use said port wit
dokku config:set APP DOKKU_DOCKERFILE_PORT=8000
```
Dokku will not expose other ports on your application without a [custom docker-option](/dokku/configuration/docker-options/).
Dokku will not expose other ports on your application without a [custom docker-option](/dokku/docker-options/).
If you do not have a port explicitly exposed, Dokku will automatically expose port `5000` for your application.

View File

@@ -29,6 +29,12 @@ tar cvf cert-key.tar server.crt server.key
dokku certs:add < 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`.
```shell
cat yourdomain_com.crt yourdomain_com.ca-bundle > server.crt
```
### Certificate generation
> Note: Using this method will create a self-signed certificate, which is only recommended for development or staging use, not production environments.

View File

@@ -380,6 +380,27 @@ docker commit $id $IMAGE > /dev/null
dokku_log_info1 "Building UI Complete"
```
### `post-create`
- Description: Can be used to run commands after an application is created.
- Invoked by: `dokku apps:create`
- Arguments: `$APP`
- Example:
```shell
#!/usr/bin/env bash
# Runs a command to ensure that an app
# has a postgres database when it is starting
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
APP="$1";
POSTGRES="$1"
dokku postgres:create $POSTGRES
dokku postgres:link $POSTGRES $APP
```
### `post-deploy`
- Description: Allows running of commands after a deploy has completed. Dokku core currently uses this to switch traffic on nginx.
@@ -459,7 +480,7 @@ dokku config:set --no-restart $APP MANUALLY_STOPPED=1
- Description:
- Invoked by: `dokku build`
- Arguments: `$APP`
- Arguments: `$APP $IMAGE_SOURCE_TYPE`
- Example:
```shell
@@ -712,9 +733,51 @@ some code to remove a docker hub tag because it's not implemented in the CLI....
```shell
#!/usr/bin/env bash
# Send an email when a container failed to retire
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
APP="$1"; HOSTNAME=$(hostname -s)
mail -s "$APP containers on $HOSTNAME failed to retire" ops@co.com
mail -s "$APP containers on $HOSTNAME failed to retire" ops@example.com
```
### `user-auth`
This is a special plugin trigger that is executed on *every* command run. As dokku sometimes internally invokes the `dokku` command, special care should be taken to properly handle internal command redirects.
Note that the trigger should exit as follows:
- `0` to continue running as normal
- `1` to halt execution of the command
The `SSH_USER` is the original ssh user. If you are running remote commands, this user will typically be `dokku`, and as such should not be trusted when checking permissions. If you are connected via ssh as a different user who then invokes `dokku`, the value of this variable will be that user's name (`root`, `myuser`, etc.).
The `SSH_NAME` is the `NAME` variable set via the `sshcommand acl-add` command. If you have set a user via the `dokku-installer`, this value will be set to `admin`. For installs via debian package, this value *may* be `default`. For reference, the following command can be run as the root user to specify a specific `NAME` for a given ssh key:
```shell
sshcommand acl-add dokku NAME < $PATH_TO_SSH_KEY
```
Note that the `NAME` value is set at the first ssh key match. If an ssh key is set in the `/home/dokku/.ssh/authorized_keys` multiple times, the first match will decide the value.
- Description: Allows you to deny access to a dokku command by either ssh user or associated ssh-command NAME user.
- Invoked by `dokku`
- Arguments: `$SSH_USER $SSH_NAME $DOKKU_COMMAND`
- Example:
```shell
#!/usr/bin/env bash
# Allow root/admin users to do everything
# Deny plugin access to default users
# Allow access to all other commands
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
SSH_USER=$1
SSH_NAME=$2
shift 2
[[ "$SSH_USER" == "root" ]] && exit 0
[[ "$SSH_NAME" == "admin" ]] && exit 0
[[ "$SSH_NAME" == "default" && $1 == plugin:* ]] && exit 1
exit 0
```

View File

@@ -14,12 +14,12 @@ Because there are so many different DNS server packages out there as well as a t
* We assume you have a passing familiarity with DNS. If not, you can read an [in-depth article](http://www.diaryofaninja.com/blog/2012/03/03/devops-dns-for-developers-ndash-now-therersquos-no-excuse-not-to-know) on DNS. But basically you need to know that DNS changes names (like example.tld) into addresses (like 127.0.0.1)
* We assume you already have a domain name registered and pointed to your favorite Managed DNS Provider or have your own BIND DNS server running.
* You have a server on the internet and are about to follow the instructions in the [README](https://github.com/progrium/dokku/blob/master/README.md) to get dokku installed. Don't do the install just yet though.
* You have a server on the internet and are about to follow the instructions in the [README](https://github.com/dokku/dokku/blob/master/README.md) to get dokku installed. Don't do the install just yet though.
### HELP!
Don't be afraid to ask if you need help. Create a [new issue](https://github.com/progrium/dokku/issues) and someone will be glad to assist you.
Don't be afraid to ask if you need help. Create a [new issue](https://github.com/dokku/dokku/issues) and someone will be glad to assist you.
# Getting started
@@ -73,7 +73,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 [README](https://github.com/progrium/dokku/blob/master/README.md)
Proceed with the setup instructions in the [README](https://github.com/dokku/dokku/blob/master/README.md)
### Using the root of your domain (myapp.example.tld)

View File

@@ -2,49 +2,58 @@
> New as of 0.3.17
```
docker-options <app> Display apps docker options for all phases
docker-options <app> <phase(s)> Display apps docker options for phase (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)
```
Add some options (first, for the deployed/running app and second when executing `dokku run`):
Pass [options](http://docs.docker.io/en/latest/reference/run/) to Docker during Dokku's `build`, `deploy` and `run` phases
```
dokku docker-options:add myapp deploy "-v /host/path:/container/path"
dokku docker-options:add myapp run "-v /another/container/path"
docker-options <app> Display app's Docker options for all phases
docker-options <app> <phase(s)> Display app's Docker options for phase (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)
```
Check what we added
## About Dokku phases
```shell
dokku docker-options myapp
# Deploy options:
# -v /host/path:/container/path
# Run options:
# -v /another/container/path
```
Remove an option
```shell
dokku docker-options:remove myapp run "--link container_name:alias"
```
### Note about `dokku` phases and `docker-options`
`dokku` deploys your application in multiple "phases" and the `docker-options` plugin allows you to pass arguments to the underlying docker container in the following 3 phases/containers:
Dokku deploys your application in multiple "phases" and the `docker-options` plugin allows you to pass arguments to their underlying docker container:
- `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`
## Advanced Usage (avoid if possible)
## Examples
In your applications folder (`/home/dokku/app_name`) create a file called `DOCKER_OPTIONS_RUN` (or `DOCKER_OPTIONS_BUILD` or `DOCKER_OPTIONS_DEPLOY`).
### Add Docker options
Inside this file list one docker option per line. For example:
Add some options for the deployed/running app and when executing [`dokku run`](deployment/one-off-processes/):
```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"
```
> 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"
```
## 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`).
Inside this file list one Docker option per line. For example:
```shell
--link container_name:alias
@@ -52,7 +61,7 @@ Inside this file list one docker option per line. For example:
-v /another/container/path
```
The above example will result in the following options being passed to docker during `dokku run`:
The above example will result in the following options being passed to Docker during `dokku run`:
```shell
--link container_name:alias -v /host/path:/container/path -v /another/container/path
@@ -60,4 +69,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/ .
Move information on Docker options can be found here: http://docs.docker.io/en/latest/reference/run/ .

View File

@@ -5,13 +5,13 @@ As of 0.3.18, dokku defaults to being installed via debian package. While certai
```shell
# install prerequisites
sudo apt-get update -qq > /dev/null
sudo apt-get install -qq -y apt-transport-https curl
sudo apt-get install -qq -y apt-transport-https
# install docker
curl -sSL https://get.docker.com/ | sh
wget -nv -O - https://get.docker.com/ | sh
# install dokku
curl -sSL https://packagecloud.io/gpg.key | apt-key add -
wget -nv -O - https://packagecloud.io/gpg.key | apt-key add -
echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main" | sudo tee /etc/apt/sources.list.d/dokku.list
sudo apt-get update -qq > /dev/null
sudo apt-get install dokku

View File

@@ -5,7 +5,7 @@
- Clone Dokku
```
git clone https://github.com/progrium/dokku.git
git clone https://github.com/dokku/dokku.git
```
- Setup SSH hosts in your `/etc/hosts`

View File

@@ -10,26 +10,26 @@
<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/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/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/progrium/dokku/v0.4.4/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
@@ -87,12 +87,12 @@
<p class="line">
<span class="path">~</span>
<span class="prompt">$</span>
<span class="command">wget https://raw.githubusercontent.com/progrium/dokku/v0.4.4/bootstrap.sh</span>
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.4.6/bootstrap.sh</span>
</p>
<p class="line">
<span class="path">~</span>
<span class="prompt">$</span>
<span class="command">sudo DOKKU_TAG=v0.4.4 bash bootstrap.sh</span>
<span class="command">sudo DOKKU_TAG=v0.4.6 bash bootstrap.sh</span>
</p>
<p class="line">
<span class="output"># =&gt; Go to your server's IP and follow the web installer</span>

View File

@@ -15,12 +15,12 @@
<p class="line">
<span class="path">~</span>
<span class="prompt">$</span>
<span class="command">wget https://raw.githubusercontent.com/progrium/dokku/v0.4.4/bootstrap.sh</span>
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.4.6/bootstrap.sh</span>
</p>
<p class="line">
<span class="path">~</span>
<span class="prompt">$</span>
<span class="command">sudo DOKKU_TAG=v0.4.4 bash bootstrap.sh</span>
<span class="command">sudo DOKKU_TAG=v0.4.6 bash bootstrap.sh</span>
</p>
<p class="line">
<span class="output"># =&gt; Go to your server's IP and follow the web installer</span>

View File

@@ -19,8 +19,8 @@ To install the latest stable version of dokku, you can run the following shell c
```shell
# installs dokku via apt-get
wget https://raw.githubusercontent.com/progrium/dokku/v0.4.4/bootstrap.sh
sudo DOKKU_TAG=v0.4.4 bash bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/v0.4.6/bootstrap.sh
sudo DOKKU_TAG=v0.4.6 bash bootstrap.sh
```
The installation process takes about 5-10 minutes, depending upon internet connection speed.

View File

@@ -16,8 +16,7 @@ nginx:error-logs <app> [-t] Show the nginx error logs for a
Dokku currently templates out an nginx configuration that is included in the `nginx-vhosts` plugin. If you'd like to provide a custom template for your application, there are a few options:
- Copy the existing template - ssl or non-ssl - into your application repository's root directory as the file `nginx.conf.template`.
- Create a template file in `/home/dokku/APP` named one of the following:
- Copy the existing pertinent (ssl or non-ssl) template found (by default) in `/var/lib/dokku/plugins/available/nginx-vhosts/templates`, place it either in `/home/dokku/APP` or check it into the root of your app repo, and name it one of the following:
- `nginx.conf.template` (since 0.3.10)
- `nginx.conf.ssl_terminated.template` (since 0.4.0)
- `nginx.ssl.conf.template` (since 0.4.2)

View File

@@ -40,6 +40,7 @@ The following plugins are available and provided by dokku maintainers. Where not
| [Memcached (beta)](https://github.com/dokku/dokku-memcached-plugin) | [dokku][] | 0.4.0+ |
| [Mongo (beta)](https://github.com/dokku/dokku-mongo-plugin) | [dokku][] | 0.4.0+ |
| [MySQL (beta)](https://github.com/dokku/dokku-mysql-plugin) | [dokku][] | 0.4.0+ |
| [Nats (beta)](https://github.com/dokku/dokku-nats) | [dokku][] | 0.4.0+ |
| [Postgres (beta)](https://github.com/dokku/dokku-postgres-plugin) | [dokku][] | 0.4.0+ |
| [RabbitMQ (beta)](https://github.com/dokku/dokku-rabbitmq-plugin) | [dokku][] | 0.4.0+ |
| [Redis (beta)](https://github.com/dokku/dokku-redis-plugin) | [dokku][] | 0.4.0+ |
@@ -73,6 +74,7 @@ Note: The following plugins have been supplied by our community and may not have
[gdi2290]: https://github.com/gdi2290
[heichblatt]: https://github.com/heichblatt
[hughfletcher]: https://github.com/hughfletcher
[ignlg]: https://github.com/ignlg
[iskandar]: https://github.com/iskandar
[jeffutter]: https://github.com/jeffutter
[jlachowski]: https://github.com/jlachowski
@@ -81,6 +83,7 @@ Note: The following plugins have been supplied by our community and may not have
[luxifer]: https://github.com/luxifer
[mlebkowski]: https://github.com/mlebkowski
[matto1990]: https://github.com/matto1990
[mbriskar]: https://github.com/mbriskar
[michaelshobbs]: https://github.com/michaelshobbs
[mikecsh]: https://github.com/mikecsh
[mikexstudios]: https://github.com/mikexstudios
@@ -112,6 +115,7 @@ Note: The following plugins have been supplied by our community and may not have
[abossard]: https://github.com/dudagroup
[alexkruegger]: https://github.com/alexkruegger
[dokku]: https://github.com/dokku
[sgulseth]: https://github.com/sgulseth
### Datastores
@@ -138,8 +142,8 @@ Note: The following plugins have been supplied by our community and may not have
| Plugin | Author | Compatibility |
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
| [RabbitMQ](https://github.com/jlachowski/dokku-rabbitmq-plugin) | [jlachowski][] | 0.3.x |
| [RabbitMQ (single container)](https://github.com/jlachowski/dokku-rabbitmq-single-plugin) | [jlachowski][] | 0.3.x |
| [RabbitMQ](https://github.com/jlachowski/dokku-rabbitmq-plugin) | [jlachowski][] | 0.3.x |
| [RabbitMQ (single container)](https://github.com/jlachowski/dokku-rabbitmq-single-plugin) | [jlachowski][] | 0.3.x |
#### Other
@@ -161,13 +165,14 @@ Note: The following plugins have been supplied by our community and may not have
| [Shoreman ](https://github.com/statianzo/dokku-shoreman) | [statianzo][] | 0.3.x |
| [Supervisord](https://github.com/statianzo/dokku-supervisord) | [statianzo][] | 0.3.x |
[c77cbf1]: https://github.com/progrium/dokku/commit/c77cbf1d3ae07f0eafb85082ed7edcae9e836147
[28de3ec]: https://github.com/progrium/dokku/commit/28de3ecaa3231a223f83fd8d03f373308673bc40
[c77cbf1]: https://github.com/dokku/dokku/commit/c77cbf1d3ae07f0eafb85082ed7edcae9e836147
[28de3ec]: https://github.com/dokku/dokku/commit/28de3ecaa3231a223f83fd8d03f373308673bc40
### Dokku Features
| Plugin | Author | Compatibility |
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
| [App name as env](https://github.com/cjblomqvist/dokku-app-name-env) | [cjblomqvist][] | 0.3.x |
| [Docker Direct](https://github.com/heichblatt/dokku-docker-direct) | [heichblatt][] | |
| [Dokku Copy App Config Files](https://github.com/alexkruegger/dokku-app-configfiles) | [alexkruegger][] | Compatible with 0.3.17+ |
| [Dokku Copy App Config Files](https://github.com/heichblatt/dokku-supply-config) | [heichblatt][] | |
@@ -177,6 +182,7 @@ Note: The following plugins have been supplied by our community and may not have
| [Graduate (Environment Management)](https://github.com/glassechidna/dokku-graduate) | [Benjamin-Dobell][] | 0.3.14+ |
| [HTTP Auth Secure Apps](https://github.com/matto1990/dokku-secure-apps) | [matto1990][] | 0.4.0+ |
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
| [Lets Encrypt](https://github.com/sgulseth/dokku-letsencrypt) | [sgulseth][] | 0.4.0+ |
| [Multi-Buildpack](https://github.com/pauldub/dokku-multi-buildpack) | [pauldub][] | |
| [Nuke Containers](https://github.com/heichblatt/dokku-nuke) | [heichblatt][] | |
| [Open App Ports](https://github.com/heichblatt/dokku-ports) | [heichblatt][] | |
@@ -185,7 +191,7 @@ Note: The following plugins have been supplied by our community and may not have
| [SSH Hostkeys](https://github.com/cedricziel/dokku-hostkeys-plugin)<sup>3</sup> | [cedricziel][] | 0.3.x |
| [Volume (persistent storage)](https://github.com/ohardy/dokku-volume) | [ohardy][] | 0.3.x |
[217d00a]: https://github.com/progrium/dokku/commit/217d00a1bc47a7e24d8847617bb08a1633025fc7
[217d00a]: https://github.com/dokku/dokku/commit/217d00a1bc47a7e24d8847617bb08a1633025fc7
<sup>1</sup> On Heroku similar functionality is offered by the [heroku-labs pipeline feature](https://devcenter.heroku.com/articles/labs-pipelines), which allows you to promote builds across multiple environments (staging -> production)
@@ -204,16 +210,19 @@ Note: The following plugins have been supplied by our community and may not have
| [Bower/Grunt](https://github.com/thrashr888/dokku-bower-grunt-build-plugin) | [thrashr888][] | |
| [Bower/Gulp](https://github.com/gdi2290/dokku-bower-gulp-build-plugin) | [gdi2290][] | |
| [Bower/Gulp](https://github.com/jagandecapri/dokku-bower-gulp-build-plugin) | [jagandecapri][] | |
| [Docker auto persist volumes](https://github.com/Flink/dokku-docker-auto-volumes) | [Flink][] | 0.4.0+ |
| [Builders: bower, compass, gulp, grunt](https://github.com/ignlg/dokku-builders-plugin) | [ignlg][] | 0.4.0+ |
| [Docker auto persist volumes](https://github.com/Flink/dokku-docker-auto-volumes) | [Flink][] | 0.4.0+ |
| [HipChat Notifications](https://github.com/cef/dokku-hipchat) | [cef][] | |
| [Graphite/statsd](https://github.com/jlachowski/dokku-graphite-plugin) | [jlachowski][] | |
| [Logspout](https://github.com/michaelshobbs/dokku-logspout) | [michaelshobbs][] | 0.3.26+ |
| [Graphite/statsd](https://github.com/jlachowski/dokku-graphite-plugin) | [jlachowski] | <0.4.0 |
| [Graphite/statsd](https://github.com/jlachowski/dokku-graphite-grafana) | [jlachowski] | 0.4.0+, graphite & statsd plugin with grafana dashboard frontend |
| [Logspout](https://github.com/michaelshobbs/dokku-logspout) | [michaelshobbs][] | 0.3.26+ |
| [Node](https://github.com/pnegahdar/dokku-node) | [pnegahdar][] | |
| [Node](https://github.com/ademuk/dokku-nodejs) | [ademuk][] | |
| [Reset mtime](https://github.com/mixxorz/dokku-docker-reset-mtime) | [mixxorz][] | 0.3.15+, Dockerfile support |
| [Slack Notifications](https://github.com/ribot/dokku-slack) | [ribot][] | 0.4.0+ |
| [User ACL](https://github.com/mlebkowski/dokku-acl) | [Maciej Łebkowski][] | 0.4.0+ |
| [Webhooks](https://github.com/nickstenning/dokku-webhooks) | [nickstenning][] | |
| [Wkhtmltopdf](https://github.com/mbriskar/dokku-wkhtmltopdf) | [mbriskar][] | |
| [Wordpress](https://github.com/dudagroup/dokku-wordpress-template) | [abossard][] | Dokku dev, mariadb, volume, domains |
<sup>1</sup> Forked from [jezdez/dokku-elasticsearch-plugin](https://github.com/jezdez/dokku-elasticsearch-plugin): uses Elasticsearch 1.2 (instead of 0.90), doesn't depend on dokku-link, runs as elasticsearch user instead of root, and turns off multicast autodiscovery for use in a VPS environment.

View File

@@ -10,30 +10,30 @@
<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/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/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/progrium/dokku/v0.4.4/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/dokku/dokku/v0.4.6/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/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/progrium/dokku/v0.4.4/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/dokku/dokku/v0.4.6/docs/assets/style.css" rel="stylesheet">
<style>
</style>
</head>
@@ -66,6 +66,7 @@
<a href="#" class="list-group-item disabled">Deployment</a>
<a href="/dokku/application-deployment/" class="list-group-item">Deploying an Application</a>
<a href="/dokku/deployment/buildpacks/" class="list-group-item">Buildpack Deployment</a>
<a href="/dokku/deployment/dockerfiles/" class="list-group-item">Dockerfile Deployment</a>
<a href="/dokku/deployment/images/" class="list-group-item">Image Tagging</a>
<a href="/dokku/remote-commands/" class="list-group-item">Remote Commands</a>

View File

@@ -87,7 +87,7 @@ __Solution (Less solution, more helpful troubleshooting steps):__
root@dokku:~# resolvconf -u
```
Please see https://github.com/progrium/dokku/issues/841 and https://github.com/progrium/dokku/issues/649
Please see https://github.com/dokku/dokku/issues/841 and https://github.com/dokku/dokku/issues/649
***
@@ -105,7 +105,7 @@ You have to point ssh to the correct secret key for your domain name. Add the fo
Host DOKKU_HOSTNAME
IdentityFile "~/.ssh/KEYNAME"
Also see [issue #116](https://github.com/progrium/dokku/issues/116)
Also see [issue #116](https://github.com/dokku/dokku/issues/116)
***
@@ -119,7 +119,7 @@ When specifying your port you may want to use something similar to:
var port = process.env.PORT || 3000
Please see https://github.com/progrium/dokku/issues/282
Please see https://github.com/dokku/dokku/issues/282
***
@@ -138,14 +138,13 @@ If you see output similar this when deploying:
! tar: Error is not recoverable: exiting now
```
it might that the curl command that is supposed to fetch the buildpack (anything in the low megabyte file size range) takes too long to finish, due to slowish connection. To overwrite the default values (connection timeout: 3 seconds, total maximum time for operation: 30 seconds), edit `/home/dokku/ENV` like the following:
it might that the curl command that is supposed to fetch the buildpack (anything in the low megabyte file size range) takes too long to finish, due to slowish connection. To overwrite the default values (connection timeout: 3 seconds, total maximum time for operation: 30 seconds), set the following environment variables:
```
#/home/dokku/ENV
export CURL_TIMEOUT=600
export CURL_CONNECT_TIMEOUT=30
```shell
dokku config:set --global CURL_TIMEOUT=600
dokku config:set --global CURL_CONNECT_TIMEOUT=30
```
References
* https://github.com/progrium/dokku/issues/509
* https://github.com/dokku/dokku/issues/509
* https://github.com/dokku-alt/dokku-alt/issues/169

10
dokku
View File

@@ -50,8 +50,9 @@ fi
! has_tty && DOKKU_QUIET_OUTPUT=1
if [[ $(id -un) != "dokku" && $1 != plugin:*install* && $1 != "plugin:update" ]]; then
export SSH_USER=$(id -un)
sudo -u dokku -E -H $0 "$@"
exit
exit $?
fi
if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; then
@@ -60,11 +61,18 @@ if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; then
xargs $0 <<<$SSH_ORIGINAL_COMMAND
exit $?
else
set -f
$0 $SSH_ORIGINAL_COMMAND
set +f
exit $?
fi
fi
if ! dokku_auth "$@" ; then
dokku_log_fail "Access denied"
exit 1
fi
case "$1" in
receive)
APP="$2"; IMAGE=$(get_app_image_name $APP); IMAGE_SOURCE_TYPE="$3"; TMP_WORK_DIR="$4"

View File

@@ -23,7 +23,7 @@ case "$1" in
[[ -d $CACHE_DIR ]] || mkdir $CACHE_DIR
plugn trigger pre-build-buildpack "$APP"
DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP)
DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP $IMAGE_SOURCE_TYPE)
[[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" -e TRACE=true "
id=$(docker run -d -v $CACHE_DIR:/cache -e CACHE_PATH=/cache $DOCKER_ARGS $IMAGE /build)
docker attach $id
@@ -40,7 +40,7 @@ case "$1" in
plugn trigger pre-build-dockerfile "$APP"
[[ "$DOKKU_DOCKERFILE_CACHE_BUILD" == "false" ]] && DOKKU_DOCKER_BUILD_OPTS="$DOKKU_DOCKER_BUILD_OPTS --no-cache"
DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP)
DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP $IMAGE_SOURCE_TYPE)
docker build $DOCKER_ARGS $DOKKU_DOCKER_BUILD_OPTS -t "$IMAGE" .
plugn trigger post-build-dockerfile "$APP"
@@ -106,11 +106,11 @@ case "$1" in
;;
ls)
dokku_apps=$(ls -d $DOKKU_ROOT/*/ 2>/dev/null) || (dokku_log_fail "You haven't deployed any applications yet")
installed_apps=$(dokku_apps)
dokku_col_log_info1_quiet "App Name" "Container Type" "Container Id" "Status"
for dokku_app in $dokku_apps; do
for dokku_app in $installed_apps; do
APP=$(basename $dokku_app)
DOKKU_APP_CIDS=$(get_app_container_ids $APP)
DOCKER_RUNNING_CONTAINERS=$(docker ps -q --no-trunc)
@@ -134,9 +134,13 @@ case "$1" in
shift 2
DOKKU_APP_RM_CONTAINER=$(dokku config:get $APP DOKKU_RM_CONTAINER || true)
DOKKU_GLOBAL_RM_CONTAINER=$(dokku config:get --global DOKKU_RM_CONTAINER || true)
DOKKU_RM_CONTAINER=${DOKKU_APP_RM_CONTAINER:="$DOKKU_GLOBAL_RM_CONTAINER"}
DOCKER_ARGS=$(: | plugn trigger docker-args-run $APP $IMAGE_TAG)
[[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" -e TRACE=true "
[[ $DOKKU_RM_CONTAINER ]] && DOKKU_RUN_OPTS="--rm"
[[ "$DOKKU_RM_CONTAINER" ]] && DOKKU_RUN_OPTS="--rm"
has_tty && DOKKU_RUN_OPTS+=" -i -t"
is_image_herokuish_based "$IMAGE" && EXEC_CMD="/exec"
@@ -167,9 +171,11 @@ case "$1" in
fi
if [[ "$(is_app_vhost_enabled $APP)" == "false" ]]; then
shopt -s nullglob
for PORT_FILE in $DOKKU_ROOT/$APP/PORT.*; do
echo "http://$(< "$DOKKU_ROOT/HOSTNAME"):$(< "$PORT_FILE") (container)"
done
shopt -u nullglob
DOKKU_NGINX_PORT=$(config_get $APP DOKKU_NGINX_PORT || true)
DOKKU_NGINX_SSL_PORT=$(config_get $APP DOKKU_NGINX_SSL_PORT || true)

View File

@@ -9,7 +9,7 @@ if [[ ! -f "$DOKKU_ROOT/VHOST" ]]; then
[[ $(dig +short "$(< "$DOKKU_ROOT/HOSTNAME")") ]] && cp "$DOKKU_ROOT/HOSTNAME" "$DOKKU_ROOT/VHOST"
fi
# temporary hack for https://github.com/progrium/dokku/issues/82
# temporary hack for https://github.com/dokku/dokku/issues/82
# redeploys all apps after a reboot
case "$DOKKU_DISTRO" in
ubuntu)
@@ -20,7 +20,7 @@ start on filesystem and started docker
script
sleep 2 # give docker some time
sudo -i -u dokku /usr/local/bin/dokku ps:restartall
sudo -i -u dokku /usr/local/bin/dokku ps:restore
end script
EOF
;;
@@ -34,11 +34,12 @@ After=docker.target
[Service]
Type=simple
User=dokku
ExecStart=/usr/local/bin/dokku ps:restartall
ExecStart=/usr/local/bin/dokku ps:restore
[Install]
WantedBy=multi-user.target
EOF
systemctl enable dokku-redeploy
;;
esac

View File

@@ -2,6 +2,7 @@
[[ " apps apps:create apps:destroy help apps:help " == *" $1 "* ]] || exit $DOKKU_NOT_IMPLEMENTED_EXIT
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/apps/functions"
case "$1" in
apps)
@@ -10,12 +11,7 @@ case "$1" in
;;
apps:create)
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
[[ -d "$DOKKU_ROOT/$2" ]] && dokku_log_fail "Name is already taken"
APP="$2"
mkdir -p "$DOKKU_ROOT/$APP"
echo "Creating $APP... done"
apps_create $2
;;
apps:destroy)

13
plugins/apps/functions Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
apps_create() {
[[ -z $1 ]] && dokku_log_fail "Please specify an app to run the command on"
[[ -d "$DOKKU_ROOT/$1" ]] && dokku_log_fail "Name is already taken"
local APP="$1"
mkdir -p "$DOKKU_ROOT/$APP"
echo "Creating $APP... done"
plugn trigger post-create $APP
}

View File

@@ -11,11 +11,17 @@ is_tar_import() {
}
is_file_import() {
local CRT_FILE="$3"
local KEY_FILE="$4"
local CRT_FILE="$1"
local KEY_FILE="$2"
if [[ -f $CRT_FILE ]] && [[ -f $KEY_FILE ]]; then
return 0
if [[ $CRT_FILE ]] && [[ $KEY_FILE ]]; then
if [[ ! -f $CRT_FILE ]]; then
dokku_log_fail "CRT file specified not found, please check file paths"
elif [[ ! -f $KEY_FILE ]]; then
dokku_log_fail "KEY file specified not found, please check file paths"
else
return 0
fi
fi
return 1
@@ -24,7 +30,7 @@ is_file_import() {
certs_set() {
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
verify_app_name "$2"
APP="$2"; CRT_FILE="$3"; KEY_FILE="$4"
local APP="$2"; local CRT_FILE="$3"; local KEY_FILE="$4"; local APP_SSL_PATH="$DOKKU_ROOT/$APP/tls"
is_file_import $CRT_FILE $KEY_FILE || is_tar_import || dokku_log_fail "Tar archive containing server.crt and server.key expected on stdin"
@@ -54,9 +60,11 @@ certs_set() {
fi
fi
mkdir -p "$DOKKU_ROOT/$APP/tls"
mv "$CRT_FILE" "$DOKKU_ROOT/$APP/tls/server.crt"
mv "$KEY_FILE" "$DOKKU_ROOT/$APP/tls/server.key"
mkdir -p "$APP_SSL_PATH"
cp "$CRT_FILE" "$APP_SSL_PATH/server.crt"
cp "$KEY_FILE" "$APP_SSL_PATH/server.key"
chmod 750 $APP_SSL_PATH
chmod 640 $APP_SSL_PATH/server.crt $APP_SSL_PATH/server.key
cd $DOKKU_ROOT
rm -rf $TEMP_DIR
nginx_build_config $APP
@@ -70,9 +78,9 @@ case "$1" in
certs:generate)
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
verify_app_name "$2"
APP="$2"; DOMAIN="$3"; SSL_PATH="$DOKKU_ROOT/$APP/tls"
APP="$2"; DOMAIN="$3"; APP_SSL_PATH="$DOKKU_ROOT/$APP/tls"
if [[ ! -f "$SSL_PATH/server.key" ]] && [[ ! -f "$SSL_PATH/server.crt" ]]; then
if [[ ! -f "$APP_SSL_PATH/server.key" ]] && [[ ! -f "$APP_SSL_PATH/server.crt" ]]; then
TMP_WORK_DIR=$(mktemp -d -t "dokku_certs.XXXXXXXXX")
trap 'rm -rf "$TMP_WORK_DIR" > /dev/null' INT TERM EXIT
@@ -83,9 +91,11 @@ case "$1" in
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
mkdir -p "$DOKKU_ROOT/$APP/tls"
mkdir -p "$APP_SSL_PATH"
dokku_log_info1 "Installing certificate and key..."
mv -f $TMP_WORK_DIR/server.key $TMP_WORK_DIR/server.crt $SSL_PATH
mv -f $TMP_WORK_DIR/server.key $TMP_WORK_DIR/server.crt $APP_SSL_PATH
chmod 750 $APP_SSL_PATH
chmod 640 $APP_SSL_PATH/server.key $APP_SSL_PATH/server.crt
[[ -n "$DOMAIN" ]] && (dokku domains:add $APP $DOMAIN || nginx_build_config $APP)
dokku_log_info1 "The following is a certificate signing request that can be used"
dokku_log_info1 "to generate an 'officially' signed SSL certificate for $APP at $DOMAIN"
@@ -148,7 +158,7 @@ case "$1" in
rm -rf $APP_SSL_PATH
plugn trigger post-domains-update $APP
else
dokku_log_info1 "An app-specific SSL endpoint is not defined"
dokku_log_fail "An app-specific SSL endpoint is not defined"
fi
;;

View File

@@ -9,6 +9,11 @@ has_tty() {
fi
}
dokku_apps() {
local INSTALLED_APPS=$(find $DOKKU_ROOT -maxdepth 1 -mindepth 1 -type d ! -name 'tls' ! -name '.*' -printf "%f\n") || (dokku_log_fail "You haven't deployed any applications yet")
[[ $INSTALLED_APPS ]] && echo $INSTALLED_APPS
}
dokku_log_info1() {
echo "-----> $*"
}
@@ -346,3 +351,47 @@ get_available_port() {
fi
done
}
dokku_auth() {
export SSH_USER=${SSH_USER:=$USER}
export SSH_NAME=${NAME:="default"}
if ! plugn trigger user-auth $SSH_USER $SSH_NAME "$@" ; then
return 1
fi
return 0
}
_ipv4_regex() {
echo "([0-9]{1,3}[\.]){3}[0-9]{1,3}"
}
_ipv6_regex() {
local RE_IPV4="$(_ipv4_regex)"
local RE_IPV6="([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|" # TEST: 1:2:3:4:5:6:7:8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,7}:|" # TEST: 1:: 1:2:3:4:5:6:7::
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|" # TEST: 1::8 1:2:3:4:5:6::8 1:2:3:4:5:6::8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|" # TEST: 1::7:8 1:2:3:4:5::7:8 1:2:3:4:5::8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|" # TEST: 1::6:7:8 1:2:3:4::6:7:8 1:2:3:4::8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|" # TEST: 1::5:6:7:8 1:2:3::5:6:7:8 1:2:3::8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|" # TEST: 1::4:5:6:7:8 1:2::4:5:6:7:8 1:2::8
RE_IPV6="${RE_IPV6}[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|" # TEST: 1::3:4:5:6:7:8 1::3:4:5:6:7:8 1::8
RE_IPV6="${RE_IPV6}:((:[0-9a-fA-F]{1,4}){1,7}|:)|" # TEST: ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::
RE_IPV6="${RE_IPV6}fe08:(:[0-9a-fA-F]{1,4}){2,2}%[0-9a-zA-Z]{1,}|" # TEST: fe08::7:8%eth0 fe08::7:8%1 (link-local IPv6 addresses with zone index)
RE_IPV6="${RE_IPV6}::(ffff(:0{1,4}){0,1}:){0,1}${RE_IPV4}|" # TEST: ::255.255.255.255 ::ffff:255.255.255.255 ::ffff:0:255.255.255.255 (IPv4-mapped IPv6 addresses and IPv4-translated addresses)
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,4}:${RE_IPV4}" # TEST: 2001:db8:3:4::192.0.2.33 64:ff9b::192.0.2.33
echo "$RE_IPV6"
}
get_ipv4_regex() {
local RE_IPV4="$(_ipv4_regex)"
# Ensure the ip address continues to the end of the line
# Fixes using a wildcard dns service such as xip.io which allows for *.<ip address>.xip.io
echo "${RE_IPV4}\$"
}
get_ipv6_regex() {
local RE_IPV6="$(_ipv4_regex)"
# Ensure the ip address continues to the end of the line
# Fixes using a wildcard dns service such as xip.io which allows for *.<ip address>.xip.io
echo "${RE_IPV6}\$"
}

View File

@@ -1,4 +1,3 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"

View File

@@ -141,10 +141,10 @@ case "$1" in
# Display usage help
help | docker-options:help)
cat<<EOF
docker-options <app>, Display apps docker options for all phases
docker-options <app> <phase(s)>, Display apps docker options for phase (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 <app>, Display app's Docker options for all phases
docker-options <app> <phase(s)>, Display app's Docker options for phase (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)
EOF
;;

View File

@@ -2,7 +2,7 @@
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
STDIN=$(cat)
APP="$1"
APP="$1"; IMAGE_SOURCE_TYPE="$2"
case "$0" in
*docker-args-build)
@@ -34,7 +34,35 @@ if [[ -f "$PHASE_FILE_PATH" ]]; then
continue
;;
*)
output="$output $line"
case "$IMAGE_SOURCE_TYPE" in
dockerfile)
case "$line" in
--link*|-v*)
continue
;;
*)
output="$output $line"
;;
esac
;;
herokuish)
case "$line" in
--file*|--build-args*)
continue
;;
*)
output="$output $line"
;;
esac
;;
*)
output="$output $line"
;;
esac
;;
esac
done < $PHASE_FILE_PATH

View File

@@ -65,7 +65,7 @@ case "$1" in
exit 1
fi
if [[ $(egrep ^"$3"$ "$DOKKU_ROOT/$APP/VHOST" > /dev/null 2>&1; echo $?) -eq 0 ]]; then
if [[ $(egrep -w "^{$3}$" "$DOKKU_ROOT/$APP/VHOST" > /dev/null 2>&1; echo $?) -eq 0 ]]; then
echo "$3 is already defined for $APP"
exit 1
fi
@@ -75,8 +75,6 @@ case "$1" in
for DOMAIN in "$@"; do
echo "$DOMAIN" >> "$DOKKU_ROOT/$APP/VHOST"
done
# we need to restart the app to make sure we're binding to the appropriate network interface
nginx_build_config $APP
plugn trigger post-domains-update $APP
for DOMAIN in "$@"; do
dokku_log_info1 "Added $DOMAIN to $APP"

View File

@@ -34,7 +34,7 @@ case "$1" in
help | enter:help)
cat && cat<<EOF
enter <app> [<container-type> || --container-id <container-id>], Connect to a specific app container
enter <app> [<container-type> || --container-id <container-id>], Connect to a specific app container
EOF
;;

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/apps/functions"
git_build_app_repo() {
verify_app_name "$1"
@@ -14,6 +15,7 @@ git_build_app_repo() {
chmod 755 $TMP_WORK_DIR
unset GIT_DIR GIT_WORK_TREE
pushd $TMP_WORK_DIR > /dev/null
[[ ! -d "$DOKKU_ROOT/$APP" ]] && apps_create $APP
git clone -q "$DOKKU_ROOT/$APP" "$TMP_WORK_DIR" &> /dev/null
git config advice.detachedHead false
git checkout "$REV" &> /dev/null

View File

@@ -3,7 +3,6 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$(dirname "$0")/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
source "$PLUGIN_AVAILABLE_PATH/nginx-vhosts/functions"
case "$1" in
logs)

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core named containers plugin"
version = "0.4.0"
version = "0.4.0.1"
[plugin.config]

View File

@@ -6,7 +6,7 @@ APP="$1"; APP_ROOT="$DOKKU_ROOT/$APP"
for container in "$APP_ROOT"/CONTAINER.*; do
DYNO=$(echo "$container" | sed -r 's/.*CONTAINER\.(.*)/\1/') || true
NAME="$APP.$DYNO"
PREVIOUS=$(docker ps -a -q -f name="$NAME") || true
PREVIOUS=$(docker ps -a -q -f name="^.?$NAME\$") || true
if [[ -n $PREVIOUS ]]; then
docker rename "$NAME" "$NAME.$(date +%s)" > /dev/null
fi

View File

@@ -66,8 +66,8 @@ case "$1" in
nginx:build-config <app>, (Re)builds nginx config for given app
nginx:access-logs <app> [-t], Show the nginx access logs for an application (-t follows)
nginx:error-logs <app> [-t], Show the nginx error logs for an application (-t follows)
nginx:disable <app>, disable nginx for an application (forces container binding to external interface)
nginx:enable <app>, enable nginx for an application
nginx:disable <app>, Disable nginx for an application (forces container binding to external interface)
nginx:enable <app>, Enable nginx for an application
EOF
;;

View File

@@ -11,6 +11,12 @@ case "$DOKKU_DISTRO" in
export DEBIAN_FRONTEND=noninteractive
[[ -z "$CIRCLECI" ]] && apt-get install -qq -y software-properties-common python-software-properties
[[ -n "$CIRCLECI" ]] && aptitude install -q -y software-properties-common python-software-properties
ubuntu_year=$(lsb_release -d | cut -d ' ' -f 2 | awk '{split($0,a,"."); print a[1]}')
ubuntu_month=$(lsb_release -d | cut -d ' ' -f 2 | awk '{split($0,a,"."); print a[2]}')
[[ "$ubuntu_year" -ge "16" ]] && exit 0
[[ "$ubuntu_year" -eq "15" ]] && [[ "$ubuntu_month" -eq "10" ]] && exit 0
add-apt-repository -y ppa:nginx/stable
apt-get update -qq > /dev/null
apt-get install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -qq -y nginx dnsutils

View File

@@ -5,41 +5,6 @@ source "$PLUGIN_AVAILABLE_PATH/certs/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
source "$PLUGIN_AVAILABLE_PATH/domains/functions"
_ipv4_regex() {
echo "([0-9]{1,3}[\.]){3}[0-9]{1,3}"
}
_ipv6_regex() {
local RE_IPV4="$(_ipv4_regex)"
local RE_IPV6="([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|" # TEST: 1:2:3:4:5:6:7:8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,7}:|" # TEST: 1:: 1:2:3:4:5:6:7::
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|" # TEST: 1::8 1:2:3:4:5:6::8 1:2:3:4:5:6::8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|" # TEST: 1::7:8 1:2:3:4:5::7:8 1:2:3:4:5::8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|" # TEST: 1::6:7:8 1:2:3:4::6:7:8 1:2:3:4::8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|" # TEST: 1::5:6:7:8 1:2:3::5:6:7:8 1:2:3::8
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|" # TEST: 1::4:5:6:7:8 1:2::4:5:6:7:8 1:2::8
RE_IPV6="${RE_IPV6}[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|" # TEST: 1::3:4:5:6:7:8 1::3:4:5:6:7:8 1::8
RE_IPV6="${RE_IPV6}:((:[0-9a-fA-F]{1,4}){1,7}|:)|" # TEST: ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::
RE_IPV6="${RE_IPV6}fe08:(:[0-9a-fA-F]{1,4}){2,2}%[0-9a-zA-Z]{1,}|" # TEST: fe08::7:8%eth0 fe08::7:8%1 (link-local IPv6 addresses with zone index)
RE_IPV6="${RE_IPV6}::(ffff(:0{1,4}){0,1}:){0,1}${RE_IPV4}|" # TEST: ::255.255.255.255 ::ffff:255.255.255.255 ::ffff:0:255.255.255.255 (IPv4-mapped IPv6 addresses and IPv4-translated addresses)
RE_IPV6="${RE_IPV6}([0-9a-fA-F]{1,4}:){1,4}:${RE_IPV4}" # TEST: 2001:db8:3:4::192.0.2.33 64:ff9b::192.0.2.33
echo "$RE_IPV6"
}
get_ipv4_regex() {
local RE_IPV4="$(_ipv4_regex)"
# Ensure the ip address continues to the end of the line
# Fixes using a wildcard dns service such as xip.io which allows for *.<ip address>.xip.io
echo "${RE_IPV4}\$"
}
get_ipv6_regex() {
local RE_IPV6="$(_ipv4_regex)"
# Ensure the ip address continues to the end of the line
# Fixes using a wildcard dns service such as xip.io which allows for *.<ip address>.xip.io
echo "${RE_IPV6}\$"
}
is_app_nginx_enabled() {
local APP="$1"
verify_app_name "$APP"
@@ -157,7 +122,9 @@ nginx_build_config() {
fi
DOKKU_APP_CIDS=($(get_app_container_ids $APP))
docker cp "${DOKKU_APP_CIDS[0]}:/app/nginx.conf.template" "$DOKKU_ROOT/$APP/" 2> /dev/null || true
for file in nginx.conf.template nginx.ssl.conf.template; do
docker cp "${DOKKU_APP_CIDS[0]}:/app/${file}" "$DOKKU_ROOT/$APP/" 2> /dev/null || true
done
[[ -f "$APP_NGINX_TEMPLATE" ]] && NGINX_TEMPLATE="$APP_NGINX_TEMPLATE" && NGINX_CUSTOM_TEMPLATE="true" && dokku_log_info1 'Overriding default nginx.conf with detected nginx.conf.template'
@@ -235,7 +202,7 @@ EOF
while read -r line; do
[[ -z "$line" ]] && continue
dokku_log_info1 "Configuring SSL for $line..."
dokku_log_info1 "Configuring SSL for $line...(using $NGINX_SSL_TEMPLATE)"
SSL_SERVER_NAME=$line
NOSSL_SERVER_NAME=$line
eval "cat <<< \"$(< $NGINX_SSL_TEMPLATE)\" >> $NGINX_CONF"
@@ -250,7 +217,7 @@ EOF
if [[ -n "$NONSSL_VHOSTS" ]]; then
NOSSL_SERVER_NAME=$(echo $NONSSL_VHOSTS | tr '\n' ' ')
xargs -i echo "-----> Configuring {}..." <<< "$NONSSL_VHOSTS"
xargs -i echo "-----> Configuring {}...(using $NGINX_TEMPLATE)" <<< "$NONSSL_VHOSTS"
eval "cat <<< \"$(< $NGINX_TEMPLATE)\" >> $NGINX_CONF"
fi
if [[ "$(is_app_vhost_enabled $APP)" == "false" ]] || ([[ -z "$NONSSL_VHOSTS" ]] && [[ -z "$SSL_VHOSTS" ]]); then

View File

@@ -36,10 +36,11 @@ fi
echo 'server_names_hash_bucket_size 512;' >| /etc/nginx/conf.d/server_names_hash_bucket_size.conf
# make sure dokku can read the default log dir
gpasswd -M "$(egrep ^adm: /etc/group | awk -F ":" '{ print $4 }')" dokku
chgrp -R dokku /var/log/nginx
chmod g+r /var/log/nginx
# revert dokku group changes
gpasswd -a dokku adm
chgrp -R adm /var/log/nginx
gpasswd -M "" dokku
[[ -f /etc/logrotate.d/nginx ]] && sed -i -e 's/create 0640 www-data dokku/create 0640 www-data adm/g' /etc/logrotate.d/nginx
# patch broken nginx 1.8.0 logrotate
[[ -f /etc/logrotate.d/nginx ]] && sed -i -e 's/invoke-rc.d/service/g' /etc/logrotate.d/nginx

View File

@@ -56,10 +56,8 @@ case "$1" in
ps:rebuildall)
shopt -s nullglob
for app in $DOKKU_ROOT/*; do
[[ ! -d $app ]] && continue
APP=$(basename $app)
is_deployed $APP && dokku ps:rebuild $APP
for app in $(dokku_apps); do
is_deployed $app && dokku ps:rebuild $app
done
shopt -u nullglob
;;
@@ -76,23 +74,19 @@ case "$1" in
ps:restartall)
shopt -s nullglob
for app in $DOKKU_ROOT/*; do
[[ ! -d $app ]] && continue
APP=$(basename $app)
dokku ps:restart $APP
for app in $(dokku_apps); do
dokku ps:restart $app
done
shopt -u nullglob
;;
ps:restore)
shopt -s nullglob
for app in $DOKKU_ROOT/*; do
[[ ! -d $app ]] && continue
APP=$(basename $app)
DOKKU_APP_RESTORE=$(dokku config:get $APP DOKKU_APP_RESTORE || true)
for app in $(dokku_apps); do
DOKKU_APP_RESTORE=$(dokku config:get $app DOKKU_APP_RESTORE || true)
if [[ $DOKKU_APP_RESTORE != 0 ]]; then
echo "Restoring app $APP ..."
dokku ps:start $APP
echo "Restoring app $app ..."
dokku ps:start $app
fi
done
shopt -u nullglob

View File

@@ -35,7 +35,7 @@ generate_scale_file() {
fi
dokku_log_info1_quiet "New DOKKU_SCALE file generated"
else
dokku_log_info1_quiet "DOKKU_SCALE file found"
dokku_log_info1_quiet "DOKKU_SCALE file found ($DOKKU_SCALE_FILE)"
fi
print_dokku_scale_file $APP
}

View File

@@ -1 +1 @@
export BUILDPACK_URL=https://github.com/yabawock/buildpack-nginx
export BUILDPACK_URL=https://github.com/dokku/buildpack-nginx

View File

@@ -22,6 +22,6 @@ exec /usr/local/bin/gitreceived -p 2022 -n /root/.ssh/id_rsa /tmp/receiver
EOF
cat<<EOF > /etc/rc.local
curl https://raw.githubusercontent.com/progrium/dokku/master/tests/ci/receiver -s > /tmp/receiver
curl https://raw.githubusercontent.com/dokku/dokku/master/tests/ci/receiver -s > /tmp/receiver
chmod +x /tmp/receiver
EOF

53
tests/unit/certs.bats Normal file
View File

@@ -0,0 +1,53 @@
#!/usr/bin/env bats
load test_helper
setup_local_tls() {
TLS=$BATS_TMPDIR/tls
mkdir -p $TLS
tar xf $BATS_TEST_DIRNAME/server_ssl.tar -C $TLS
sudo chown -R dokku:dokku $TLS
}
teardown_local_tls() {
TLS=$BATS_TMPDIR/tls
rm -R $TLS
}
setup() {
create_app
setup_local_tls
}
teardown() {
destroy_app
teardown_local_tls
}
@test "certs:add" {
run bash -c "dokku certs:add $TEST_APP $BATS_TMPDIR/tls/server.crt $BATS_TMPDIR/tls/server.key"
echo "output: "$output
echo "status: "$status
assert_success
}
@test "certs:add < tar" {
run bash -c "dokku certs:add $TEST_APP < $BATS_TEST_DIRNAME/server_ssl.tar"
echo "output: "$output
echo "status: "$status
assert_success
}
@test "certs:info" {
run bash -c "dokku certs:add $TEST_APP < $BATS_TEST_DIRNAME/server_ssl.tar && dokku certs:info $TEST_APP"
echo "output: "$output
echo "status: "$status
assert_success
}
@test "certs:remove" {
run bash -c "dokku certs:add $TEST_APP < $BATS_TEST_DIRNAME/server_ssl.tar && dokku certs:remove $TEST_APP"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -160,3 +160,15 @@ teardown() {
echo "status: "$status
assert_success
}
@test "docker-options (dockerfile deploy with link)" {
run /bin/bash -c "dokku docker-options:add $TEST_APP deploy \"-v /var/tmp\""
echo "output: "$output
echo "status: "$status
assert_success
run /bin/bash -c "dokku docker-options:add $TEST_APP build \"--link postgres\""
echo "output: "$output
echo "status: "$status
assert_success
deploy_app dockerfile
}

View File

@@ -46,6 +46,17 @@ teardown() {
refute_line "test.app.dokku.me"
}
@test "(domains) domains:remove (wildcard domain)" {
run dokku domains:add $TEST_APP *.dokku.me
echo "output: "$output
echo "status: "$status
assert_success
run dokku domains:remove $TEST_APP *.dokku.me
echo "output: "$output
echo "status: "$status
refute_line "*.dokku.me"
}
@test "(domains) domains:clear" {
run dokku domains:add $TEST_APP test.app.dokku.me
echo "output: "$output

View File

@@ -98,6 +98,7 @@ assert_error_log() {
deploy_app
assert_ssl_domain "wildcard1.dokku.me"
assert_ssl_domain "wildcard2.dokku.me"
assert_http_success "customssltemplate.dokku.me"
}
@test "(nginx-vhosts) nginx:build-config (wildcard SSL & unrelated domain)" {
@@ -125,6 +126,7 @@ assert_error_log() {
custom_nginx_template
deploy_app
assert_nonssl_domain "www.test.app.dokku.me"
assert_http_success "customtemplate.dokku.me"
}
@test "(nginx-vhosts) nginx:build-config (no global VHOST and domains:add)" {

View File

@@ -183,14 +183,14 @@ cat<<EOF > $DOKKU_ROOT/$APP/nginx.conf.template
server {
listen [::]:\$NGINX_PORT;
listen \$NGINX_PORT;
server_name \$NOSSL_SERVER_NAME;
server_name \$NOSSL_SERVER_NAME customssltemplate.dokku.me;
return 301 https://\\\$host:\$NGINX_SSL_PORT\\\$request_uri;
}
server {
listen [::]:\$NGINX_SSL_PORT ssl spdy;
listen \$NGINX_SSL_PORT ssl spdy;
server_name \$SSL_SERVER_NAME;
server_name \$SSL_SERVER_NAME customssltemplate.dokku.me;
\$SSL_DIRECTIVES
keepalive_timeout 70;
@@ -218,7 +218,7 @@ cat<<EOF > $DOKKU_ROOT/$APP/nginx.conf.template
server {
listen [::]:\$NGINX_PORT;
listen \$NGINX_PORT;
server_name \$NOSSL_SERVER_NAME;
server_name \$NOSSL_SERVER_NAME customtemplate.dokku.me;
location / {
proxy_pass http://\$APP;