Compare commits

...

988 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
39c0c316fc Release 0.14.3
# History

## 0.14.3

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.3/bootstrap.sh
sudo DOKKU_TAG=v0.14.3 bash bootstrap.sh
```

### Bug Fixes

- #3412: @josegonzalez Ensure official golang plugins have correct help output
- #3411: @josegonzalez Properly handle the nginx installation dependency
- #3406: @josegonzalez Add missing semicolons to app-json script
- #3394: @josegonzalez Quiet ps:retire where possible

### New Features

- #3410: @josegonzalez Make installs quieter
- #3409: @josegonzalez Build golang binaries with higher concurrency
- #3408: @josegonzalez Disable container restarts for stopped containers
- #3389: @heyarne Remove jQuery from web-based installer

### Documentation

- #3407: @tkrugg Fix typo on domain docs

### Tests

- #3414: @josegonzalez Test and release changes
2019-01-22 01:08:04 -05:00
Jose Diaz-Gonzalez
3285cacc97 Merge pull request #3414 from dokku/dokku-release-changes
Test and release changes
2019-01-21 22:32:03 -05:00
Jose Diaz-Gonzalez
7ac9c33112 tests: split by classname instead of filename 2019-01-21 21:57:03 -05:00
Jose Diaz-Gonzalez
f5c45b99ad refactor: use a base image when running the build process in CI 2019-01-21 21:53:35 -05:00
Jose Diaz-Gonzalez
af35de509b fix: drop extra release call in test run 2019-01-21 21:40:29 -05:00
Jose Diaz-Gonzalez
0798841f83 chore: standardize on a single naming scheme for releases
- "build" Dockerfiles should start with build-
- "release" scripts should have the name of the thing they are building appended
2019-01-21 21:40:10 -05:00
Jose Diaz-Gonzalez
8d577b275e Merge pull request #3412 from dokku/full-golang-help
Ensure official golang plugins have correct help output
2019-01-21 02:16:06 -05:00
Jose Diaz-Gonzalez
35e04d58fe Merge pull request #3411 from dokku/nginx-dependencies
Properly handle the nginx installation dependency
2019-01-21 02:15:53 -05:00
Jose Diaz-Gonzalez
af8718cebe fix: ensure official golang plugins have correct help output
Previously, golang plugins would omit subcommands for 'dokku help --all', meaning they could not be introspected upon by outside tooling.
2019-01-20 22:50:48 -05:00
Jose Diaz-Gonzalez
b7e5bbed08 Merge pull request #3410 from dokku/quieter-install
Make installs quieter
2019-01-20 22:43:09 -05:00
Jose Diaz-Gonzalez
6b0cdae3d3 fix: properly handle the nginx installation dependency
- ensure nginx is always installed
- install nginx in the same way for apt-using distros
- do not install software-properties-common or python-software-properties if not needed
2019-01-20 20:57:40 -05:00
Jose Diaz-Gonzalez
e423676b11 feat: make installs quieter
This removes output from commands that otherwise should be silent - such as when not needing to migrate data.
2019-01-20 20:54:00 -05:00
Jose Diaz-Gonzalez
1757bc0207 Merge pull request #3409 from dokku/faster-build
Build golang binaries with higher concurrency
2019-01-20 18:58:12 -05:00
Jose Diaz-Gonzalez
e7fb6007d3 feat: build golang binaries with higher concurrency
This should allow us to shave off a few minutes of build time, both locally and on CI
2019-01-20 18:12:08 -05:00
Jose Diaz-Gonzalez
2e446fc3be Merge pull request #3408 from dokku/container-restart-no
Disable container restarts for stopped containers
2019-01-20 16:24:35 -05:00
Jose Diaz-Gonzalez
173b87928c feat: disable container restarts for stopped containers
This should avoid the case where the docker daemon starts the containers upon reboot.
2019-01-20 15:19:54 -05:00
Jose Diaz-Gonzalez
1edb734df9 Merge pull request #3406 from dokku/3404-missing-semicolon
Add missing semicolons to app-json script
2019-01-20 15:05:43 -05:00
Jose Diaz-Gonzalez
6da8a54f86 Merge pull request #3407 from tkrugg/patch-1
typo
2019-01-20 14:29:41 -05:00
Youcef Mammar
eea863e556 typo 2019-01-20 18:35:02 +01:00
Jose Diaz-Gonzalez
db0df4e4ca Merge pull request #3389 from rbb-data/feature/remove-jquery
Remove jQuery from web-based installer
2019-01-20 11:28:33 -05:00
Jose Diaz-Gonzalez
b9b4693e20 fix: add missing semicolons 2019-01-20 11:21:53 -05:00
Arne Schlüter
699d205060 Remove external dependencies and warnings from setup page
* Remove jQuery dependency
* Add charset declaration to installer page
2019-01-18 13:15:19 +01:00
Jose Diaz-Gonzalez
5579fe0006 Merge pull request #3394 from dokku/retire-fixes
Quiet ps:retire where possible
2019-01-12 22:54:06 -05:00
Jose Diaz-Gonzalez
0375bc3e97 fix: quiet ps:retire where possible
Log output for ps:retire was previously a bit too verbose because we weren't handling the following edge-cases.

- if a container doesn't exist, remove it from the dead container list
- ensure a restarting container is properly killed
- only attempt to stop/kill if the state is not dead or exited
- do not attempt to do anything if the container doesn't exist
- correct check on running state
2019-01-12 22:49:23 -05:00
Jose Diaz-Gonzalez
49af2d8062 Release 0.14.2
# History

## 0.14.2

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.2/bootstrap.sh
sudo DOKKU_TAG=v0.14.2 bash bootstrap.sh
```

### Bug Fixes

- #3395: @josegonzalez Correct early exit 1 in apps:report

### Documentation

- #3393: @jayjun Fix capitalization and formatting in installation guides
- #3392: @jayjun Fix wrong PostgreSQL environment variable in guide
- #3391: @josegonzalez Update all gpgkey paths to the new url
2019-01-12 20:55:58 -05:00
Jose Diaz-Gonzalez
745f680899 Merge pull request #3393 from jayjun/install
Fix capitalization and formatting in installation guides
2019-01-12 19:50:56 -05:00
Jose Diaz-Gonzalez
e46e2f01f1 Merge pull request #3395 from dokku/log-exit
Correct early exit 1 in apps:report
2019-01-11 11:22:28 -05:00
Jose Diaz-Gonzalez
12b82b67e7 fix: correct early exit 1 in apps:report
Previously, if running 'dokku report --all', the early exit 1 in apps:report would cause the entire process to bail, resulting in a partial report. Instead, we exit 0, allowing plugn to continue.

Technically a non-deployed app is not an error case at this position.
2019-01-11 11:21:56 -05:00
Tan Jay Jun
a418cf6a25 Fix capitalization and formatting in installation guides 2019-01-11 19:55:46 +08:00
Jose Diaz-Gonzalez
01e6f378bd Merge pull request #3392 from jayjun/evar
Fix wrong PostgreSQL environment variable in guide
2019-01-11 06:36:51 -05:00
Tan Jay Jun
2e11804ec9 Fix wrong PostgreSQL environment variable in guide 2019-01-11 18:33:15 +08:00
Jose Diaz-Gonzalez
efca23c22e Merge pull request #3391 from dokku/3390-updated-gpgkey-path
Update all gpgkey paths to the new url
2019-01-10 12:18:30 -05:00
Jose Diaz-Gonzalez
6772c001dd docs: update all gpgkey paths to the new url
PackageCloud automatically switched our key earlier this week but some docs were still referencing the old path.

Closes #3390
2019-01-10 12:18:01 -05:00
Jose Diaz-Gonzalez
058646c9f9 Release 0.14.1
# History

## 0.14.1

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.1/bootstrap.sh
sudo DOKKU_TAG=v0.14.1 bash bootstrap.sh
```

### Bug Fixes

- #3386: @josegonzalez Ensure we can deploy code when there is no pre or post-deploy script defined
2019-01-09 10:20:10 -05:00
Jose Diaz-Gonzalez
32896debcf Merge pull request #3386 from dokku/3385-predeploy-fix
Ensure we can deploy code when there is no pre or post-deploy script defined
2019-01-09 09:01:58 -05:00
Jose Diaz-Gonzalez
4ae280528e fix: ensure we can deploy code when there is no pre or post-deploy script defined
Closes #3385
2019-01-09 07:46:04 -05:00
Jose Diaz-Gonzalez
924287c04f Release 0.14.0
# History

## 0.14.0

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.0/bootstrap.sh
sudo DOKKU_TAG=v0.14.0 bash bootstrap.sh
```

### Bug Fixes

- #3384: @josegonzalez fix: use updated gpg key for apt repository
- #3382: @josegonzalez Set cleanup to global when no application is specified
- #3350: @josegonzalez Do not build the proxy config when there are no app listeners
- #3366: @josegonzalez Add post-app-clone-setup to network clean make target
- #3349: @josegonzalez Ensure apps are cleanly cloned
- #3356: @josegonzalez Move storage directory into DOKKU_LIB_ROOT
- #3341: @baikunz Select only default dokku network IP
- #3348: @josegonzalez Use correct name for packagecloud token when running CI commands
- #3339: @josegonzalez Properly check args when calling cleanup globally
- #3344: @josegonzalez Allow running dokku report without needing an interactive shell

### New Features

- #3381: @josegonzalez Add support for the Procfile release command
- #3380: @josegonzalez Install stable docker when using bootstrap script
- #3378: @josegonzalez Make admin setup UI look nicer
- #3369: @josegonzalez Pull invalid nginx configuration when the nginx configs fail to validate
- #3371: @josegonzalez Add tests section to changelog
- #3358: @josegonzalez Image tag deploy workflow cleanup
- #3351: @josegonzalez Do not clone URLS and VHOST files to new apps
- #3357: @josegonzalez Add support for building arbitrary releases
- #3354: @josegonzalez Drop default dhparam key size to 2048
- #3347: @josegonzalez Upgrade herokuish
- #3352: @josegonzalez Increase security of default SSL setup
- #3353: @josegonzalez Normalize tests
- #3345: @josegonzalez Allow triggering the full report for all apps via --all flag
- #3346: @josegonzalez Always overwrite the dokku.conf file for nginx

### Documentation

- #3377: @josegonzalez Remove team member section on homepage in favor of sponsor section
- #3376: @josegonzalez Switch from rawgit to jsdelivr
- #3365: @josegonzalez Remove extra tags:create call from docs

### Tests

- #3379: @josegonzalez Run mvdan/shfmt on test runs
- #3370: @josegonzalez Add junit support to shellcheck output
- #3308: @josegonzalez Add timing info to test runs on CircleCI
- #3367: @josegonzalez Run tests from built artifact
- #3368: @josegonzalez Balance circleci tests
- #3363: @josegonzalez Add a wrapper for invoking a single test
- #3362: @josegonzalez Allow tests to be run from any directory
- #3360: @josegonzalez Switch to bats-core
- #3361: @josegonzalez Do not generate dhparam for tests

### Other

- #3279: @fruitl00p Make sure the universe repo is loaded into APT
2019-01-08 08:02:13 -05:00
Jose Diaz-Gonzalez
4b4119e52b Merge pull request #3381 from dokku/3136-release-support
Add support for the Procfile release command
2019-01-08 08:01:02 -05:00
Jose Diaz-Gonzalez
ca621129e2 Merge pull request #3384 from dokku/3383-fix-gpg-key
fix: use updated gpg key for apt repository
2019-01-08 07:57:35 -05:00
Jose Diaz-Gonzalez
0d8d43d4dd fix: use updated gpg key for apt repository
Packagecloud recently updated legacy repositories to sign with a repository-specific gpg key.

Closes #3383
2019-01-08 07:56:58 -05:00
Jose Diaz-Gonzalez
74e1cbd27d Merge pull request #3382 from dokku/fix-global-cleanup
Set cleanup to global when no application is specified
2019-01-07 16:11:02 -05:00
Jose Diaz-Gonzalez
9d45b0e2fb fix: set cleanup to global when no application is specified 2019-01-07 16:10:35 -05:00
Jose Diaz-Gonzalez
a5a66dd916 feat: add support for the Procfile release command
Closes #3136
2019-01-07 07:45:02 -05:00
Jose Diaz-Gonzalez
14a2699ac4 feat: make the app-json script execution quieter 2019-01-07 07:14:05 -05:00
Jose Diaz-Gonzalez
dfefdab67c refactor: simplify script execution
The previous method had a few too many nested if statements, making it difficult to track when and where the function stopped executing.
2019-01-07 07:04:02 -05:00
Jose Diaz-Gonzalez
952db832d9 refactor: move app.json script execution into it's own plugin
Rather than have this live in 00_dokku-standard, move it out so that it may start to support various other features around the app.json manifest.
2019-01-07 07:02:07 -05:00
Jose Diaz-Gonzalez
1a36c77c46 Merge pull request #3380 from dokku/3269-stable-docker
Install stable docker when using bootstrap script
2019-01-07 06:41:14 -05:00
Jose Diaz-Gonzalez
5c0b350cff feat: install stable docker when using bootstrap script
This script previously ran through the docker installation process with the edge channel on each run. Instead, we only run the docker installation if docker is not available. In addition, we force set the channel to stable, ensuring the script installs the correct channel for stable docker installations.

Closes #3269
2019-01-07 06:40:03 -05:00
Jose Diaz-Gonzalez
093fafe0b7 Merge pull request #3379 from dokku/shfmt
Run mvdan/shfmt on test runs
2019-01-07 02:05:16 -05:00
Jose Diaz-Gonzalez
86795ddacc tests: run mvdan/shfmt on test runs
While I do not agree with _every_ style change, this will force Dokku to have consistent formatting across all shell scripts, which is arguably a Good Thing™.

The command used to reprocess everything is:

```shell
shfmt -l -bn -ci -i 2 -w .
```
2019-01-07 01:25:55 -05:00
Jose Diaz-Gonzalez
fb7c73a7e3 fix: properly setup the tmp files necessary for the lint make target 2019-01-07 00:17:38 -05:00
Jose Diaz-Gonzalez
360cca08ef Merge pull request #3378 from dokku/setup-revamp-v1
Make admin setup UI look nicer
2019-01-06 22:41:07 -05:00
Jose Diaz-Gonzalez
2dd9ff3ac8 refactor: make admin setup UI look a bit nicer
The initial admin setup UI is a bit of a hack, but could also be a bit frustrating to new users as the settings are unclear. Rather than throw them to the wolves, include some useful information to allow them to make good decisions when setting up Dokku.

- Upgrade to latest bootstramp and latest jquery 1.x release
- Add a warning for people who might miss this setup page
- Add placeholder text to both the ssh key area and the hostname
- Add descriptions to all form fields to further explain the consequences of a particular field
- Add links where necessary for users who wish to explore how to change settings in the future
- Make the "result" message on submission red or green depending on the success or failure of the submission.
- Wait 3 seconds before redirecting on success
2019-01-06 22:38:49 -05:00
Jose Diaz-Gonzalez
f8766708c7 feat: add support for alternate ssh authorized_keys locations
On Ubuntu within AWS environments, the default user is the `ubuntu` user, and this is where the ssh key should be pulled from. CentOS has a tendency to use `ec2-user`.

On all other environments, the `root` user is typically the only user provisioned.

Closes #3372
2019-01-06 22:26:54 -05:00
Jose Diaz-Gonzalez
fba44b63a5 Merge pull request #3279 from fruitl00p/patch-3
Make sure the universe repo is loaded into APT
2019-01-06 20:49:46 -05:00
Jose Diaz-Gonzalez
51add20a53 fix: ensure software-properties-common is installed
It is necessary for add-apt-repository
2019-01-06 20:49:08 -05:00
Jose Diaz-Gonzalez
85bf4dd5cd tests: add support to junit output for marking what tests were excluded and all files that were processed
[ci skip]
2019-01-06 20:27:48 -05:00
Jose Diaz-Gonzalez
57766597ae Merge pull request #3370 from dokku/shellcheck-junit-output
Add junit support to shellcheck output
2019-01-05 23:27:17 -05:00
Jose Diaz-Gonzalez
f33784cbc9 fix: use correct encoding 2019-01-05 20:42:42 -05:00
Jose Diaz-Gonzalez
5f3b4640e8 refactor: use a python script to translate from shellcheck output to junit
The checkstyle xslt wasn't quite good enough, resulting in missing/malformatted output. Note that this now excludes _passing_ tests, which also isn't quite right, but a fair bit closer to the xsd here: https://github.com/windyroad/JUnit-Schema
2019-01-05 19:56:23 -05:00
Jose Diaz-Gonzalez
d67f719fe4 chore: lint python 2019-01-05 19:46:08 -05:00
Jose Diaz-Gonzalez
c4f1ef26c0 tests: move all shellcheck excludes into a single file
This will allow us to add/remove shellcheck excludes more easily.
2019-01-05 07:43:20 -05:00
Jose Diaz-Gonzalez
73eabec039 feat: add junit support to shellcheck output
This requires us to run shellcheck twice, as the first pass doesn't output anything human readable - both because of the redirect and because shellcheck doesn't directly support it - which increases lint runtime but allows us to have both the junit information and the normal human-readable output.

Note that the checkstyle output does not contain timing info.
2019-01-05 06:31:14 -05:00
Jose Diaz-Gonzalez
287a3c3542 Merge pull request #3350 from dokku/3262-check-web-listeners
Do not build the proxy config when there are no app listeners
2019-01-05 06:30:14 -05:00
Jose Diaz-Gonzalez
afacf32ba7 Merge pull request #3377 from dokku/3374-sponsor-dokku
Remove team member section on homepage in favor of sponsor section
2019-01-05 06:23:58 -05:00
Jose Diaz-Gonzalez
12d3f112e3 docs: Remove team member section on homepage in favor of sponsor section
This removes outdated information on the main page in favor of the "official" ways of sponsoring Dokku.

Also update the contributing note to mention where to post

Are you a crypto-user and want other options? Feel free to send bitcoin to 3MY2HxMVsxuWmhQkgYBsE3iZFjJgkjNPyQ

Closes #3374
2019-01-05 06:22:03 -05:00
Jose Diaz-Gonzalez
74b36bd66d Merge pull request #3376 from dokku/3284-bye-rawgit
Switch from rawgit to jsdelivr
2019-01-05 04:10:31 -05:00
Jose Diaz-Gonzalez
bb8d0324b5 docs: Switch from rawgit to jsdelivr
Rawgit is no longer being offered due to spammers, but jsdelivr has graciously allowed folks to use their cdn to mirror assets from github.

Closes #3284
2019-01-05 04:08:30 -05:00
Jose Diaz-Gonzalez
8b67d36c88 Merge pull request #3369 from dokku/3162-nginx-validate
Pull invalid nginx configuration when the nginx configs fail to validate
2018-12-31 12:40:22 -05:00
Jose Diaz-Gonzalez
0909052816 feat: Pull invalid nginx configuration when the nginx configs fail to validate
- expose an nginx:validate command that can be used to show validation information
- properly reference the invalid nginx config, rather than tell the user that another app's nginx config is invalid when deploying their own app
- allow a user to cleanup bad nginx config files out of band when they are blocking a deploy _without_ requiring knowing where that nginx config is

Note that this may have issues with generated nginx.conf files that depend on other apps or other parts of the nginx config. For now, this is acceptable, though it is something that needs to be field tested.

Closes #3162
2018-12-31 11:57:03 -05:00
Jose Diaz-Gonzalez
2c002177e4 Merge pull request #3371 from dokku/changelog-tests-section
Add tests section to changelog
2018-12-30 18:06:07 -05:00
Jose Diaz-Gonzalez
dbf21d6b8c feat: add tests section to changelog
For changes that are primarily test-related, pull them out into a specific section of the changelog.

[ci skip]
2018-12-30 18:05:48 -05:00
Jose Diaz-Gonzalez
7ad493c263 docs: do not reference commands as subcommands 2018-12-30 06:31:40 -05:00
Jose Diaz-Gonzalez
d1d9c57892 chore: add documentation to existing nginx commands 2018-12-30 06:31:18 -05:00
Jose Diaz-Gonzalez
bccfa8a3a0 fix: do not build the proxy config when there are no app listeners
This avoids cases where a developer believes they should be able to provision an nginx proxy but is unable to as no web process is configured to listen for the app.

Also silence stderr when extracting custom nginx templates. If there is stderr, that means we were not able to retrieve the template, but it's of no consequence for debugging.

Closes #3262
2018-12-30 05:11:36 -05:00
Jose Diaz-Gonzalez
68309d5659 Merge pull request #3308 from dokku/timing-info
Timing info in CircleCI
2018-12-29 21:22:18 -05:00
Jose Diaz-Gonzalez
95aeb27f0b feat: add timing info 2018-12-29 21:21:17 -05:00
Jose Diaz-Gonzalez
d2f116f958 Merge pull request #3367 from dokku/tests-from-built-artifact
Run tests from built artifact
2018-12-29 19:53:21 -05:00
Jose Diaz-Gonzalez
c344efdd8d tests: run tests from built artifact
Rather than testing against an install from source, ensure that all tests run from what _would_ be installed on a user's server. This ensures that the build process is sound, regardless of what code changes are implemented.
2018-12-29 18:32:52 -05:00
Jose Diaz-Gonzalez
dece1b52e0 Merge pull request #3368 from dokku/balance-tests
Balance circleci tests
2018-12-29 16:48:13 -05:00
Jose Diaz-Gonzalez
fbab5d2313 tests: balance circleci tests
This will help with test keep test times low
2018-12-29 16:47:52 -05:00
Jose Diaz-Gonzalez
10c56efdf7 Merge pull request #3366 from dokku/fix-network-clean
fix: add post-app-clone-setup to network clean make target
2018-12-29 16:36:03 -05:00
Jose Diaz-Gonzalez
56967ef950 fix: add post-app-clone-setup to network clean make target 2018-12-29 16:35:40 -05:00
Jose Diaz-Gonzalez
fc5f0c6685 Merge pull request #3365 from dokku/josegonzalez-patch-1
Remove extra tags:create call from docs
2018-12-29 16:29:58 -05:00
Jose Diaz-Gonzalez
9f05bd0dc3 docs: remove extra tag creation
The `latest` tag is now automatically created on tags:deploy.

[ci skip]
2018-12-29 16:29:30 -05:00
Jose Diaz-Gonzalez
682c6256bc Merge pull request #3363 from dokku/single-test
Add a wrapper for invoking a single test
2018-12-29 16:28:05 -05:00
Jose Diaz-Gonzalez
de89dd7319 Merge pull request #3362 from dokku/relative-test-runs
Allow tests to be run from any directory
2018-12-29 08:25:13 -05:00
Jose Diaz-Gonzalez
480b8ce42e tests: add a wrapper for invoking a single test
This can be used to increase testing velocity.
2018-12-29 08:01:14 -05:00
Jose Diaz-Gonzalez
dec181be6e tests: allow tests to be run from any directory
They previously required being run from repository root.
2018-12-29 07:33:59 -05:00
Jose Diaz-Gonzalez
c20826efa7 Merge pull request #3360 from dokku/upgrade-bats
Switch to bats-core
2018-12-29 07:21:51 -05:00
Jose Diaz-Gonzalez
10b6cd5b83 Merge pull request #3361 from dokku/faster-nginx-install
Do not generate dhparam for tests
2018-12-29 05:38:42 -05:00
Jose Diaz-Gonzalez
7ed7202c67 tests: switch to bats-core
This switches from the older, unmaintained version of bats to one that _is_ maintained. In particular, this fork of the community version - bats-core/bats-core - adds junit timing support, which can be used to track down slow tests.

Once the bats-core/bats-core repository merges junit support, we will switch back to upstream.

Note that tests on OS X will still run using a version that _does not_ have junit timing support.
2018-12-29 05:09:30 -05:00
Jose Diaz-Gonzalez
a54f672b5c tests: do not generate dhparam for tests
Tests will run much quicker if we don't need to regenerate this file. Note that this file _should not_ be used within installs.
2018-12-29 04:22:28 -05:00
Jose Diaz-Gonzalez
03ed58600c Merge pull request #3358 from dokku/3355-tags-deploys
Image tag deploy workflow cleanup
2018-12-28 23:41:01 -05:00
Jose Diaz-Gonzalez
95469f472e docs: add a warning concerning the addition of layers to herokuish-based images that are deployed via the tags plugin 2018-12-28 22:29:55 -05:00
Jose Diaz-Gonzalez
4a3707d36d feat: tag the "latest" image on tags deploy
If the image tag being deployed is not `latest`, we'll retag it as such once the deploy is complete.

Closes #3355
2018-12-28 22:29:53 -05:00
Jose Diaz-Gonzalez
4990a1cdda Merge pull request #3351 from dokku/2740-clone-domains
Do not clone URLS and VHOST files to new apps
2018-12-28 19:29:00 -05:00
Jose Diaz-Gonzalez
df1987e6c4 chore: reformat file to use spaces, not tabs 2018-12-28 19:00:42 -05:00
Jose Diaz-Gonzalez
81542ef089 feat: do not clone URLS and VHOST files to new apps
This follows the heroku pattern of ensuring applications are "freshly" created, routing-wise.

Closes #2740
2018-12-28 18:10:22 -05:00
Jose Diaz-Gonzalez
51dea4a220 fix: do not clone the tls directory
The tls directory stores the ssl certificate for an application, and should not be cloned to any new applications.

Refs #2740
2018-12-28 18:06:09 -05:00
Jose Diaz-Gonzalez
26ad2320cb Merge pull request #3349 from dokku/3249-clean-clones
Ensure apps are cleanly cloned
2018-12-28 18:05:43 -05:00
Jose Diaz-Gonzalez
29bad6b635 Merge pull request #3357 from dokku/build
Add support for building arbitrary releases
2018-12-28 17:57:22 -05:00
Jose Diaz-Gonzalez
39fad96b0d Merge pull request #3356 from dokku/storage-var-lib
Move storage directory into DOKKU_LIB_ROOT
2018-12-28 17:44:10 -05:00
Jose Diaz-Gonzalez
1bcf91895b fix: move storage directory into DOKKU_LIB_ROOT
Should this path change in the future, the storage plugin will respect the variable value.

[ci skip]
2018-12-28 17:43:32 -05:00
Jose Diaz-Gonzalez
fd5aa596d1 feat: add support for building arbitrary releases
This will let us support creating a build release that can be used to test anyone's PR.
2018-12-28 17:42:15 -05:00
Jose Diaz-Gonzalez
c5143cb722 chore: switch to dokku_log_info1_quiet 2018-12-28 17:02:09 -05:00
Jose Diaz-Gonzalez
a9d46ada5d feat: add test for old app during apps:clone --skip-deploy
If you skip a deploy and then destroy the newly created app, the old application should continue functioning like normal.
2018-12-28 17:02:09 -05:00
Jose Diaz-Gonzalez
f3a33e74d7 fix: remove CONTAINER files on app clone
This will ensure we don't accidentally destroy old applications if the new app isn't rebuilt or the rebuild fails.

Closes #3249
2018-12-28 17:02:08 -05:00
Jose Diaz-Gonzalez
cfd8f237df feat: cleanup IP and PORT files on app clone 2018-12-28 17:02:06 -05:00
Jose Diaz-Gonzalez
34d248a28c fix: remove old nginx.conf from a new app on clone 2018-12-27 21:31:57 -05:00
Jose Diaz-Gonzalez
0498a707c8 fix: Add a trigger to allow plugins to cleanup after a new clone is created 2018-12-27 21:31:57 -05:00
Jose Diaz-Gonzalez
86cc15d285 Merge pull request #3354 from dokku/josegonzalez-patch-1
Drop default dhparam key size to 2048
2018-12-27 21:21:41 -05:00
Jose Diaz-Gonzalez
f25f45b67e fix: drop dhparam key size to 2048
4096 takes so long on a very fast machine - 32 core, 64 gb droplet - that most users will begin to believe that it will never complete.
2018-12-27 21:21:06 -05:00
Jose Diaz-Gonzalez
a7c5e74c91 Merge pull request #3341 from baikunz/single-ipadress
Select only default dokku network IP
2018-12-27 19:37:49 -05:00
dorian
47462fcb6f WIP add tests 2018-12-27 23:32:28 +01:00
Jose Diaz-Gonzalez
077f5c1281 Merge pull request #3347 from dokku/upgrade-herokuish
Upgrade herokuish
2018-12-27 15:11:29 -05:00
Jose Diaz-Gonzalez
54990ebf83 Merge pull request #3352 from dokku/3343-ssl-enhancements
Increase security of default SSL setup
2018-12-27 15:10:04 -05:00
Jose Diaz-Gonzalez
af742f70c6 Merge pull request #3353 from dokku/normalize-tests
Normalize tests
2018-12-27 15:09:43 -05:00
Jose Diaz-Gonzalez
2fc51bcf53 fix: wrap all output and status variables in quotes
This will ensure newlines are replaced when these variables are output for debugging tests
2018-12-27 09:02:39 -05:00
Jose Diaz-Gonzalez
3656651cb9 refactor: wrap all 'run dokku' calls in /bin/bash calls 2018-12-27 09:02:26 -05:00
Jose Diaz-Gonzalez
a9920e7cf9 Merge pull request #3348 from dokku/packagecloud-token
Use correct name for packagecloud token when running CI commands
2018-12-27 08:35:07 -05:00
Jose Diaz-Gonzalez
ba8037b4bd feat: switch to move secure ssl ciphers
The cipher list is from from https://cipherli.st/ and will remove a few older browsers:

- Android 5.0
- Android 6.0
- Chrome 49 / XP SP3
- Firefox 31.3.0 ESR / Win 7
- Firefox 47 / Win 7  R
- IE 11 / Win Phone 8.1

I _think_ thats an okay drop - dropping Android kinda hurts, but we're far from the only ones dropping them from being served, and our users are free to override these settings on their own servers.

Closes #3343
2018-12-27 06:22:37 -05:00
Jose Diaz-Gonzalez
92ae1b678a feat: increase RSA bit keys to 4096
Refs #3343
2018-12-27 06:21:50 -05:00
Jose Diaz-Gonzalez
fbf19daff8 fix: use correct name for packagecloud token when running CI commands 2018-12-27 04:36:32 -05:00
Jose Diaz-Gonzalez
53d66246d8 feat: upgrade herokuish 2018-12-27 04:34:23 -05:00
Jose Diaz-Gonzalez
90105e3c6a Merge pull request #3339 from dokku/fix-global-cleanup
Properly check args when calling cleanup globally
2018-12-27 04:09:22 -05:00
Jose Diaz-Gonzalez
53ad759da8 Merge pull request #3344 from dokku/non-interactive-report
Allow running dokku report without needing an interactive shell
2018-12-27 04:08:36 -05:00
Jose Diaz-Gonzalez
72f531001e Merge pull request #3345 from dokku/report-all-flag
Allow triggering the full report for all apps via --all flag
2018-12-27 04:08:20 -05:00
Jose Diaz-Gonzalez
f49754de7a Merge pull request #3346 from dokku/overwrite-dokku-nginx-conf
feat: always overwrite the dokku.conf file for nginx
2018-12-27 04:08:02 -05:00
Jose Diaz-Gonzalez
8bc87ee656 feat: always overwrite the dokku.conf file for nginx
This is necessary as sometimes older config is shipped with Dokku, meaning that security directives - amongst others - are not properly updated.

Refs #3342
2018-12-26 23:05:01 -05:00
Jose Diaz-Gonzalez
e838fe7b96 feat: allow triggering the full report for all apps via --all flag 2018-12-26 23:03:00 -05:00
Jose Diaz-Gonzalez
a688a23d1a fix: Allow running dokku report without needing an interactive shell 2018-12-26 23:00:36 -05:00
dorian
ccfaeb0e36 Select only default dokku network IP 2018-12-23 20:54:20 +01:00
Jose Diaz-Gonzalez
f3c0c70b22 fix: properly check args when calling cleanup globally 2018-12-18 02:30:11 -05:00
Jose Diaz-Gonzalez
f5bb99c145 Release 0.13.4
# History

## 0.13.4

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.13.4/bootstrap.sh
sudo DOKKU_TAG=v0.13.4 bash bootstrap.sh
```

### Bug Fixes

- #3337: @josegonzalez Use correct container id variable for killing containers

### New Features

- #3338: @josegonzalez Redirect ps:retire output to a log file
2018-12-17 17:29:47 -05:00
Jose Diaz-Gonzalez
f61fcbc3b5 Merge pull request #3338 from dokku/redirect-retire-output
Redirect ps:retire output to a log file
2018-12-17 17:28:04 -05:00
Jose Diaz-Gonzalez
73fb626618 feat: Redirect ps:retire output to a log file
This will allow systems to properly monitor whether retiring old containers works.

Note that the file will be logrotated by the 20_events logrotate config.
2018-12-17 17:27:42 -05:00
Jose Diaz-Gonzalez
7a81f89442 Merge pull request #3337 from dokku/fix-cid
Use correct container id variable for killing containers
2018-12-17 17:26:09 -05:00
Jose Diaz-Gonzalez
ba157867c1 fix: Use correct container id variable for killing containers
The first pass at stop/kill would fail as the variable was incorrect.
2018-12-17 17:25:43 -05:00
Jose Diaz-Gonzalez
4f1cd2d30c Release 0.13.3
# History

## 0.13.3

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.13.3/bootstrap.sh
sudo DOKKU_TAG=v0.13.3 bash bootstrap.sh
```

### Bug Fixes

- #3330: @josegonzalez Ensure chowned properties always have a user and group set

### New Features

- #3334: @josegonzalez refactor: run every 5 minutes instead of 2
2018-12-12 16:05:32 -05:00
Jose Diaz-Gonzalez
803b55c6c2 Merge pull request #3330 from dokku/ensure-permissions
Ensure chowned properties always have a user and group set
2018-12-12 14:08:33 -06:00
Jose Diaz-Gonzalez
d90e7b68dc Merge pull request #3334 from dokku/josegonzalez-patch-1
refactor: run every 5 minutes instead of 2
2018-12-12 12:27:38 -06:00
Jose Diaz-Gonzalez
929f503fa3 refactor: run every 5 minutes instead of 2
2 is a bit agressive, but 5 will ensure there are no runs that coincide with each other.
2018-12-12 13:27:11 -05:00
Jose Diaz-Gonzalez
615119260d fix: ensure chowned properties always have a user and group set
Depending on the execution path, the variables may not be set at the top-level.

Closes #3328
2018-12-12 02:55:38 -05:00
Jose Diaz-Gonzalez
2f2136af09 Release 0.13.2
# History

## 0.13.2

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.13.2/bootstrap.sh
sudo DOKKU_TAG=v0.13.2 bash bootstrap.sh
```

### Bug Fixes

- #3329: @josegonzalez Avoid parsing missing file when retiring containers
- #3325: @wcalandro Add "--global" to dokku cleanup on dokku update

### Documentation

- #3326: @josegonzalez Add note to release on how to upgrade via the bootstrap script
2018-12-12 01:21:07 -05:00
Jose Diaz-Gonzalez
634a399748 Merge pull request #3329 from dokku/guard-missing-file
Avoid parsing missing file when retiring containers
2018-12-12 00:16:59 -06:00
Jose Diaz-Gonzalez
325e686b16 fix: avoid parsing missing file when retiring containers 2018-12-12 00:34:42 -05:00
Jose Diaz-Gonzalez
d702fae491 Merge pull request #3326 from dokku/release-update-note
Add note to release on how to upgrade via the bootstrap script
2018-12-05 01:27:23 -05:00
Jose Diaz-Gonzalez
eaaa73e642 docs: add note to release on how to upgrade via the bootstrap script 2018-12-05 01:26:13 -05:00
Jose Diaz-Gonzalez
aa0f7ccfa7 Merge pull request #3325 from wcalandro/wcalandro-patch-1
Add "--global" to dokku cleanup on dokku update
2018-12-05 01:20:39 -05:00
Wyatt Calandro
b1254b3edc Merge branch 'master' into wcalandro-patch-1 2018-12-04 22:27:59 -07:00
Wyatt Calandro
887633a3a3 Add "--global" to dokku cleanup on dokku update
This fixes the error "FAILED: Please specify an app or --global" on completion of dokku-update
2018-12-04 22:22:27 -07:00
Jose Diaz-Gonzalez
e2d7f7ea35 Release 0.13.1
# History

## 0.13.1

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.13.1/bootstrap.sh
sudo DOKKU_TAG=v0.13.1 bash bootstrap.sh
```

### Bug Fixes

- #3324: @josegonzalez Add missing source of config functions
2018-12-04 16:18:02 -05:00
Jose Diaz-Gonzalez
513bc74c55 Merge pull request #3324 from dokku/josegonzalez-patch-1
Add missing source of config functions
2018-12-04 16:14:17 -05:00
Jose Diaz-Gonzalez
5b9eff6114 fix: add missing source of config functions
Closes dokku/dokku#3323
2018-12-04 16:13:47 -05:00
Jose Diaz-Gonzalez
49a9d84342 Release 0.13.0
# History

## 0.13.0

### Bug Fixes

- #3312: @josegonzalez fix: keep track of failed containers regardless of docker kill output
- #3299: @josegonzalez Wrap script_bin in double-quotes
- #3295: @alexquick Sort config:show by key name
- #3288: @josegonzalez Wrap script binary in single quotes during executable check

### New Features

- #3302: @josegonzalez Add ability to check on app lock status via apps:locked command
- #3315: @aokon Upgrade herokuish to 0.4.5 version
- #3236: @josegonzalez Retire old containers
- #3307: @josegonzalez Add support for docker.io package
- #3301: @josegonzalez Add ability to sync packages to a new version of ubuntu
- #3286: @josegonzalez Sanitize docker inspect output with ps:inspect
- #3240: @josegonzalez Refactor Procfile handling to use go-procfile-util
- #3282: @josegonzalez Use create instead of run for faster and more reliable file copy from docker images
- #3280: @josegonzalez Better scheduler support
- #3259: @josegonzalez Check if script is executable when a full path is specified

### Documentation

- #3314: @royklutman Remove reference to non-existent DigitalOcean hosting plan
- #3313: @morenoh149 Indicate to user to specify hostname
- #3310: @josegonzalez Add a note to our issue template begging for money
- #3281: @josegonzalez Add documentation on custom error pages
2018-12-02 03:31:40 -05:00
Jose Diaz-Gonzalez
5ca4c769db Merge pull request #3312 from dokku/josegonzalez-patch-2
fix: keep track of failed containers regardless of docker kill output
2018-12-02 02:55:02 -05:00
Jose Diaz-Gonzalez
ab6dd96c50 Merge pull request #3314 from royklutman/do-vultr-small-machine
Remove reference to non-existent DigitalOcean hosting plan
2018-12-02 02:49:42 -05:00
Jose Diaz-Gonzalez
b7cc027a04 docs: remove digitalocean instance size reference.
[ci skip]
2018-12-02 02:49:17 -05:00
Jose Diaz-Gonzalez
eb804bfbbd Merge pull request #3299 from dokku/josegonzalez-patch-1
fix: wrap script_bin in double-quotes
2018-12-02 02:46:45 -05:00
Jose Diaz-Gonzalez
366a3cee81 Merge pull request #3302 from dokku/locked-command
Add ability to check on app lock status via apps:locked command
2018-12-02 02:03:00 -05:00
Jose Diaz-Gonzalez
cb3b5bdc28 feat: add ability to check on app lock status via apps:locked command
This allows users to further introspect on the state of the application.
2018-12-01 18:49:38 -05:00
Jose Diaz-Gonzalez
6b35cc3131 Merge pull request #3315 from aokon/herokuish-upgrade-to-0.4.5
feat: upgrade herokuish to 0.4.5 version
2018-11-21 07:20:47 -05:00
Adam Okoń
0fbbb10307 feat: upgrade herokuish to 0.4.5 version
The new version was released https://github.com/gliderlabs/herokuish/releases/tag/v0.4.5
2018-11-19 17:30:08 +01:00
Jose Diaz-Gonzalez
82bf74d7c9 Merge pull request #3313 from morenoh149/patch-1
Indicate to user to specify hostname
2018-11-17 01:10:15 -05:00
Harry Moreno
dd30525c27 Note dokku.me is hostname and note ssh-agent
[ci-skip]
2018-11-17 00:40:39 -05:00
Roy Klutman
ae8f614a81 Change DigitalOcean to Vultr as an example 2018-11-16 13:56:44 +01:00
Jose Diaz-Gonzalez
cf834f8ac8 fix: keep track of failed containers regardless of docker kill output
`docker kill` sometimes exits non-zero, meaning we don't keep track of logs for failed containers
2018-11-14 17:23:23 -05:00
Jose Diaz-Gonzalez
ea2e9fe348 Merge pull request #3236 from dokku/retire-old-containers
Retire old containers
2018-11-14 16:03:17 -05:00
Jose Diaz-Gonzalez
4b8e70075f Merge pull request #3310 from dokku/josegonzalez-patch-2
Add a note to our issue template begging for money
2018-11-05 18:11:21 -05:00
Jose Diaz-Gonzalez
068d83629f docs: Add a note to our issue template begging for money
Working for free sucks.

[ci skip]
2018-11-05 18:05:26 -05:00
Jose Diaz-Gonzalez
54d577a038 Merge pull request #3307 from dokku/josegonzalez-patch-2
feat: Add support for docker.io package
2018-11-05 11:23:00 -05:00
Jose Diaz-Gonzalez
2e41cb36de feat: Add support for docker.io package
This is new in Ubuntu Bionic, and should allow users to install without using upstream docker.

Note that we recommend installing from upstream where possible.

Closes #3297
2018-11-05 11:21:48 -05:00
Jose Diaz-Gonzalez
a468b3b17b Merge pull request #3301 from dokku/copy-packages
Add ability to sync packages to a new version of ubuntu
2018-11-05 00:20:58 -05:00
Jose Diaz-Gonzalez
07d64909a9 feat: Add ability to sync dokku packages to a new version of ubuntu
This will allow us to quickly roll out support for future versions of the OS.

[ci skip]
2018-11-05 00:19:04 -05:00
Jose Diaz-Gonzalez
769cff23fd fix: wrap script_bin in double-quotes
Refs #3259
2018-11-02 23:38:10 -04:00
Jose Diaz-Gonzalez
cf996b4a87 Merge pull request #3295 from alexquick/fix-config-order
[config] sort config:show by key name
2018-10-27 18:33:41 -04:00
Alex Quick
34efbbd570 [config] sort config:show by key name
resolves: #3293
2018-10-27 15:48:41 -04:00
Jose Diaz-Gonzalez
f83aba565f fix: properly chown ps folder 2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
c1b47dd248 fix: use correct path for lockfile 2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
ec47b1bcc7 refactor: set DOKKU_SYSTEM_USER and DOKKU_SYSTEM_GROUP at the top-level 2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
deeaf6dc41 fix: ensure path exists 2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
8a9c77a061 fix: pass lint 2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
d9fca6ac47 fix: correct syntax error 2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
38ed9bff39 feat: add a way to retire old containers scheduled by the docker-local plugin
These will be killed on a cron schedule, allowing us to ensure old containers don't run once memory pressure clears up - even across restarts.

Closes #3225
2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
14a1050a26 feat: add ps:retire command
This can be used to remove all old containers for a given deployment method.
2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
48842fc2f6 refactor: allow any function to attain a lock 2018-10-21 12:50:39 -04:00
Jose Diaz-Gonzalez
ba4db261ba Merge pull request #3288 from dokku/josegonzalez-patch-1
Wrap script binary in single quotes during executable check
2018-10-21 12:38:13 -04:00
Jose Diaz-Gonzalez
1c24585093 fix: wrap script binary in single quotes during executable check
Refs #3259

[ci skip]
2018-10-21 12:37:25 -04:00
Jonathon Coe
e16a7b5fe3 fix circle-ci build status flag (#3287) 2018-10-20 11:29:02 -05:00
Jose Diaz-Gonzalez
ea2443a7c2 Merge pull request #3286 from dokku/dokku-inspect
Sanitize docker inspect output with ps:inspect
2018-10-14 23:03:55 -04:00
Jose Diaz-Gonzalez
15a2b7cbce feat: sanitize docker inspect output with ps:inspect
Often-times, we will want to have the container inspect output for debugging purposes, but this process is:

- error prone, as the user needs to know what their containers are
- potentially insecure, as the output must be sanitized of sensitive data

Instead of making users wade through this process, we provide a helper `ps:inspect` command, that can be used to diagnose problems associated with containers that may or may not exist for an application.
2018-10-14 22:10:28 -04:00
Jose Diaz-Gonzalez
44d8eb4cb7 Merge pull request #3240 from dokku/3196-procfile-handling
Refactor Procfile handling to use go-procfile-util
2018-10-14 00:20:02 -04:00
Jose Diaz-Gonzalez
fd8d27d837 revert: permission and trace 2018-10-14 00:19:24 -04:00
Jose Diaz-Gonzalez
059d3dc159 fix: call run in order to override globals 2018-10-13 23:31:11 -04:00
Jose Diaz-Gonzalez
05240c56b6 fix: reference correct variable for procfile 2018-10-13 20:17:51 -04:00
Jose Diaz-Gonzalez
6f2e2d6aad chore: ensure the output gets formatted correctly 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
f992156dcf fix: use run for testing failed deploy_app 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
aee8b8b659 fix: use correct app when testing scaling of non-existent process types 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
5e06583055 feat: trace 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
cb0ad13278 fix: proc check only works when there is Procfile available 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
d63f1cc158 fix: expand variables 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
64c6437e4e hack: pull procfile if possible when setting ps:scale 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
2ec99bc853 hack: create the application after it gets destroyed 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
81935a8f31 feat: drop debugging info 2018-10-11 20:19:57 -04:00
Jose Diaz-Gonzalez
01a4440f39 fix: use correct test app 2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
0abc40ecca fix: use correct version of go-procfile-util 2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
7f6688c01a hack: log the procfile and more 2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
0d776ec2c8 fix: ensure we respect the herokuish start command 2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
95292bfcba fix: correct issue where we accidentally bailed when there was no error 2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
0292c4ee3b refactor: move get_cmd_from_procfile to ps/functions
Procfile handling should only be performed in the ps plugin
2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
afd101034d feat: verify that a process exists before scaling it
Refs #2582
Refs #3196
2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
b6fe31f9cb fix: call procfile-util correctly 2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
c924bdef04 feat: expand the PORT environment variable when provided
Refs #2793
Refs #3196
2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
2db8f93507 feat: error out on Procfile extraction if the procfile is invalid
Refs #2991
Refs #3196
2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
aeeb2e138f feat: install procfile-util 2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
d156cff7e4 chore: sort rpm dependencies 2018-10-11 20:19:56 -04:00
Jose Diaz-Gonzalez
2d1b11bd8c Merge pull request #3282 from dokku/3272-better-copy-from-image
feat: use create instead of run for faster and more reliable file copy from docker images
2018-10-07 18:59:46 -04:00
Jose Diaz-Gonzalez
58fcb01e08 hack: drop apt-key call for mysql key 2018-10-07 18:08:40 -04:00
Jose Diaz-Gonzalez
66948b9de4 feat: use create instead of run for faster and more reliable file copy from docker images
Closes #3272
2018-10-07 16:39:13 -04:00
Jose Diaz-Gonzalez
9aeee8189b Merge pull request #3281 from dokku/3239-error-page-docs
docs: add documentation on custom error pages
2018-10-06 18:47:37 -04:00
Jose Diaz-Gonzalez
b67a695e9e docs: add documentation on custom error pages
Closes #3239
[ci skip]
2018-10-06 18:47:01 -04:00
Jose Diaz-Gonzalez
c84304b33c Merge pull request #3280 from dokku/better-scheduler-support
Better scheduler support
2018-10-06 18:05:33 -04:00
Jose Diaz-Gonzalez
c441e7ec2c Merge pull request #3259 from dokku/josegonzalez-patch-1
feat: check if script is executable when a full path is specified
2018-10-06 16:43:33 -04:00
Robin Speekenbrink
7e990963f1 Make sure the universe repo is loaded into APT
this should fix #3278
2018-10-06 01:27:29 +02:00
Jose Diaz-Gonzalez
ed190527ce feat: allow overriding the scheduler globally
Being able to override globally is useful for cases where a user will _always_ want their applications to be globally distributed
2018-09-30 21:36:53 -04:00
Jose Diaz-Gonzalez
fabb18c55c feat: allow disabling the nginx-vhosts plugin by default
This allows us to force another plugin as the default vhost implementation, or disable it altogether in favor of some higher-level proxy implementation, such as one that integrates with service discovery.
2018-09-30 17:04:05 -04:00
Jose Diaz-Gonzalez
31adb13bde Release 0.12.13
# History

## 0.12.13

### New Features

- #3257: @josegonzalez Suppress output in git plugin during builds
- #3254: @michaelshobbs Update herokuish to 0.4.4

### Documentation

- #3270: @alexymik Correct typo in git documentation
- #3268: @josegonzalez Correct notice on ubuntu support
- #3247: @mimischi Fix typo in ps:stopall
- #3246: @dv Change DISABLE_CHOWN to disable-chown
2018-09-24 23:34:50 -04:00
Jose Diaz-Gonzalez
2102160cdb Merge pull request #3270 from alexymik/patch-1
Fix typo in git.md
2018-09-17 14:04:35 -04:00
Alexy Mikhailichenko
5ddb7eb983 Fix typo in git.md
'supportec' -> 'supported'
2018-09-17 13:52:22 -04:00
Jose Diaz-Gonzalez
b904895a61 Merge pull request #3268 from dokku/josegonzalez-patch-2
Fix notice on ubuntu support
2018-09-12 00:18:23 -04:00
Jose Diaz-Gonzalez
be0c315a12 docs: fix notice on ubuntu support 2018-09-12 00:02:22 -04:00
Stefan Pahlplatz
c55bfb650c Updated copyright from 2013-2017 to 2013-2018 (#3260) 2018-09-02 13:15:59 -05:00
Jose Diaz-Gonzalez
84227b972b feat: check if script is executable when a full path is specified
This fixes issues where developers may specify a binary to run but haven't given that binary executable permissions.
2018-08-31 00:15:22 -04:00
Jose Diaz-Gonzalez
9d15ef9395 Merge pull request #3257 from dokku/josegonzalez-patch-1
fix: suppress output in git plugin during builds
2018-08-25 10:38:54 -04:00
Jose Diaz-Gonzalez
16e4bc8f60 fix: suppress output in git plugin during builds 2018-08-25 01:52:20 -04:00
Michael Hobbs
a0cb2d932a Merge pull request #3254 from dokku/mh/chore/update-herokuish
update herokuish to 0.4.4
2018-08-21 09:05:18 -07:00
Michael Hobbs
70f522ecdd update herokuish to 0.4.4 2018-08-20 10:57:34 -07:00
Jose Diaz-Gonzalez
be941a7375 Merge pull request #3247 from mimischi/restartall
Fix typo in ps:stopall
2018-08-17 11:19:01 -05:00
Michael Gecht
b812637fe1 Fix typo in ps:stopall 2018-08-06 14:28:21 +02:00
Jose Diaz-Gonzalez
194d5c995b Merge pull request #3246 from dv/patch-1
Change DISABLE_CHOWN to disable-chown
2018-08-04 18:40:57 -04:00
David Verhasselt
7a8dd39ee8 Change DISABLE_CHOWN to disable-chown
The correct field is `disable-chown`, not `DISABLE_CHOWN`. Maybe it was in the past?
2018-08-04 13:13:44 +03:00
Jose Diaz-Gonzalez
09762cb35a Release 0.12.12
# History

## 0.12.12

### New Features

- #3244: @josegonzalez Allow disabling chown for persistent storage in scheduler-docker-local
2018-08-01 07:32:41 -04:00
Jose Diaz-Gonzalez
e2e263c783 Merge pull request #3244 from dokku/allow-chown-disable
feat: allow disabling chown for persistent storage in scheduler-docker-local
2018-08-01 07:31:55 -04:00
Jose Diaz-Gonzalez
7349c30cd9 feat: allow disabling chown for persistent storage in scheduler-docker-local
Some systems - such as a mounted read-only CIFS filesystem - do not fully support chown, and chowning should be considered optional for cases when the host os has already taken care of permissioning. This commit allows users to disable chown by setting a property on the scheduler-docker-local plugin.
2018-08-01 06:51:47 -04:00
Jose Diaz-Gonzalez
53c5d548f1 Release 0.12.11
# History

## 0.12.11

### Bug Fixes

- #3238: @josegonzalez Handle proxy issues in app renaming
- #3234: @mashrikt Unset GIT_QUARANTINE_PATH when updating repo submodule
- #3223: @josegonzalez Get the global scheduler if no app is specified
- #3218: @wcalandro Fix error text when using "dokku plugin:uninstall"

### New Features

- #3242: @josegonzalez Upgrade herokuish to 0.4.3
- #3241: @josegonzalez Add a subcommand for retrieving failed app deploy logs
- #3237: @josegonzalez Support --quiet header when showing all environment variables

### Documentation

- #3235: @josegonzalez Switch from ps:rebuild to ps:restart
- #3221: @josegonzalez Better callout for why env vars do not get applied to dockerfile builds
2018-07-29 20:35:49 -04:00
Jose Diaz-Gonzalez
aec7b6f7fb Merge pull request #3242 from dokku/herokuish-upgrade
feat: upgrade herokuish to 0.4.3
2018-07-29 20:32:22 -04:00
Jose Diaz-Gonzalez
1831848f89 feat: upgrade herokuish to 0.4.3 2018-07-29 20:31:53 -04:00
Jose Diaz-Gonzalez
f80b152c9b Merge pull request #3241 from dokku/failed-deploy-logs
feat: add a subcommand for retrieving failed app deploy logs
2018-07-29 20:28:15 -04:00
Jose Diaz-Gonzalez
db29029653 docs: clarify usage for multiple apps 2018-07-29 19:40:52 -04:00
Jose Diaz-Gonzalez
87ee233636 feat: add a header message 2018-07-29 19:40:39 -04:00
Jose Diaz-Gonzalez
cf99ac9a2c fix: use correct argument 2018-07-29 19:40:08 -04:00
Jose Diaz-Gonzalez
1538dc5dcb docs: clarify that the scheduler api is unstable
Also add missing dollar signs to variables.
2018-07-29 19:33:05 -04:00
Jose Diaz-Gonzalez
ec34b35a7f feat: allow retrieving failed logs for all apps 2018-07-29 19:32:05 -04:00
Jose Diaz-Gonzalez
f7169bf417 chore: clarify plugin trigger name 2018-07-29 19:31:20 -04:00
Jose Diaz-Gonzalez
f173c2f1c2 docs: add missing documentation for scheduler-failed plugin trigger 2018-07-29 19:30:45 -04:00
Jose Diaz-Gonzalez
78f467852e feat: add a subcommand for retrieving failed app deploy logs
This can be useful in cases where a developer wishes to see what error messages are available for a failed deploy, but does not wish to spelunk around `docker ps -a` output.

Note that the logs are not made available once a further deploy is triggered, or after the containers have been garbage collected.
2018-07-29 17:17:53 -04:00
Jose Diaz-Gonzalez
8b932971df Merge pull request #3238 from dokku/josegonzalez-patch-2
Handle proxy issues in app renaming
2018-07-28 02:20:04 -04:00
Jose Diaz-Gonzalez
66b2fb602f feat: implement proxy-clear-config
This will allow us to kill stale proxy configuration within apps, which is critical during application renames.

- redirect rmdir output to dev-null
- trigger a proxy-clear-config (new trigger) when renaming an application
  - The configuration will be rebuilt during the later `ps_rebuild`

Closes #3231
2018-07-28 01:20:06 -04:00
Jose Diaz-Gonzalez
df834f41f3 feat: add a test to prove that tls breaks app renames 2018-07-28 01:20:03 -04:00
Jose Diaz-Gonzalez
b0ac10bc11 Merge pull request #3237 from dokku/josegonzalez-patch-1
feat: support --quiet header when showing all environment variables
2018-07-26 14:41:56 -04:00
Jose Diaz-Gonzalez
b75547cff8 feat: support --quiet header when showing all environment variables
Closes #3229
2018-07-25 23:51:55 -04:00
Jose Diaz-Gonzalez
e8265ac642 Merge pull request #3234 from mashrikt/unset_git_quarantine_path
unset GIT_QUARANTINE_PATH when updating repo submodule
2018-07-25 23:49:45 -04:00
Jose Diaz-Gonzalez
029de873d7 Merge pull request #3235 from dokku/josegonzalez-patch-1
Switch from ps:rebuild to ps:restart
2018-07-25 22:45:14 -04:00
Jose Diaz-Gonzalez
2679bf3709 docs: switch from ps:rebuild to ps:restart
A rebuild from source is not generally required here.
2018-07-25 22:44:47 -04:00
Tahzib Mashrik
6fb4adf87f unset GIT_QUARANTINE_PATH when updating repo submodule 2018-07-26 03:06:01 +06:00
Jose Diaz-Gonzalez
c9de100dd9 feat: add container id to retire-container-failed arguments (#3227)
Refs dokku/dokku#3225
2018-07-09 10:27:24 -05:00
Jose Diaz-Gonzalez
f6fc32a074 feat: allow silencing headers on storage:list output (#3224) 2018-07-05 18:42:04 -05:00
Jose Diaz-Gonzalez
019e80d60a Merge pull request #3223 from dokku/josegonzalez-patch-1
Get the global scheduler if no app is specified
2018-07-05 10:49:07 -04:00
Jose Diaz-Gonzalez
06f8237196 fix: get the global scheduler if no app is specified 2018-07-04 15:31:03 -04:00
Jose Diaz-Gonzalez
8fa869fab2 Merge pull request #3221 from dokku/josegonzalez-patch-1
docs: better callout for why env vars do not get applied to dockerfile builds
2018-06-25 12:15:44 -04:00
Jose Diaz-Gonzalez
ed744d05e1 docs: better callout for why env vars do not get applied to dockerfile builds
[ci skip]
2018-06-25 12:15:24 -04:00
Jose Diaz-Gonzalez
0023b6135a Merge pull request #3218 from wcalandro/master
Fix error text when using "dokku plugin:uninstall"
2018-06-19 13:41:15 -04:00
Wyatt Calandro
2b709fb8e8 Fix error text when using "dokku plugin:uninstall" 2018-06-19 10:04:54 -07:00
Jose Diaz-Gonzalez
3bc5e780da Release 0.12.10
# History

## 0.12.10

### New Features

- #3214: @josegonzalez Add net-tools as a dependency to debian installs
2018-06-09 21:29:45 -04:00
Jose Diaz-Gonzalez
2fa7a1ab5f Merge pull request #3214 from dokku/josegonzalez-patch-1
Add net-tools as a dependency to debian installs
2018-06-09 21:28:48 -04:00
Jose Diaz-Gonzalez
f34a16846f feat: add net-tools as a dependency to debian installs
Ubuntu has been slimming down their installations recently, so requiring net-tools fixes usage issues for many commonly installed plugins (such as the datastore plugins).
2018-06-09 20:49:38 -04:00
Jose Diaz-Gonzalez
a2177ef57f Release 0.12.9
# History

## 0.12.9

### Bug Fixes

- #3212: @josegonzalez Add missing config source
2018-06-08 17:23:30 -04:00
Jose Diaz-Gonzalez
28619164c4 Merge pull request #3212 from dokku/josegonzalez-patch-1
Add missing config source
2018-06-08 17:22:59 -04:00
Jose Diaz-Gonzalez
ab376f0f1a fix: add missing config source 2018-06-08 14:24:33 -04:00
Jose Diaz-Gonzalez
44cb90eff1 Release 0.12.8
# History

## 0.12.8

### Bug Fixes

- #3211: @josegonzalez Add missing source of config/functions

### Documentation

- #3204: @znz Add `--no-restart` to `config:unset` of `config:help`
- #3203: @josegonzalez Clarify issue template
2018-06-04 12:41:35 -04:00
Jose Diaz-Gonzalez
2584d958e9 Merge pull request #3211 from dokku/josegonzalez-patch-1
fix: add missing source of config/functions
2018-06-04 12:40:32 -04:00
Jose Diaz-Gonzalez
161d877e8b fix: add missing source of config/functions
Sometimes a deploy will complain if this doesn't exist.
2018-06-04 11:42:42 -04:00
Jose Diaz-Gonzalez
b98154e410 Merge pull request #3204 from znz/doc-of-config-uunset--no-restart
Add `--no-restart` to `config:unset` of `config:help`
2018-05-25 10:57:26 -04:00
Kazuhiro NISHIYAMA
7cb0d7fb58 Update output of config:help in docs
[ci skip]
2018-05-25 19:51:35 +09:00
Kazuhiro NISHIYAMA
c77d323f1f Add --no-restart to config:unset of config:help 2018-05-25 19:50:15 +09:00
Jose Diaz-Gonzalez
3ae416955f Update ISSUE_TEMPLATE.md 2018-05-23 11:41:58 -04:00
Jose Diaz-Gonzalez
7480fd51ee Merge pull request #3203 from dokku/josegonzalez-patch-1
Clarify issue template
2018-05-23 11:20:54 -04:00
Jose Diaz-Gonzalez
730e8f73d4 docs: Cleanup Issue Template
- reorder things to make it clearer to the user what they are filing
- use headers for various sections
- separate the `dokku report` section to increase its importance

[ci skip]
2018-05-23 11:12:25 -04:00
Jose Diaz-Gonzalez
d3118b4d07 Release 0.12.7
# History

## 0.12.7

### Bug Fixes

- #3200: @josegonzalez fix: correct bash-completion integration

### New Features

- #3199: @josegonzalez Update herokuish to 0.4.2
- #3198: @josegonzalez Cleanup temporary changes during betafish releases
2018-05-20 19:10:25 -04:00
Jose Diaz-Gonzalez
fb79d0f2e8 Merge pull request #3200 from dokku/fix-bash-completion
fix: correct bash-completion integration
2018-05-20 19:08:09 -04:00
Jose Diaz-Gonzalez
1bbde8fd94 Merge pull request #3199 from dokku/update-herokuish
Update herokuish to 0.4.2
2018-05-20 19:07:12 -04:00
Jose Diaz-Gonzalez
ee8bdd4886 Merge pull request #3198 from dokku/cleanup-betafish-releases
Cleanup temporary changes during betafish releases
2018-05-20 19:06:45 -04:00
Jose Diaz-Gonzalez
e36db73864 feat: add a simple build process for herokuish releases
These should be moved to the herokuish repository, but as Dokku manages those releases, it's best to at least place these scripts here.
2018-05-20 19:06:31 -04:00
Jose Diaz-Gonzalez
a3a50f193c feat: update herokuish to 0.4.2 2018-05-20 19:06:01 -04:00
Jose Diaz-Gonzalez
7d917589a4 fix: correct bash-completion integration
The previous method did not work once the file was moved to the correct location.

[ci skip]
2018-05-20 19:05:36 -04:00
Jose Diaz-Gonzalez
aad283a981 fix: add missing default value for exit code during dokku-update releases 2018-05-20 19:03:09 -04:00
Jose Diaz-Gonzalez
047626909c fix: cleanup temporary changes during betafish releases
[ci skip]
2018-05-20 19:02:18 -04:00
Jose Diaz-Gonzalez
5ab170a60a Release 0.12.6
# History

## 0.12.6

### Bug Fixes

- #3193: @josegonzalez Install bash-completion files correctly
- #3179: @josegonzalez Ignore issues with popd when OS versions with stricter security
- #3177: @philm ensure dokku-redeploy runs when docker is stopped then started
- #3176: @josegonzalez Detect mixed running status on service start

### New Features

- #3195: @josegonzalez Allow lower versions of docker-engine
- #3181: @malixsys Adding support for `http2_push_preload` to nginx 1.13.9+ configuration
- #3183: @josegonzalez Unskip initial herokuish test
- #3175: @josegonzalez Implement bash-completion for commands

### Documentation

- #3197: @josegonzalez Add a tutorial for deploying applications via gitlab ci
- #3194: @josegonzalez Clarify why dokku report information is useful
- #3189: @josegonzalez Correct issue with adding a user remotely
2018-05-19 15:13:50 -04:00
Jose Diaz-Gonzalez
ddd5526fed fix: add missing link to tutorial
[ci skip]
2018-05-19 14:19:16 -04:00
Jose Diaz-Gonzalez
b716b61099 Merge pull request #3197 from dokku/2975-tutorials
Add a tutorial for deploying applications via gitlab ci
2018-05-19 14:17:54 -04:00
Jose Diaz-Gonzalez
cadf876d37 docs: Add a tutorial for deploying applications via gitlab ci
This also documents a review app workflow, and hints towards future extensions of the platform.

Closes #2975

[ci skip]
2018-05-19 14:17:05 -04:00
Jose Diaz-Gonzalez
088608d160 docs: add warning to running on external volumes 2018-05-19 14:16:50 -04:00
Jose Diaz-Gonzalez
4f9b00dfcb Merge pull request #3195 from dokku/lower-docker-version
feat: allow lower versions of docker-engine
2018-05-19 03:34:55 -04:00
Jose Diaz-Gonzalez
1d9479e532 feat: allow lower versions of docker-engine 2018-05-19 03:32:57 -04:00
Jose Diaz-Gonzalez
93eb8be806 Merge pull request #3194 from dokku/josegonzalez-patch-1
Clarify why dokku report information is useful
2018-05-19 03:04:17 -04:00
Jose Diaz-Gonzalez
31d4851089 docs: clarify why dokku report information is useful
Also note that it can be run without any arguments.

Refs #3192
2018-05-19 03:03:59 -04:00
Jose Diaz-Gonzalez
e98d54f0bc Merge pull request #3181 from malixsys/3165_support_http2_push_reload
Adding support for `http2_push_preload` to nginx 1.13.9+ configuration
2018-05-19 02:23:19 -04:00
Jose Diaz-Gonzalez
f7474347b6 Merge pull request #3193 from dokku/fix-bash-completion
Install bash-completion files correctly
2018-05-19 02:18:22 -04:00
Jose Diaz-Gonzalez
640f78a23c fix: put bash-completion files in correct place
[ci skip]
2018-05-19 02:17:39 -04:00
Jose Diaz-Gonzalez
136c868904 chore: move http2_push logic into single line
[ci skip]
2018-05-19 02:14:37 -04:00
Jose Diaz-Gonzalez
1587b32a30 Merge pull request #3189 from dokku/josegonzalez-patch-1
docs: correct issue with adding a user remotely
2018-05-13 14:53:40 -04:00
Jose Diaz-Gonzalez
cb7b1f4ebd docs: correct issue with adding a user remotely
Closes #3188

[ci skip]
2018-05-13 14:53:24 -04:00
Jose Diaz-Gonzalez
6df62d052a Merge pull request #3183 from dokku/josegonzalez-patch-1
chore: unskip initial herokuish test
2018-05-04 15:30:18 -04:00
Jose Diaz-Gonzalez
c7ce9dc89c chore: unskip initial herokuish test
This was previously skipped on circleci 1.0 but 2.0 apparently has full `docker exec` support.
2018-05-04 14:04:39 -04:00
malixsys
5da8bcc3b5 Adding support for http2_push_preload to nginx 1.13.9+ configuration 2018-05-01 12:58:16 -04:00
Jose Diaz-Gonzalez
aca8df1b09 Merge pull request #3179 from dokku/3178-popd
Ignore issues with popd when OS versions with stricter security
2018-05-01 01:24:33 -04:00
Jose Diaz-Gonzalez
87e9bea6da fix: ignore issues with popd when OS versions with stricter security
Refs #2978
Closes #3178
2018-05-01 00:02:08 -04:00
Jose Diaz-Gonzalez
aed99f6193 Merge pull request #3177 from HealthcareBlocks/redeploy-systemd-always-restart
ensure dokku-redeploy runs when docker is stopped then started
2018-04-28 15:06:59 -04:00
Jose Diaz-Gonzalez
f115815ced Merge pull request #3176 from dokku/2772-non-mixed-start
Detect mixed running status on service start
2018-04-28 15:06:19 -04:00
Phil Misiowiec
900e4ac94d ensure dokku-redeploy runs when docker is stopped then started 2018-04-28 09:24:12 -07:00
Jose Diaz-Gonzalez
855090c9e7 fix: minor deprecated code cleanup 2018-04-28 01:27:34 -04:00
Jose Diaz-Gonzalez
9b41f7a74e fix: use updated fn-ps-is-app-running function to determine an application's status
In some cases, a single allocation for a service may not be running, but the others will, and `is_app_running` will return the wrong thing.

Closes #2772
2018-04-28 01:21:26 -04:00
Jose Diaz-Gonzalez
8d07ffe775 refactor: deprecate is_app_running in favor of ps#fn-ps-is-app-running
This will allow us to _actually_ introspect on the running state of an application. In certain cases, the detected state can be "mixed", meaning that we may need to take action, depending on what we want to do in mixed mode.
2018-04-28 01:19:23 -04:00
Jose Diaz-Gonzalez
e47f6e5803 fix: use dokku_log_warn helper for warning messages in the ps plugin 2018-04-28 01:13:48 -04:00
Jose Diaz-Gonzalez
436574a9ad Merge pull request #3175 from dokku/2095-bash-completion
Implement bash-completion for commands
2018-04-28 01:05:44 -04:00
Jose Diaz-Gonzalez
8ac04392f0 fix: add missing source 2018-04-27 13:44:29 -04:00
Jose Diaz-Gonzalez
5bfb43222b fix: add missing source 2018-04-27 12:33:33 -04:00
Jose Diaz-Gonzalez
7ee87c7aa5 chore: drop package-based bash-completion priming
This is now down in the plugin:install step.
2018-04-27 04:12:30 -04:00
Jose Diaz-Gonzalez
172779f3d6 feat: recache bash-completion output whenever actions are taken on plugins
While this slows down those actions, it ensures we never have out of date information.
2018-04-27 04:11:50 -04:00
Jose Diaz-Gonzalez
75ea7862cc feat: prime the bash-completion output
While not ideal, users can manually update the completion-cache by reconfiguring the installed package, or updating Dokku.
2018-04-27 04:04:36 -04:00
Jose Diaz-Gonzalez
6ea86f2714 feat: create bash-completion file
This only completes the command names - not any arguments - and also relies on a completion cache as the response from Dokku for help output can be slow.

Closes #2095
2018-04-27 04:02:23 -04:00
Jose Diaz-Gonzalez
a6b047805c feat: ensure the dokku binary respects the quiet flag
Previously, there were many headers being output that were unable to be removed via the --quiet flag.
2018-04-27 03:55:00 -04:00
Jose Diaz-Gonzalez
3ce148dacd Release 0.12.5
# History

## 0.12.5

### Bug Fixes

- #3173: @josegonzalez fix: do not output error message twice

### New Features

- #3172: @josegonzalez feat: Add the ability to ignore existing applications during a git clone
- #3171: @josegonzalez Allow users to override the reported app url
- #3170: @josegonzalez Add ps:startall command

### Documentation

- #3159: @zuck Improve docs for default site with HTTPS
2018-04-27 01:28:40 -04:00
Jose Diaz-Gonzalez
67dcf34f7a Merge pull request #3173 from dokku/silence-extra-error-message
fix: do not output error message twice
2018-04-27 01:25:13 -04:00
Jose Diaz-Gonzalez
db635841f5 Merge pull request #3172 from dokku/clone-skip-existing
feat: Add the ability to ignore existing applications during a git clone
2018-04-27 01:24:26 -04:00
Jose Diaz-Gonzalez
970b6806c7 fix: do not output error message twice
It was output twice because stderr is not silenced and `get_running_image_tag` was called _before_ `verify_app_name`.
2018-04-27 00:28:17 -04:00
Jose Diaz-Gonzalez
1dfa02924d feat: Add the ability to ignore existing applications during a git clone
This makes it possible to create cloned apps if and only if they haven't already been created - a useful feature for review apps.
2018-04-27 00:03:19 -04:00
Jose Diaz-Gonzalez
380e8affba Merge pull request #3171 from dokku/override-urls
Allow users to override the reported app url
2018-04-26 20:05:49 -04:00
Jose Diaz-Gonzalez
725dd8b2a6 Merge pull request #3159 from zuck/patch-1
Improve docs for default site with HTTPS
2018-04-26 19:51:39 -04:00
Jose Diaz-Gonzalez
ff27908dfd docs: cleanup ssl wildcard docs 2018-04-26 19:51:27 -04:00
Jose Diaz-Gonzalez
e6762f2439 feat: allow users to override the reported app url
This is useful in cases where the app url has some "interesting" structure - such as a subdomain or scheme change - for a specific installation.

Closes #3160
2018-04-26 19:21:29 -04:00
Jose Diaz-Gonzalez
954d20bd1e Merge pull request #3170 from dokku/ps-startall
Add ps:startall command
2018-04-26 18:18:47 -04:00
Jose Diaz-Gonzalez
792b36d5cc feat: add ps:startall command 2018-04-26 17:34:06 -04:00
Jose Diaz-Gonzalez
3f4278ec1d Release 0.12.4
# History

## 0.12.4

### Bug Fixes

- #3168: @josegonzalez Use correct variable name when writing deploy-branch value
2018-04-20 14:55:12 -04:00
Jose Diaz-Gonzalez
a185142170 Merge pull request #3168 from dokku/josegonzalez-patch-1
Use correct variable name when writing deploy-branch value
2018-04-20 14:20:50 -04:00
Jose Diaz-Gonzalez
24a30c8d4b fix: use correct variable name when writing deploy-branch value
Closes #3158
2018-04-20 14:20:26 -04:00
Jose Diaz-Gonzalez
3c7e5730ec Release 0.12.3
# History

## 0.12.3

### Bug Fixes

- #3156: @josegonzalez fix: ensure we _always_ include all types in history output

### Documentation

- #3163: @josegonzalez Better apt install formatting

### Other

- #3153: @scjody Allow specifying a separate DOKKU_HOST_ROOT
2018-04-17 10:52:49 -04:00
Jose Diaz-Gonzalez
c1c1cdd25f Merge pull request #3153 from plotly/separate-data-root-for-docker-binds
Allow specifying a separate DOKKU_HOST_ROOT
2018-04-16 20:12:09 -04:00
Jody McIntyre
beea394822 Merge branch 'master' into separate-data-root-for-docker-binds 2018-04-16 18:54:58 -04:00
Jody McIntyre
1ad89bf53b Add tests of cache bind directory 2018-04-16 18:52:51 -04:00
Emanuele Bertoldi
28f76c5ae0 Merge branch 'master' into patch-1 2018-04-16 21:16:33 +02:00
Jose Diaz-Gonzalez
94a1f895d0 Merge pull request #3163 from dokku/better-install-formatting
Better apt install formatting
2018-04-15 15:08:27 -04:00
Jose Diaz-Gonzalez
6ad694653a docs: fix styling to ensure we don't add wrapping 2018-04-14 15:07:48 -04:00
Jose Diaz-Gonzalez
724c059721 docs: simplify grep 2018-04-14 15:06:32 -04:00
Emanuele Bertoldi
6b78375cdc Save some chars 2018-04-14 01:12:49 +02:00
Emanuele Bertoldi
9087664667 Expand docs for default site over HTTPS 2018-04-14 01:10:56 +02:00
Emanuele Bertoldi
418ecf67c2 Improve docs for default site with HTTPS
Provide a working solution of default site configuration for both HTTP and HTTPS requests.
2018-04-13 01:56:01 +02:00
Salvatore Ferrucci
dc2bdbc366 remove ls from command's help (#3157) 2018-04-11 07:30:31 -05:00
Jose Diaz-Gonzalez
08a43c1604 Merge pull request #3156 from dokku/fix-history
fix: ensure we _always_ include all types in history output
2018-04-10 20:35:37 -04:00
Jose Diaz-Gonzalez
f5f1eebf63 fix: ensure we _always_ include all types in history output
In some cases, we might miss pull requests where there is more than one 'type' label, causing that pull request to be omitted from the history. This change ensures we always include pull requests in the change log
2018-04-10 20:34:26 -04:00
Jose Diaz-Gonzalez
0117cbffaa Release 0.12.2
# History

## 0.12.2

### Bug Fixes

- #3155: @josegonzalez fix: re-add is_container_running
2018-04-10 20:23:34 -04:00
Jose Diaz-Gonzalez
4187a80ff6 Merge pull request #3155 from dokku/re-add-function
fix: re-add is_container_running
2018-04-10 20:23:15 -04:00
Jose Diaz-Gonzalez
eb3866c636 fix: re-add is_container_running
As this was not strictly announced in our migration guide, removing it is a bc-incompatible change we are not comfortable with. We may wish to remove it in the future
2018-04-10 20:22:31 -04:00
Jose Diaz-Gonzalez
10fed6ecf0 Update purge-cache.go 2018-04-10 14:12:52 -04:00
Jose Diaz-Gonzalez
9c5cb7d0f0 Update functions 2018-04-10 14:12:10 -04:00
Jose Diaz-Gonzalez
9b72c93a57 Update rename 2018-04-10 14:11:10 -04:00
Jose Diaz-Gonzalez
8cb95063d2 Update clone 2018-04-10 14:10:34 -04:00
Jose Diaz-Gonzalez
5f9a91aac1 Update clone 2018-04-10 14:10:06 -04:00
Jose Diaz-Gonzalez
02af8398c4 Update pre-delete 2018-04-10 14:09:43 -04:00
Jose Diaz-Gonzalez
23a53b5034 Update exec-app-json-scripts 2018-04-10 14:09:29 -04:00
Jose Diaz-Gonzalez
e5aec5b141 Update pre-delete 2018-04-10 14:08:21 -04:00
Jose Diaz-Gonzalez
4e88c534b7 Update exec-app-json-scripts 2018-04-10 14:07:24 -04:00
Jose Diaz-Gonzalez
93dd5c72ec Update dokku 2018-04-10 14:05:34 -04:00
Jody McIntyre
aa5561b781 Use DOKKU_ROOT_ON_HOST for Docker bind mounts 2018-04-09 17:51:14 -04:00
Jody McIntyre
13bd5864b3 Add DOKKU_ROOT_ON_HOST variable
This is to be used in place of `DOKKU_ROOT` when we need to refer to a
path on the system where the Docker daemon is being run; if `dokku` is
running in a container this may be different from the regular
`DOKKU_ROOT`.
2018-04-09 17:44:32 -04:00
Jose Diaz-Gonzalez
6f2cf34f10 Release 0.12.1
# History

## 0.12.1

### Bug Fixes

- #3151: @josegonzalez fix: include missing config/functions source
2018-04-09 09:42:57 -04:00
Jose Diaz-Gonzalez
57cc3ccefe Merge pull request #3151 from dokku/fix-nginx-upgrades
fix: include missing config/functions source
2018-04-09 09:37:54 -04:00
Jose Diaz-Gonzalez
aa5600271a fix: include missing config/functions source
Closes #3150
2018-04-09 09:37:25 -04:00
Jose Diaz-Gonzalez
ea0089b207 Release 0.12.0
# History

## 0.12.0

### Bug Fixes

- #3146: @josegonzalez Fix non ubuntu installs
- #3138: @josegonzalez Use correct path for /etc/default file
- #3137: @josegonzalez Ensure we can disable setting the rev-env-var
- #3131: @axilleas Capitalize log sentence when renaming containers
- #3128: @Modicrumb Improve windows vagrant experience
- #3105: @znz Follow renaming from deploy-method to deploy-source
- #3101: @josegonzalez Handle stopped nginx during debian installation

### New Features

- #3141: @josegonzalez Centralize app existence checks into the apps plugin
- #3147: @josegonzalez Create proxy:ports-set call
- #3145: @josegonzalez Add report trigger
- #3144: @josegonzalez Increase curl max timeout to 600 seconds (10 minutes)
- #3107: @znz Remove unused password in ssl cert generation
- #3095: @josegonzalez Migrate env for NGINX_* to PROXY_*
- #3140: @josegonzalez Add newline to config:get output
- #3139: @josegonzalez Add ability to initialize a git repository out of band
- #3111: @josegonzalez Upgrade herokuish to 0.4.0
- #3110: @josegonzalez Upgrade herokuish to 0.3.36
- #3106: @znz Remove unnecessary shellcheck disable
- #3098: @josegonzalez Pull herokuish from docker hub when installing via package
- #3100: @josegonzalez Properly handle invalid process type entries during DOKKU_SCALE generation
- #3097: @josegonzalez Update herokuish to 0.3.35

### Documentation

- #3148: @josegonzalez Use consistent terms for domains, apps, and commands
- #3135: @josegonzalez Revert "Clarify that the checks plugin only matches content start"
- #3134: @tomdyson Fix typo in upgrading docs
- #3119: @TomasHubelbauer Link through to the application deployment page after the installation
- #3118: @Tyilo Clarify that the checks plugin only matches content start
- #3113: @ilyapoz Fix proxy management link
- #3112: @josegonzalez Minor doc css fixes
- #3104: @sarendsen Add dokku-limit to plugins documentation
- #3108: @znz Update plugin list output
2018-04-07 17:16:14 -04:00
Jose Diaz-Gonzalez
8d90477d44 fix: add missing hook 2018-04-07 16:39:38 -04:00
Jose Diaz-Gonzalez
eaed0b78cf Merge pull request #3141 from dokku/use-apps-exists
Use apps_exists helper where appropriate
2018-04-07 16:31:29 -04:00
Jose Diaz-Gonzalez
cf6fed82fb Merge pull request #3147 from dokku/ports-set
Create proxy:ports-set call
2018-04-07 15:53:12 -04:00
Jose Diaz-Gonzalez
72f53f9f1b refactor: use apps_exists helper where appropriate
This centralizes the logic around checking if an application exists.
2018-04-07 15:04:51 -04:00
Jose Diaz-Gonzalez
13ffd960d9 feat: create proxy:ports-set call
In some cases, it may be useful to completely override the set ports for a given application - such as on initial deploy when there is no global domain set. This change also further allows us to handle automation in a smoother fashion.
2018-04-07 14:48:18 -04:00
Jose Diaz-Gonzalez
5b4d6dc6eb Merge pull request #3148 from dokku/consistent-voice
Use consistent terms for domains, apps, and commands
2018-04-07 14:22:08 -04:00
Jose Diaz-Gonzalez
b3f7db6d95 Merge pull request #3146 from dokku/fix-non-ubuntu-release
Fix non ubuntu installs
2018-04-07 14:20:48 -04:00
Jose Diaz-Gonzalez
b10bfc62d7 docs: consistently reference dokku.me 2018-04-07 14:19:14 -04:00
Jose Diaz-Gonzalez
85f180d43a docs: consistently reference command instead of subcommand 2018-04-07 14:16:04 -04:00
Jose Diaz-Gonzalez
d65cea7d47 docs: consistently reference node-js-app in the documentation 2018-04-07 14:13:55 -04:00
Jose Diaz-Gonzalez
dae4c211f2 fix: correct version for scheduler-docker-local plugin 2018-04-07 13:31:48 -04:00
Jose Diaz-Gonzalez
7e84725b55 fix: drop unsupported bullseye 2018-04-07 13:31:29 -04:00
Jose Diaz-Gonzalez
c7004c3ff9 feat: update docs to ensure devs always install from a real deb repo 2018-04-07 13:18:20 -04:00
Jose Diaz-Gonzalez
8cec6ee318 fix: always reference trusty as default
It is currently where we run CI, so I trust - heh - that as a default more than anything else
2018-04-07 13:17:34 -04:00
Jose Diaz-Gonzalez
83c39cee30 chore: drop unused make targets 2018-04-07 13:05:55 -04:00
Jose Diaz-Gonzalez
7661116858 fix: ensure we handle all ubuntu pushes 2018-04-07 13:05:43 -04:00
Jose Diaz-Gonzalez
2bf67dff96 chore: fix shellcheck 2018-04-07 13:03:12 -04:00
Jose Diaz-Gonzalez
4078995eeb fix: cleanup release process for non-ubuntu systems 2018-04-07 12:59:18 -04:00
Jose Diaz-Gonzalez
a9e8890fe1 Merge pull request #3145 from dokku/report-trigger
Add report trigger
2018-04-07 09:38:15 -04:00
Jose Diaz-Gonzalez
313c41e2d1 docs: update ISSUE_TEMPLATE 2018-04-07 04:50:52 -04:00
Jose Diaz-Gonzalez
4aac1fd936 feat: add report trigger
This allows users to quickly show the state of any configured application, as well as the state of their server. In doing so, we make it easy for them to provide information necessary for debugging in a single command.
2018-04-07 04:49:21 -04:00
Jose Diaz-Gonzalez
09fddd11c4 Merge pull request #3144 from dokku/3142-increase-curl-timeouts
Increase curl max timeout to 600 seconds (10 minutes)
2018-04-07 02:58:37 -04:00
Jose Diaz-Gonzalez
a21761d48d feat: indent report output 2018-04-07 01:35:16 -04:00
Jose Diaz-Gonzalez
c90486547f feat: increase curl max timeout to 600 seconds (10 minutes)
Closes #3142
2018-04-07 01:09:19 -04:00
Jose Diaz-Gonzalez
69ce54626a Merge pull request #3109 from dokku/scheduler
Refactor container scheduling into it's own plugin
2018-04-07 00:23:56 -04:00
Jose Diaz-Gonzalez
3ca8f3c3dc docs: add documentation on the docker-local scheduler 2018-04-07 00:21:06 -04:00
Jose Diaz-Gonzalez
39d6bb554a chore: standardize on app 2018-04-07 00:08:30 -04:00
Jose Diaz-Gonzalez
a95a69e6fc fix: ensure all the scheduler hooks are output in event logs 2018-04-07 00:07:18 -04:00
Jose Diaz-Gonzalez
94fcabea15 feat: properly document all new plugin triggers 2018-04-07 00:05:30 -04:00
Jose Diaz-Gonzalez
e8972ff5a0 scratch 2018-04-06 23:18:00 -04:00
Jose Diaz-Gonzalez
78503ed178 feat: handle case where old, renamed containers may still be running during ps:restore 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
867e3317aa chore: minor cleanup to container and argument handling 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
85b00385a4 feat: implement docker-local cleanup hook 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
c621b3ed69 chore: drop unused function 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
894984a002 hack: temp-fix for renames 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
b92dc14b68 feat: add ability to copy a single plugin over 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
00f4fa0aed refactor: move pre-deploy to scheduler-docker-local plugin 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
d6e474f451 feat: move check-deploy to scheduler-docker-local plugin 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
0b9d4b2580 feat: refer to container as dead instead of missing when inspect fails 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
a8d42ea8be feat: use is_container_status everywhere 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
7a6d771689 fix: add missing source 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
3f1de1fd10 refactor: drop all application-related docker code from apps plugin 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
46f912659f fix: make triggers executable 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
06a5ac9fc7 refactor: move docker-related commands from tags plugin into scheduler-docker-local plugin 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
8474c72a10 refactor: move container stopping into new scheduler-stop plugin trigger 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
da1ea2dda8 refactor: drop unmaintained ls subcommand
The correct way to handle getting the status should be ps:report.

Also cleaned up an issue where ps:report failed to catch errors for non-running containers.
2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
50a98db8e6 refactor: move container file cleanup/renames to scheduler-docker-local plugin 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
331d58c62b fix: trigger must be executable 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
5cada188d4 feat: move deploy logic into scheduler-docker-local plugin 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
56b89ad07a feat: implement run command in scheduler-docker-local plugin 2018-04-06 22:53:02 -04:00
Jose Diaz-Gonzalez
b01d9e9a87 Merge pull request #3107 from znz/remove-unused-password
Remove unused password
2018-04-03 11:23:10 -04:00
Jose Diaz-Gonzalez
293b7fd482 Merge pull request #3095 from dokku/2823-proxy-env-vars
Migrate env for NGINX_* to PROXY_*
2018-04-03 10:27:09 -04:00
Jose Diaz-Gonzalez
52bb7c1c6a Merge pull request #3140 from dokku/josegonzalez-patch-1
feat: add newline to config:get output
2018-04-02 01:41:23 -04:00
Jose Diaz-Gonzalez
cf45ccb040 feat: ignore shellcheck SC2191 2018-04-02 00:24:43 -04:00
Jose Diaz-Gonzalez
f48a6e1834 fix: remove local use in install hook 2018-04-02 00:24:43 -04:00
Alexis Tyler
61f1060c69 fix old env being passed 2018-04-02 00:24:43 -04:00
Alexis Tyler
f054b30086 fix missing function 2018-04-02 00:24:43 -04:00
Alexis Tyler
71bc198cec inline nginx migrate function 2018-04-02 00:24:43 -04:00
Alexis Tyler
dc0404dbf1 add better logging to nginx migrate and fix indentation 2018-04-02 00:24:43 -04:00
Alexis Tyler
d3c9e80fcb deprecate usage of NGINX_* in custom config 2018-04-02 00:24:43 -04:00
Alexis Tyler
85a7956876 add last PROXY conversions 2018-04-02 00:24:43 -04:00
Alexis Tyler
4c3a0801f7 fix review and switch DOKKU_NGINX to DOKKU_PROXY in scripts/docs 2018-04-02 00:24:43 -04:00
Alexis Tyler
7095eac052 migrate env for NGINX_* to PROXY_* 2018-04-02 00:24:43 -04:00
Jose Diaz-Gonzalez
2165686059 feat: add newline to config:get output
Closes #3121
2018-04-02 00:13:26 -04:00
Jose Diaz-Gonzalez
3d4d82ff4e Merge pull request #3139 from dokku/git-initialize
feat: add ability to initialize a git repository out of band
2018-04-02 00:11:43 -04:00
Jose Diaz-Gonzalez
83f320ac8e feat: add ability to initialize a git repository out of band
This is useful in contexts where the repository directory may be created and interacted with via git-http-backend or other methods of updating a repository.
2018-04-02 00:11:32 -04:00
Jose Diaz-Gonzalez
72674e5c6c Merge pull request #3138 from dokku/fix-etc-default
fix: use correct path for /etc/default file
2018-04-01 17:54:33 -04:00
Jose Diaz-Gonzalez
c352f463f7 fix: use correct path for /etc/default file
/etc/defaults was an invalid path.
2018-04-01 17:48:08 -04:00
Jose Diaz-Gonzalez
db5b077354 Merge pull request #3137 from dokku/fix-empty-rev-env-var
fix: ensure we can disable setting the rev-env-var
2018-03-31 12:18:54 -04:00
Jose Diaz-Gonzalez
23c25a44ec fix: ensure we can disable setting the rev-env-var 2018-03-31 04:30:15 -04:00
Jose Diaz-Gonzalez
0d5a77fcd6 Merge pull request #3114 from dokku/dokku-git-rev
Enhanced core git plugin
2018-03-31 03:42:49 -04:00
Jose Diaz-Gonzalez
d67e883e13 feat: flesh out git plugin further
- add `report` and `set` subcommands to the git plugin
- move configuring the DOKKU_DEPLOY_BRANCH to the git plugin
- implement configurable GIT_REV support
- migrate DOKKU_DEPLOY_BRANCH settings
- add a golang-compatible, shell based method of setting plugin configuration variables

Deprecates the community dokku-git-rev plugin.

Closes #2621
Refs dokku-community/dokku-git-rev#9
2018-03-31 03:25:03 -04:00
Jose Diaz-Gonzalez
0d1594e6fb Merge pull request #3135 from dokku/revert-3118-patch-1
Revert "Clarify that the checks plugin only matches content start"
2018-03-28 08:57:52 -04:00
Jose Diaz-Gonzalez
e055d6876e Revert "Clarify that the checks plugin only matches content start" 2018-03-28 08:57:34 -04:00
Jose Diaz-Gonzalez
42c4d7f338 Merge pull request #3134 from tomdyson/patch-1
Fix typo in upgrading docs
2018-03-28 08:51:36 -04:00
Tom Dyson
e4e7c91767 Fix typo in upgrading docs
it's "its" not "it's".
2018-03-28 11:57:44 +01:00
Mary Kate Fain
2cfcea3479 Updated help text on config:set to have commands in working order (#3132) 2018-03-27 21:33:03 -05:00
Jose Diaz-Gonzalez
b4cf7abcca Merge pull request #3131 from axilleas/capitalize-named-containers
Capitalize log sentence when renaming containers
2018-03-26 12:03:21 -04:00
Achilleas Pipinellis
da0041299b Capitalize log sentence when renaming containers 2018-03-26 13:12:58 +02:00
Jose Diaz-Gonzalez
80eb3bf8b9 Merge pull request #3128 from Modicrumb/modicrumb-3125
Changes to Dokku
2018-03-23 16:57:20 -04:00
Richard Sacco
7a4ff80525 changes to vagrantfile to make sure bash file works out of the box on windows 2018-03-23 13:18:40 -07:00
Richard Sacco
8a1ab4005d Changes to Dokku
fixes windows vagrant installation
2018-03-21 09:19:21 -07:00
Jose Diaz-Gonzalez
275b6e70cf Merge pull request #3119 from TomasHubelbauer/patch-1
Link through to the application deployment page after the installation
2018-03-15 09:40:02 -04:00
Tomáš Hübelbauer
f2693ec536 Link through to the application deployment page after the installation 2018-03-15 10:42:39 +01:00
Jose Diaz-Gonzalez
89584907f2 Merge pull request #3118 from Tyilo/patch-1
docs: CHECKS only matches start of content
2018-03-14 14:43:44 -04:00
Asger Hautop Drewsen
b31895baa9 docs: CHECKS only matches start of content
Right?
2018-03-14 18:53:06 +01:00
Jose Diaz-Gonzalez
776226d0d8 Merge pull request #3113 from ilyapoz/patch-1
Fix proxy management link
2018-03-11 06:32:58 -04:00
Ilia Pozhilov
be2cd9acd2 Fix proxy management link 2018-03-11 13:28:21 +03:00
Jose Diaz-Gonzalez
550dbef8b0 Merge pull request #3111 from dokku/josegonzalez-patch-1
feat: upgrade herokuish to 0.4.0
2018-03-11 00:48:03 -05:00
Jose Diaz-Gonzalez
a2d3a6087c Merge pull request #3112 from dokku/minor-doc-css-fixes
Minor doc css fixes
2018-03-11 00:45:25 -05:00
Jose Diaz-Gonzalez
e794568ae5 docs: use ems for font sizes to improve zoom 2018-03-11 00:34:38 -05:00
Jose Diaz-Gonzalez
b4663e2034 docs: add closing tags as necessary 2018-03-11 00:33:25 -05:00
Jose Diaz-Gonzalez
c94b938b10 docs: add proper warning styling
[ci skip]
2018-03-11 00:06:34 -05:00
Jose Diaz-Gonzalez
11f8cdf29a docs: set correct header 2018-03-11 00:04:07 -05:00
Jose Diaz-Gonzalez
47dff5b2e8 feat: upgrade herokuish to 0.4.0 2018-03-10 21:05:53 -05:00
Jose Diaz-Gonzalez
65540b3417 Merge pull request #3110 from dokku/josegonzalez-patch-1
Upgrade herokuish to 0.3.36
2018-03-10 21:05:24 -05:00
Jose Diaz-Gonzalez
eba3f71ced feat: upgrade herokuish to 0.3.36 2018-03-10 20:13:35 -05:00
Jose Diaz-Gonzalez
330b826d39 Merge pull request #3104 from sarendsen/patch-1
Add dokku-limit to plugins documentation
2018-03-10 18:06:19 -05:00
Jose Diaz-Gonzalez
42ab9ec39f Merge pull request #3103 from dokku/consolidate-vhost-references
Move all vhost related functions to the domains plugin
2018-03-08 09:48:38 -05:00
Jose Diaz-Gonzalez
3e1649a8a7 Merge pull request #3105 from znz/follow-deploy-source
Follow renaming from deploy-method to deploy-source
2018-03-08 09:43:09 -05:00
Jose Diaz-Gonzalez
0e4b7d7e7c Merge pull request #3106 from znz/remove-unnecessary-shellcheck-disable
Remove unnecessary shellcheck disable
2018-03-08 09:42:44 -05:00
Jose Diaz-Gonzalez
afe1d715e1 Merge pull request #3108 from znz/update-plugin-list
Update plugin list [ci skip]
2018-03-08 09:42:09 -05:00
Kazuhiro NISHIYAMA
4e7c325292 Update plugin list [ci skip] 2018-03-08 22:45:51 +09:00
Kazuhiro NISHIYAMA
f476a12226 Remove unused password 2018-03-08 22:42:13 +09:00
Kazuhiro NISHIYAMA
c8daf2ac5b Remove unnecessary shellcheck disable
[ci skip]
2018-03-08 22:41:00 +09:00
Kazuhiro NISHIYAMA
e645336640 Follow renaming from deploy-method to deploy-source 2018-03-08 22:39:16 +09:00
Sjoerd Arendsen
bd2948be6d Add dokku-limit to plugins.md 2018-03-08 13:57:13 +01:00
Jose Diaz-Gonzalez
8c9a1ea995 Merge pull request #3098 from dokku/2828-pull-herokuish
Pull herokuish from docker hub when installing via package
2018-03-08 00:49:22 -05:00
Jose Diaz-Gonzalez
512878f629 Merge pull request #3100 from dokku/2991-skip-merge-conflicts
Properly handle invalid process type entries during DOKKU_SCALE generation
2018-03-08 00:48:35 -05:00
Jose Diaz-Gonzalez
eb6872d533 Merge pull request #3101 from dokku/josegonzalez-patch-1
Handle stopped nginx during debian installation
2018-03-08 00:48:07 -05:00
Jose Diaz-Gonzalez
212ef01f7a fix: revert reload and start commands 2018-03-07 23:43:40 -05:00
Jose Diaz-Gonzalez
b417508c98 fix: handle stopped nginx during debian installation
Closes #3019
2018-03-07 23:32:52 -05:00
Jose Diaz-Gonzalez
71b578bf10 fix: Properly handle invalid process type entries during DOKKU_SCALE generation
Closes #2991
2018-03-07 21:48:20 -05:00
Jose Diaz-Gonzalez
510b039e07 Merge pull request #3097 from dokku/update-herokuish
feat: update herokuish to 0.3.35
2018-03-06 11:32:07 -05:00
Jose Diaz-Gonzalez
2e793fde8e Release 0.11.6
# History

## 0.11.6

### Bug Fixes

- #3091: @josegonzalez Properly trigger tar-based deploys on git-deployed repositories
- #3076: @Kjwon15 Prune worktree after build
- #3090: @josegonzalez Ensure all plugin triggers have docs and events integration
- #3089: @josegonzalez Use a longer password for self-signed certificates

### New Features

- #2950: @adelq Add configuration option to disable automatic app creation
- #3093: @josegonzalez Add subcommands to allow app locking and unlocking
- #3092: @josegonzalez Add support for configuring the app shell

### Documentation

- #3096: @josegonzalez docs: Document how to check on a running dokku-installer
2018-03-06 11:24:36 -05:00
Jose Diaz-Gonzalez
8844c2ab67 feat: pull herokuish from docker hub
This removes the ability to support http proxy directly, but fixes issues where users may not
be using exactly the same herokuish as we expect.

Closes #2828

[ci skip]
2018-03-06 07:15:49 -05:00
Jose Diaz-Gonzalez
0d3a64c4b9 feat: update herokuish to 0.3.35 2018-03-06 06:47:37 -05:00
Jose Diaz-Gonzalez
7a0f527336 Merge pull request #3096 from dokku/2559-dokku-installer
docs: Document how to check on a running dokku-installer
2018-03-06 06:43:20 -05:00
Jose Diaz-Gonzalez
0b14c2b541 docs: Document how to check on a running dokku-installer
Closes #2559
[ci skip]
2018-03-06 06:43:02 -05:00
Jose Diaz-Gonzalez
527515f1a0 Merge pull request #2950 from adelq/disable-app-autocreation
Add configuration option to disable automatic app creation
2018-03-06 01:54:14 -05:00
Jose Diaz-Gonzalez
5eb95dd6ab fix: correct tests by moving to correct file 2018-03-06 01:14:55 -05:00
Jose Diaz-Gonzalez
fa3755454a fix: unset global 2018-03-06 00:27:48 -05:00
Jose Diaz-Gonzalez
40b0bdd6e8 fix: ensure we call apps_create at all proper locations 2018-03-05 23:47:10 -05:00
Jose Diaz-Gonzalez
cc0687ec0f fix: compare the env var to string true, not boolean true 2018-03-05 23:01:13 -05:00
Adel Qalieh
b5ecdfc0c5 fix: set global config key in tests 2018-03-05 23:01:13 -05:00
Jose Diaz-Gonzalez
db7cc94939 fix: ensure config_get capture exits 0 2018-03-05 23:01:13 -05:00
Adel Qalieh
86f917db79 Add configuration option to disable automatic app creation
Fixes #2808
2018-03-05 23:01:13 -05:00
Jose Diaz-Gonzalez
e9638a4d92 Merge pull request #3093 from dokku/2883-lock-unlock-subcommands
Add subcommands to allow app locking and unlocking
2018-03-04 01:56:54 -05:00
Jose Diaz-Gonzalez
165b6ff46f feat: add subcommands to allow app locking and unlocking
Unlocking an app will not stop running deploys, so users may need to clean up. However, it is useful for deploys that fail in unusual ways that cause the lock to stay around.

Closes #2883
2018-03-04 01:45:42 -05:00
Jose Diaz-Gonzalez
bed573ebe8 fix: add missing source 2018-03-03 22:53:24 -05:00
Jose Diaz-Gonzalez
7917072941 Merge pull request #3092 from dokku/configurable-shell
Add support for configuring the app shell
2018-03-03 22:48:13 -05:00
Jose Diaz-Gonzalez
c53ebb66d0 feat: add support for configuring the app shell
This allows developers to change the shell from /bin/bash to any other when executing
`dokku enter` or pre/post deployment tasks. Ideally we could detect the shells available,
but that is slow and potentially error prone.

Closes #2572
2018-03-03 22:11:02 -05:00
Jose Diaz-Gonzalez
770a8f8812 Merge pull request #3091 from dokku/3047-detect-deploy-method
Properly trigger tar-based deploys on git-deployed repositories
2018-03-03 21:36:11 -05:00
Jose Diaz-Gonzalez
c3dba49007 fix: pass in empty string for stdin 2018-03-03 20:54:33 -05:00
Jose Diaz-Gonzalez
9a1dd41e9f refactor: rename to deploy-source 2018-03-03 19:11:49 -05:00
Jose Diaz-Gonzalez
726c1571eb fix: Declare and assign separately to avoid masking return values. 2018-03-03 18:33:16 -05:00
Jose Diaz-Gonzalez
2b0d34d0db fix: do not trigger git builds when calling tar:from
Closes #3047
2018-03-03 18:30:17 -05:00
Jose Diaz-Gonzalez
ed4aa60420 Merge pull request #3076 from Kjwon15/prune-worktree
Prune worktree after build
2018-03-03 18:25:32 -05:00
Jose Diaz-Gonzalez
c9d9750afe feat: add a new plugin trigger for detecting what the current deployment method is
This is currently used solely for reporting.

Closes #3047
2018-03-03 18:16:50 -05:00
Jose Diaz-Gonzalez
be79060d7e fix: declare properties before they are used 2018-03-03 18:00:01 -05:00
Jose Diaz-Gonzalez
4891599d13 Merge pull request #3090 from dokku/ensure-events
Ensure all plugin triggers have docs and events integration
2018-03-03 17:59:11 -05:00
Jose Diaz-Gonzalez
63616796cb docs: add missing docs for plugin triggers 2018-03-03 17:58:04 -05:00
Jose Diaz-Gonzalez
81feac7617 docs: reorganize documentation page 2018-03-03 17:57:52 -05:00
Jose Diaz-Gonzalez
9e6a099735 fix: remove unused trigger 2018-03-03 17:57:34 -05:00
Jose Diaz-Gonzalez
eb0f49f08c docs: cleanup events documentation 2018-03-03 17:50:26 -05:00
Jose Diaz-Gonzalez
15747612cd feat: sort list of events 2018-03-03 17:50:14 -05:00
Jose Diaz-Gonzalez
25982e961d docs: remove event that is no longer triggered 2018-03-03 17:50:08 -05:00
Jose Diaz-Gonzalez
4b3de76f94 fix: add missing events 2018-03-03 17:49:55 -05:00
Jose Diaz-Gonzalez
3f1fe17977 Merge pull request #3089 from dokku/3084-self-signed-cert-pass
Use a longer password for self-signed certificates
2018-03-03 15:36:46 -05:00
Jose Diaz-Gonzalez
6d91a32f3d fix: use a longer password for self-signed certificates
Closes #3084
2018-03-03 14:58:33 -05:00
kjwon15
af19e5e453 Prune git worktree immediately 2018-03-04 03:59:30 +09:00
kjwon15
1025c7679f Fix trap
Last trap will exec.
2018-03-04 03:57:08 +09:00
kjwon15
12efcd02b1 Prune worktree after build 2018-03-04 03:57:08 +09:00
Jose Diaz-Gonzalez
34dda8917b Release 0.11.5
# History

## 0.11.5

### Bug Fixes

- #3088: @josegonzalez Silence port retrieval stderr
- #3086: @josegonzalez Fix help output for golang plugins
- #3079: @josegonzalez Move container status exclusively to ps plugin

### New Features

- #3085: @josegonzalez Add support for checking if an application exists
- #3032: @josegonzalez Add support for arbitrary ubuntu versions
- #3074: @josegonzalez Add the ability to disable ANSI prefixes via DOKKU_DISABLE_ANSI_PREFIX_REMOVAL
- #3083: @josegonzalez Source /etc/defaults/dokku if available

### Documentation

- #2958: @silverfix Add tutorial for running Dokku on an external volume
- #3082: @josegonzalez Switch from Gratipay to Patreon
- #3081: @josegonzalez Add docs for switching between deployment methodologies
2018-03-02 11:19:13 -05:00
Jose Diaz-Gonzalez
e3cca57762 Merge pull request #3088 from dokku/silence-port-output
Silence port retrieval stderr
2018-03-02 11:11:49 -05:00
Jose Diaz-Gonzalez
3d7f03611f feat: silence port retrieval stderr
This is completely ignored for the purposes of this port retrieval, so it only makes it looks like Dokku is triggering errors.
2018-03-02 02:38:32 -05:00
Jose Diaz-Gonzalez
1c62a055d3 Merge pull request #3086 from dokku/fix-golang-help-output
Fix help output for golang plugins
2018-02-28 04:15:04 -05:00
Jose Diaz-Gonzalez
1201b05dfa fix: ignore a few files in the network plugin 2018-02-28 03:23:50 -05:00
Jose Diaz-Gonzalez
6d43931e17 fix: properly set help output for golang applications
Closes #3007
2018-02-28 03:22:00 -05:00
Jose Diaz-Gonzalez
b2ca01eea0 Merge pull request #3085 from dokku/app-clone-enhancements
feat: add support for checking if an application exists
2018-02-28 03:03:10 -05:00
Jose Diaz-Gonzalez
399073f77b feat: add support for checking if an application exists
This is useful for creating review applications in CI/CD pipelines.
2018-02-28 02:27:29 -05:00
Jose Diaz-Gonzalez
86a0ae1dde Merge pull request #3032 from dokku/2263-1604-support
Add support for arbitrary ubuntu versions
2018-02-24 18:03:39 -05:00
Jose Diaz-Gonzalez
745a5b1e45 Merge pull request #3074 from dokku/2644-conditional-ansi-sequences
Add the ability to disable ANSI prefixes via DOKKU_DISABLE_ANSI_PREFIX_REMOVAL
2018-02-24 17:54:19 -05:00
Jose Diaz-Gonzalez
9641aa88e7 Merge pull request #3083 from dokku/2958-etc-defaults
feat: source /etc/defaults/dokku if available
2018-02-24 17:50:08 -05:00
Jose Diaz-Gonzalez
5b683ec4af Merge pull request #2958 from silverfix/master
Add tutorial for running Dokku on an external volume
2018-02-24 17:24:45 -05:00
Jose Diaz-Gonzalez
2f5ed8c591 Rename docs/advanced-usage/run-on-external-volume.md to docs/community/tutorials/run-on-external-volume.md
[ci skip]
2018-02-24 17:23:59 -05:00
Jose Diaz-Gonzalez
748c43fcfd feat: create a community tutorials section
[ci skip]
2018-02-24 17:23:40 -05:00
Jose Diaz-Gonzalez
5242eeeb86 feat: source /etc/defaults/dokku if available
This allows users to override - at a top-level - the DOKKU_ROOT, DOKKU_LIB_ROOT, and other
configuration variables. If specified, this should begin to enable users to move their
Dokku installations to mounted drives.

Note that items installed from packages may not respect these paths, so further work may be in order.

Closes #2958
2018-02-24 16:52:04 -05:00
Jose Diaz-Gonzalez
d80a280fc2 Merge pull request #3082 from dokku/3037-patreon
Switch from Gratipay to Patreon
2018-02-24 16:06:30 -05:00
Jose Diaz-Gonzalez
227606d94a docs: switch to patreon
No idea how we'll disburse any income, but here it is by popular demand.

Closes #3037

[ci skip]
2018-02-24 16:05:17 -05:00
Jose Diaz-Gonzalez
21bdfa0e43 Merge pull request #3081 from dokku/2819-deploy-switching
Add docs for switching between deployment methodologies
2018-02-24 14:58:55 -05:00
Jose Diaz-Gonzalez
8a29f63f73 docs: add docs for switching between deployment methodologies
Closes #2819

[ci skip]
2018-02-24 14:57:19 -05:00
Jose Diaz-Gonzalez
bf84f13938 refactor: move all vhost related functions to the domains plugin
These should never have been in common, and more directly relate to domain handling than anything else.

As this is a BC-break, merging will need to wait until the next minor.
2018-02-24 14:52:06 -05:00
Jose Diaz-Gonzalez
aaa55802b7 Merge pull request #3079 from dokku/refactor-app-status
fix: move container status exclusively to ps plugin
2018-02-24 14:24:27 -05:00
Jose Diaz-Gonzalez
cd674d3cb3 fix: move container status exclusively to ps plugin
This information didn't belong in the apps plugin and was incomplete.

Also set the container status to dead when it is not detected as running.
2018-02-24 03:03:55 -05:00
Jose Diaz-Gonzalez
376284381e Release 0.11.4
# History

## 0.11.4

### Bug Fixes

- #3071: @josegonzalez Do not grab restart policies if the deploy phase cannot be read
- #3065: @josegonzalez Check if dokkurc files are readable before attempting to source
- #3066: @josegonzalez Validate that all application names are valid domain names
- #3052: @alexquick Remove bad config keys on load from app/global envfiles

### New Features

- #3073: @josegonzalez Add support for rhel
- #3039: @josegonzalez Enhance security-related upgrade process
- #3038: @shrmnk Add ps:stopall subcommand
- #3055: @michaelshobbs Update to herokuish v0.3.34
- #3045: @jcrben Remove nginx configuration files on debian purge

### Documentation

- #3072: @josegonzalez Remove all references to VHOST files from documentation
- #3069: @josegonzalez Remove potentially bad nginx template examples
- #3059: @lwm Add note for runtime host configuration for checks.
- #3041: @jcrben Point to unattended install instructions
- #3053: @mimischi Add plugin to manage Dockerfile location to documentation
- #3062: @shannara Change help run command be more explicit
- #3034: @znz Fix a typo in golang config.go source
- #3061: @tomdyson Fix plugin-triggers docs typo
- #3056: @raine Fix typo in config help output
- #3044: @takuti Fix links to port-management
- #3042: @josegonzalez Improve documentation around port handling.
2018-02-24 02:30:20 -05:00
Jose Diaz-Gonzalez
7d8c80f0cc feat: Add the ability to disable ANSI prefixes via DOKKU_DISABLE_ANSI_PREFIX_REMOVAL
To disable the removal, set the value of this variable to `true`.

Closes #2644
2018-02-19 21:33:10 -05:00
Jose Diaz-Gonzalez
46d63dfd0c Merge pull request #3073 from dokku/3046-rhel-support
feat: add support for rhel
2018-02-19 15:26:25 -05:00
Jose Diaz-Gonzalez
e1d1135ef1 fix: ensure the tar plugin also has the ansi sed call 2018-02-19 14:45:18 -05:00
Jose Diaz-Gonzalez
2271badaf5 feat: add support for rhel
The centos rpm packages should be installable on centos once this is merged and released. However, Dokku will not maintain an Rhel-specific repository as there is no way for us to feasibly test it.

Closes #3046
2018-02-19 14:31:17 -05:00
Jose Diaz-Gonzalez
b5e2b82248 Merge pull request #3072 from dokku/3064-remove-vhosts-references
docs: Remove all references to VHOST files from documentation
2018-02-19 14:28:25 -05:00
Jose Diaz-Gonzalez
43592174e6 docs: Remove all references to VHOST files from documentation
Users should never be in a position where they need to manually edit files managed by Dokku, and should be pushed to using the `domains` plugin where necessary.

Closes #3064

[ci skip]
2018-02-19 14:27:50 -05:00
Jose Diaz-Gonzalez
7fd1c7f89d fix: remove extra colon 2018-02-19 14:22:04 -05:00
Jose Diaz-Gonzalez
930094b45e chore: drop bionic 2018-02-19 14:22:04 -05:00
Jose Diaz-Gonzalez
1429c2d174 docs: add all supported ubuntu versions 2018-02-19 14:22:04 -05:00
Jose Diaz-Gonzalez
3a8ecff3ca feat: add support for pushing packages to all known ubuntu versions 2018-02-19 14:22:04 -05:00
Jose Diaz-Gonzalez
251b781ecd feat: make deb installation aware of later ubuntu versions
Refs #2263
2018-02-19 14:22:04 -05:00
Jose Diaz-Gonzalez
3491d9eff2 docs: reference the correct os version for installing the PPA
Refs #2263
2018-02-19 14:22:04 -05:00
Jose Diaz-Gonzalez
d43f9f730f feat: support any ubuntu version
Refs #2263
2018-02-19 14:22:04 -05:00
Jose Diaz-Gonzalez
a55fb34a77 fix: allow bootstrap.sh to function properly against version 1.0.0+
Refs #2263
2018-02-19 14:22:04 -05:00
Jose Diaz-Gonzalez
c4ba380627 Merge pull request #3071 from dokku/josegonzalez-patch-1
Do not grab restart policies if the deploy phase cannot be read
2018-02-19 14:21:13 -05:00
Jose Diaz-Gonzalez
9b1849e816 Merge pull request #3039 from dokku/1089-secure-updates
Enhance security-related upgrade process
2018-02-19 14:20:54 -05:00
Jose Diaz-Gonzalez
98a20e36cd feat: build the dokku-update package
Releases can be made by running `contrib/release-dokku-update`
2018-02-19 13:55:27 -05:00
Jose Diaz-Gonzalez
cad4cec050 fix: do not grab restart policies if the deploy phase cannot be read 2018-02-18 23:00:41 -05:00
Jose Diaz-Gonzalez
6c76038bfc feat: add dokku-update binary
This binary will be packaged separately from dokku and can be used to keep the system up to date.
2018-02-18 15:12:25 -05:00
Jose Diaz-Gonzalez
54079714c8 feat: allow rebuilding and restarting all applications via parallel 2018-02-17 23:15:15 -05:00
Jose Diaz-Gonzalez
77c63b8d98 fix: do not rebuild an app that has never been deployed 2018-02-17 23:15:15 -05:00
Jose Diaz-Gonzalez
8eb4246040 docs: add notes on patching operating systems for security
Refs #1089
2018-02-17 23:15:15 -05:00
Jose Diaz-Gonzalez
eddd518718 Merge pull request #3065 from dokku/3033-env-sourcing
feat: check if dokkurc files are readable before attempting to source
2018-02-17 23:07:40 -05:00
Jose Diaz-Gonzalez
38e039ab08 Merge pull request #3066 from dokku/3054-validate-app-names
fix: Validate that all application names are valid domain names
2018-02-17 19:19:05 -05:00
Jose Diaz-Gonzalez
16b8f2682b fix: Validate that all application names are valid domain names
Invalid application names will need to be manually cleaned up by the user, and as such this is a bc-break.

Closes #3054
2018-02-17 17:26:06 -05:00
Jose Diaz-Gonzalez
5eddb260f4 Merge pull request #3069 from dokku/josegonzalez-patch-1
Remove potentially bad nginx template examples
2018-02-17 15:57:35 -05:00
Jose Diaz-Gonzalez
cd32180f1a docs: remove potentially bad template examples
These examples do not include _all_ of the contents of the original template. Rather than having to keep them up to date and confuse users when we don't, lets just remove them. The section above contains a link to the current `nginx.conf.sigil` and should be referenced by our users instead.

Closes #3068

[ci skip]
2018-02-17 15:57:14 -05:00
Jose Diaz-Gonzalez
00a3ca856f feat: check if dokkurc files are readable before attempting to source
If the files are unreadable, exit immediately so developers take notice.

Closes #3033
2018-02-13 03:11:37 -05:00
Jose Diaz-Gonzalez
a80bd92f40 Merge pull request #3059 from lwm/host-header-notes
Add note for runtime host configuration for checks.
2018-02-13 02:43:32 -05:00
Jose Diaz-Gonzalez
d8878fdfe2 docs: remove reference to django application and make it a warning
This further clarifies the responsibility of the developer around managing checks in relation to their framework.
2018-02-13 02:38:57 -05:00
Jose Diaz-Gonzalez
124072df95 Merge pull request #3041 from jcrben/unattended-install
Point to unattended install instructions
2018-02-13 01:46:25 -05:00
Jose Diaz-Gonzalez
dbdefd972d Merge pull request #3038 from shrmnk/feature/ps-stopall
Feature: dokku ps:stopall
2018-02-13 01:44:05 -05:00
Jose Diaz-Gonzalez
26c533fde3 Merge pull request #3052 from alexquick/fix-invalid-config
Remove bad config keys on load from app/global envfiles
2018-02-13 01:43:04 -05:00
Jose Diaz-Gonzalez
faf284809b Merge pull request #3053 from mimischi/new-plugin
Add plugin to manage Dockerfile location to documentation
2018-02-13 01:42:38 -05:00
Jose Diaz-Gonzalez
a9927c24e2 Merge pull request #3062 from shannara/refactor-run-help-command
Change help run command be more explicit
2018-02-13 01:36:04 -05:00
Jose Diaz-Gonzalez
ff14323fdc fix: clarify docs on run subcommand
[ci skip]
2018-02-13 01:35:43 -05:00
Jose Diaz-Gonzalez
e7f8aeff8a docs: clarify help output for run subcommand
[ci skip]
2018-02-13 01:35:08 -05:00
Stanislas Leduc
6a9583b176 Change help run command be more explicit 2018-02-12 21:07:30 +01:00
Luke Murphy
2475b9e7ea Add note for runtime host configuration for checks.
Please see https://github.com/dokku/dokku/issues/2159 for motivation.

[ci skip]
2018-02-10 11:59:19 +01:00
Jose Diaz-Gonzalez
fe1275d4e7 Merge pull request #3034 from znz/fix-typo
Fix a typo [ci skip]
2018-02-08 12:00:31 -07:00
Jose Diaz-Gonzalez
236f388aec Merge pull request #3061 from tomdyson/patch-1
Fix plugin-triggers docs typo
2018-02-08 12:00:03 -07:00
Tom Dyson
ee864e4ff8 plugin-triggers docs typo 2018-02-08 18:58:38 +00:00
Jose Diaz-Gonzalez
2c0a7a687e Merge pull request #3056 from raine/patch-1
Fix typo in help output
2018-01-31 17:25:08 -05:00
Raine Virta
a932a421ce Fix typo 2018-02-01 00:21:55 +02:00
Jose Diaz-Gonzalez
6efac356f3 Merge pull request #3055 from dokku/mh/chore/update-herokuish
update to herokuish v0.3.34
2018-01-31 10:15:03 -05:00
Michael Hobbs
ef027c0e5f update to herokuish v0.3.34 2018-01-30 17:58:49 -07:00
Michael Gecht
bc8f2be582 Add dokku-dockerfile plugin to documentation
[ci skip]
2018-01-30 11:01:32 +01:00
Alex Quick
afeb521f07 feature: remove bad config vars from envfiles when loaded
resolves: #3036
2018-01-28 17:19:28 -05:00
Jose Diaz-Gonzalez
22a0ffd98d Merge pull request #3045 from jcrben/debian-postrm-dokku-purge
rm nginx configs on debian purge
2018-01-24 12:43:32 -05:00
Ben Creasy
800fd928ca rm nginx configs on debian purge 2018-01-23 23:21:30 -08:00
Jose Diaz-Gonzalez
e5d473f494 Merge pull request #3044 from takuti/fix-link
Docs: Fix links to port-management
2018-01-22 17:49:07 -05:00
Takuya Kitazawa
ed275d479b Docs: Fix links to port-management 2018-01-23 07:46:19 +09:00
Jose Diaz-Gonzalez
b5c1646b50 docs: these folks are no longer really involved. 2018-01-22 10:08:45 -05:00
Jose Diaz-Gonzalez
c09e102692 Merge pull request #3042 from dokku/port-management-docs
docs: Improve documentation around port handling.
2018-01-21 17:49:53 -05:00
Jose Diaz-Gonzalez
463c5b8120 docs: Improve documentation around port handling.
While there are a number of enhancements we could do to make port handling more seamless, this is a first step towards documenting the various oddities around port management for Docker vs Buildpack deploys.

Refs #2903
Closes #2970

[ci skip]
2018-01-21 17:46:44 -05:00
Ben Creasy
d79a4d1b5c docs: point to unattended install instructions
[ci skip]
2018-01-21 13:09:57 -08:00
Sherman K
57d4c93d2d Disable shellcheck SC1090 2018-01-19 08:36:55 +08:00
Sherman K
30922fc818 Implement improvements from #3039 2018-01-19 08:23:50 +08:00
Sherman K
59ca40f368 Replace docs using manual stopping of all apps with ps:stopall cmd 2018-01-19 00:37:26 +08:00
Sherman K
25bd4c8785 Update relevant docs with ps:stopall 2018-01-19 00:34:39 +08:00
Sherman K
41dd72dd3e Add ps:stopall command to stop all apps 2018-01-19 00:23:31 +08:00
Kazuhiro NISHIYAMA
59abb1c161 Fix a typo [ci skip] 2018-01-16 21:47:19 +09:00
Jose Diaz-Gonzalez
5ee42f876e Release 0.11.3
# History

## 0.11.3

### Bug Fixes

- #3031: @josegonzalez fix: ensure we respect DOKKU_DEPLOY_BRANCH when rebuilding applications

### New Features

- #3028: @josegonzalez Ensure parallel runs properly for non-restorable apps and moreutils parallel
- #3030: @josegonzalez feat: allow changing the system user the properties plugin uses
- #3024: @jcrben Use high-availability pool keyserver during tests
- #3017: @josegonzalez feat: add pre-start trigger for notifying on application start

### Documentation

- #3020: @gliwka Point to docs in the right version
- #3016: @josegonzalez Update nginx template example to use http2 when available
2018-01-12 18:12:27 -05:00
Jose Diaz-Gonzalez
af158d945a Merge pull request #3031 from dokku/3021-custom-branch-ps-rebuild
fix: ensure we respect DOKKU_DEPLOY_BRANCH when rebuilding applications
2018-01-12 16:26:35 -05:00
Jose Diaz-Gonzalez
28c409509c fix: declare DOKKU_DEPLOY_BRANCH 2018-01-12 13:42:41 -05:00
Jose Diaz-Gonzalez
19806636ad fix: ensure we respect DOKKU_DEPLOY_BRANCH when rebuilding applications
Closes #3021
2018-01-12 13:38:36 -05:00
Jose Diaz-Gonzalez
b90bb0cd38 Merge pull request #3028 from dokku/josegonzalez-patch-1
Ensure parallel runs properly for non-restorable apps and moreutils parallel
2018-01-12 06:07:58 -05:00
Jose Diaz-Gonzalez
b83f351a3e Merge pull request #3030 from dokku/system-user
feat: allow changing the system user the properties plugin uses
2018-01-12 05:29:41 -05:00
Jose Diaz-Gonzalez
95243b1757 fix: test was incorrect 2018-01-12 04:42:53 -05:00
Jose Diaz-Gonzalez
b250fe6aeb feat: allow changing the system user the properties plugin uses 2018-01-12 04:23:07 -05:00
Jose Diaz-Gonzalez
7a4ab91ecf fix: skip undeployed apps when parallel is not available 2018-01-12 01:33:29 -05:00
Jose Diaz-Gonzalez
f0ee6288fb feat: ensure we don't try to restore an app that wasn't deployed 2018-01-12 01:12:14 -05:00
Jose Diaz-Gonzalez
7330a849a5 fix: drop will-cite 2018-01-11 22:35:38 -05:00
Jose Diaz-Gonzalez
226a3da87d fix: use correct parameter for APP name 2018-01-11 00:12:41 -05:00
Jose Diaz-Gonzalez
58332d707b fix: ignore correct rule 2018-01-08 04:49:42 -05:00
Jose Diaz-Gonzalez
652530a4b4 fix: ignore shellcheck rule 2018-01-08 04:45:34 -05:00
Jose Diaz-Gonzalez
b6e7fb5839 refactor: ensure parallel runs properly for non-restorable apps and moreutils parallel
Refs #3023
2018-01-08 04:41:26 -05:00
Jose Diaz-Gonzalez
0db55bc6af Merge pull request #3024 from jcrben/update-key-server
[config] use high-availability pool keyserver
2018-01-08 03:13:25 -05:00
Ben Creasy
9fb5dc9759 [config] use high-availability pool keyserver 2017-12-31 13:32:45 -08:00
Jose Diaz-Gonzalez
b4ebd3bd75 Merge pull request #3020 from gliwka/point-to-right-version
Point to docs in the right version
2017-12-20 23:26:44 -05:00
Matthias Gliwka
52b586e8d2 Change subdomain to point to dokku github organization 2017-12-21 05:25:42 +01:00
Matthias Gliwka
cc2ca2aee0 Point to docs in the right version 2017-12-21 05:06:51 +01:00
Jose Diaz-Gonzalez
63bced7679 Merge pull request #3017 from dokku/2713-pre-start-trigger
feat: add pre-start trigger for notifying on application start
2017-12-19 09:24:23 -05:00
Jose Diaz-Gonzalez
76dd0252ee feat: add pre-start trigger for notifying on application start
Closes #2713
2017-12-19 00:55:10 -05:00
Jose Diaz-Gonzalez
ae1b0b3510 Merge pull request #3016 from dokku/josegonzalez-patch-1
Update nginx template example to use http2 when available
2017-12-18 20:22:09 -05:00
Jose Diaz-Gonzalez
693ec111b1 docs: update nginx template example to use http2 when available
Closes #2782
[ci skip]
2017-12-18 20:21:49 -05:00
Jose Diaz-Gonzalez
e10e62b1e9 Release 0.11.2
# History

## 0.11.2

### Bug Fixes

- #3014: @josegonzalez fix: handle case where DOKKU_DOCKERFILE_PORTS is an empty string
- #3013: @alexquick Fix some issues with config/network/repo help output
- #3012: @alexquick Fail when setting/unsetting invalid keys
- #3011: @alexquick Forward output from plugn triggers to user
- #3004: @josegonzalez Return/Exit 1 when an image being deployed is invalid

### Documentation

- #3015: @elia Tiny fixes to triggers documentation
2017-12-18 20:10:09 -05:00
Jose Diaz-Gonzalez
f425e23bdf Merge pull request #3015 from elia/patch-5
Tiny fixes to triggers documentation
2017-12-18 14:25:45 -05:00
Elia Schito
4c86c7bd26 Tiny fixes to triggers documentation
[ci skip]
2017-12-18 19:15:49 +01:00
Jose Diaz-Gonzalez
fa605b6a83 Merge pull request #3014 from dokku/dockerfile-network-ports
fix: handle case where DOKKU_DOCKERFILE_PORTS is an empty string
2017-12-17 00:56:48 -05:00
Jose Diaz-Gonzalez
1f08853fc7 fix: handle case where DOKKU_DOCKERFILE_PORTS is an empty string 2017-12-17 00:20:04 -05:00
Jose Diaz-Gonzalez
40421b32a4 Merge pull request #3013 from alexquick/fix-help
Fix some issues with config/network/repo help output
2017-12-16 23:50:09 -05:00
Jose Diaz-Gonzalez
f3d6190e18 Merge pull request #3012 from alexquick/fix-config-invalid-keys
Fail when setting/unsetting invalid keys
2017-12-16 23:49:53 -05:00
Jose Diaz-Gonzalez
46377071ea Merge pull request #3011 from alexquick/fix-config-restart-output
[config] forward output from plugn triggers to user
2017-12-16 19:35:26 -05:00
Alex Quick
5fbe28f672 [config] stream output of app-restart & post-config-update plugn triggers to stdout/err 2017-12-16 11:32:06 -05:00
Alex Quick
302d82a192 fix indentation for network/repo help 2017-12-15 10:06:45 -05:00
Alex Quick
061ea9bfd7 [config] fix help output
* `dokku:help --all` was getting mangled
* `dokku config:help` wasn't working
2017-12-15 10:06:19 -05:00
Alex Quick
f8e3bdc56b [config] forward output from plugn triggers to user 2017-12-15 09:37:28 -05:00
Alex Quick
92d7e8ce65 [config] let user know if they are unsetting a non-existent config key 2017-12-15 09:22:56 -05:00
Alex Quick
e7faec3e26 [config] fail on setting/unsetting invalid keys 2017-12-15 09:20:18 -05:00
Jose Diaz-Gonzalez
72a847a6f1 Merge pull request #3004 from dokku/2916-fail-on-invalid-image
fix: return/exit 1 when an image being deployed is invalid
2017-12-14 00:21:13 -05:00
Jose Diaz-Gonzalez
0e007a1196 fix: declare and set variables separately 2017-12-13 23:39:04 -05:00
Jose Diaz-Gonzalez
af626a51cc fix: set IMAGE variable correctly 2017-12-13 23:37:14 -05:00
Jose Diaz-Gonzalez
4bb221d89a Release 0.11.1
# History

## 0.11.1

### Bug Fixes

- #3010: @josegonzalez fix: route config_all to the `config` command to fix datastore plugin usage
- #3009: @josegonzalez fix: correct the guard around the config_export call in config_sub
- #3006: @josegonzalez fix: do not allow shadowing of the CACHE_DIR variable
- #3005: @josegonzalez fix: persist users in the dokku group through installations
- #3003: @josegonzalez Fix issues in apps:clone calls
- #3001: @josegonzalez fix: allow applications to begin with numeric values

### New Features

- #3002: @josegonzalez fix: omit redirection of docker build output
- #3000: @josegonzalez fix: remove golang files and triggers directory for packaging
2017-12-13 19:26:46 -05:00
Jose Diaz-Gonzalez
984388d191 Merge pull request #3010 from dokku/josegonzalez-patch-1
fix: route config_all to the `config` command to fix datastore plugin usage
2017-12-13 17:37:56 -05:00
Jose Diaz-Gonzalez
f0ef1daa15 fix: route config_all to the config command 2017-12-13 17:37:29 -05:00
Jose Diaz-Gonzalez
3d065bf35c Update functions 2017-12-13 17:17:10 -05:00
Jose Diaz-Gonzalez
f1c0432375 fix: revert always returning 1 on error in release_and_deploy 2017-12-13 15:54:43 -05:00
Jose Diaz-Gonzalez
21645247fb fix: scope non-zero return on invalid image to just the deploy command 2017-12-13 15:54:19 -05:00
Jose Diaz-Gonzalez
1a350796e5 Merge pull request #3009 from dokku/josegonzalez-patch-1
fix: correct the guard around the config_export call in config_sub
2017-12-13 15:52:16 -05:00
Jose Diaz-Gonzalez
5522cf63f7 fix: revert guard and pass app arg to config_export 2017-12-13 15:46:53 -05:00
Jose Diaz-Gonzalez
52d6143d97 fix: correct the guard around the config_export call in config_sub 2017-12-13 15:39:42 -05:00
Jose Diaz-Gonzalez
0fe5c645d6 Merge pull request #3002 from dokku/josegonzalez-patch-1
fix: omit redirection of docker build output
2017-12-13 10:42:00 -05:00
Jose Diaz-Gonzalez
85d04ee11a Merge pull request #3006 from dokku/2901-cache-dir-shadowing
fix: do not allow shadowing of the CACHE_DIR variable
2017-12-13 10:39:39 -05:00
Jose Diaz-Gonzalez
343c5fb5ca Merge pull request #3005 from dokku/2908-persist-dokku-group
fix: persist users in the dokku group through installations
2017-12-13 10:39:26 -05:00
Jose Diaz-Gonzalez
4ae56cf01c fix: call tags:deploy 2017-12-13 03:16:10 -05:00
Jose Diaz-Gonzalez
8336247cc1 Merge pull request #3003 from dokku/2978-clone-fixes
Fix issues in apps:clone calls
2017-12-13 01:47:57 -05:00
Jose Diaz-Gonzalez
3fe0b56fb8 feat: add test 2017-12-13 01:31:23 -05:00
Jose Diaz-Gonzalez
329e849894 fix: do not allow shadowing of the CACHE_DIR variable
Closes #2901
2017-12-13 01:27:29 -05:00
Jose Diaz-Gonzalez
70cee2df86 fix: persist users in the dokku group through installations
Closes #2908
2017-12-13 01:24:39 -05:00
Jose Diaz-Gonzalez
2a30f45177 fix: return/exit 1 when an image being deployed is invalid
Closes #2916
2017-12-13 01:02:24 -05:00
Jose Diaz-Gonzalez
6528c4511a fix: handle case in ubuntu 16.04 where popd may fail if the dokku user does not have rights to execute in the executing user's $PWD.
Closes #2978
2017-12-13 00:44:27 -05:00
Jose Diaz-Gonzalez
fe6f339890 feat: silence cpio 2017-12-13 00:43:18 -05:00
Jose Diaz-Gonzalez
c46efa54b4 fix: do not copy the cache directory to cloned applications 2017-12-13 00:42:45 -05:00
Jose Diaz-Gonzalez
3ef3f0218f fix: omit redirection of docker build output
[ci skip]
2017-12-12 17:28:50 -05:00
Jose Diaz-Gonzalez
59414fe231 Merge pull request #3001 from dokku/josegonzalez-patch-1
fix: allow applications to begin with numeric values
2017-12-12 13:13:57 -05:00
Jose Diaz-Gonzalez
052a14f13c fix: actually reference second app 2017-12-12 11:25:46 -05:00
Jose Diaz-Gonzalez
050fa7edf3 feat: add test for apps starting with numeric characters 2017-12-12 11:25:16 -05:00
Jose Diaz-Gonzalez
e9db130b38 Merge pull request #3000 from dokku/src-clean
fix: remove golang files and triggers directory for packaging
2017-12-12 11:13:00 -05:00
Jose Diaz-Gonzalez
39aefb95c2 fix: allow applications to begin with numeric values 2017-12-12 11:12:23 -05:00
Jose Diaz-Gonzalez
f1baa1f6a5 fix: remove golang files and triggers directory for packaging 2017-12-12 03:13:07 -05:00
Jose Diaz-Gonzalez
cd9c2d7dbe Release 0.11.0
# History

## 0.11.0

### Bug Fixes

- #2998: @josegonzalez Fix issues in release process
- #2993: @josegonzalez Add config_all alias for plugin usage
- #2972: @buckle2000 Correct typo in docker-options:remove error output
- #2964: @znz Remove unused variable
- #2967: @znz Fix indentation in test file
- #2963: @znz Correct typos in config plugin and remove potential infinite recursion issue
- #2951: @josegonzalez Handle case where the app directory is a symlink
- #2939: @znz Remove unnecessary lines
- #2945: @znz Fix network plugin version
- #2937: @michaelshobbs Strip restart flag from app_user_pre_deploy_trigger
- #2931: @josegonzalez Upgrade git package for CI
- #2928: @silverfix Do not overwrite the VHOST file during installation if it exists
- #2926: @vtavernier Remove leading forward slash from app name in git-upload-pack

### New Features

- #2985: @bitmand Build a custom dhparam file once for nginx and include it as default
- #2974: @josegonzalez Upgrade to herokuish 0.3.33
- #2973: @josegonzalez Allow usage of git 2.13.0+ by unsetting GIT_QUARANTINE_PATH during git worktree usage
- #2971: @miraculixx Add support for older virtualbox versions in official Dokku Vagrantfile
- #2966: @znz Simplify internal config functions to reduce duplication
- #2751: @alexquick Move config plugin to golang
- #2938: @michaelshobbs Upgrade to golang 1.9.1
- #2736: @josegonzalez Implement Network Plugin
- #2929: @michaelshobbs Add codacy config and coverage targets

### Documentation

- #2935: @jcrben Document how to make herokuish optional during the bootstrap installation
- #2982: @agorf Correct typo in user management docs
- #2981: @agorf Correct typos in process management docs
- #2969: @znz Correct comments on network triggers
- #2965: @znz Remove spaces from config subcommand help output to mirror help output of other subcommands
- #2954: @mrname Add vernemq community datastore plugin to docs
- #2944: @axilleas Fix syntax typo in debian installation docs
- #2932: @znz Update code comment to match documentation
- #2933: @znz Fix version number for network binding documentation
2017-12-12 02:52:29 -05:00
Jose Diaz-Gonzalez
2e0939702a fix: properly copy triggers into place 2017-12-12 02:52:22 -05:00
Jose Diaz-Gonzalez
fc4903c1c9 fix: set GOPATH globally 2017-12-12 02:14:19 -05:00
Jose Diaz-Gonzalez
3f408f1304 feat: copy golang binaries into place before usage 2017-12-12 01:49:44 -05:00
Jose Diaz-Gonzalez
e3eab48e4a Merge pull request #2998 from dokku/release-cleanup
Release cleanup
2017-12-12 01:16:14 -05:00
Jose Diaz-Gonzalez
39abbdc5dd fix: ensure the trigger is moved into the correct directory 2017-12-12 00:22:18 -05:00
Jose Diaz-Gonzalez
5d5ede2b85 revert: drop reference to CGO_ENABLED completely 2017-12-12 00:09:36 -05:00
Jose Diaz-Gonzalez
64252b282a hack: ignore libc dependency 2017-12-11 23:58:50 -05:00
Jose Diaz-Gonzalez
b449227467 revert: re-enable system net usage 2017-12-11 23:46:08 -05:00
Jose Diaz-Gonzalez
228eb9ed7a revert: re-enable CGO_ENABLED=0 2017-12-11 23:44:08 -05:00
Jose Diaz-Gonzalez
a999f9d4e5 fix: set the TRIGGERS make variable properly 2017-12-11 23:26:33 -05:00
Jose Diaz-Gonzalez
9b431321fa feat: use the built-in net package instead of linking to system 2017-12-11 23:22:27 -05:00
Jose Diaz-Gonzalez
a96c1d644a fix: turn off CGO for all go builds 2017-12-11 23:22:11 -05:00
Jose Diaz-Gonzalez
6bd6cad8fd refactor: simplify triggers targets 2017-12-11 23:21:14 -05:00
Jose Diaz-Gonzalez
58cc088445 feat: converge upon a more standard Makefile for golang plugins 2017-12-11 23:16:03 -05:00
Jose Diaz-Gonzalez
1d46208ac2 fix: ensure we have a src-clean make target for the config plugin 2017-12-11 23:00:25 -05:00
Jose Diaz-Gonzalez
465c6e9a62 fix: allow lintian to pass on hardening-no-relro 2017-12-11 22:59:38 -05:00
Jose Diaz-Gonzalez
7a8cc2687d fix: ensure we call apt-get update when calling apt-get install 2017-12-11 22:56:34 -05:00
Jose Diaz-Gonzalez
96ad5e8e5d fix: update SSHCOMMAND_URL to v0.7.0 2017-12-11 22:56:12 -05:00
Jose Diaz-Gonzalez
4cc215ea02 Merge pull request #2993 from dokku/josegonzalez-patch-1
fix: add config_all alias for plugin usage
2017-12-02 14:33:10 -05:00
Jose Diaz-Gonzalez
c10c58a1cd Merge pull request #2985 from bitmand/custom_nginx_dhparams
Build a custom dhparam file once for nginx and include it as default
2017-12-02 13:57:06 -05:00
Jose Diaz-Gonzalez
099653ca02 fix: add config_all alias for plugin usage 2017-12-02 13:55:34 -05:00
Lasse Brandt
84a6c6017d Build a custom dhparam file once for nginx and include it as default 2017-11-14 12:55:52 +01:00
Andrea Rabbaglietti
1ddef4183d Update run-on-external-volume.md 2017-11-12 20:11:53 +01:00
Jose Diaz-Gonzalez
9fcd9b0065 Merge pull request #2935 from jcrben/no-herokuish-option
docs: WIP on explaining optional herokuish
2017-11-12 13:33:05 -05:00
Jose Diaz-Gonzalez
dc9ebf867c docs: revise herokuish installation
[ci skio]
2017-11-12 13:28:36 -05:00
Jose Diaz-Gonzalez
3684c10a78 Merge pull request #2974 from dokku/josegonzalez-patch-1
feat: upgrade to herokuish 0.3.33
2017-11-11 14:28:39 -05:00
Jose Diaz-Gonzalez
10492587c2 Merge pull request #2982 from agorf/patch-2
Correct typo in user management docs
2017-11-11 13:51:15 -05:00
Jose Diaz-Gonzalez
bc93007c74 Merge pull request #2981 from agorf/patch-1
Correct typos in process management docs
2017-11-11 13:50:45 -05:00
Angelos Orfanakos
0e91a5bd0b Fix typo in user management docs 2017-11-11 13:35:52 +02:00
Angelos Orfanakos
75c7c2ebf0 Fix typos 2017-11-11 13:21:40 +02:00
Ben Creasy
6c57f1a08b docs: WIP on optional herokuish
[ci skip]
2017-11-09 22:38:22 -08:00
Jose Diaz-Gonzalez
59e5036456 feat: upgrade to herokuish 0.3.33 2017-11-05 16:09:11 -05:00
Jose Diaz-Gonzalez
158f10d321 Merge pull request #2973 from dokku/2796-git-quarantine
feat: allow usage of git 2.13.0+ by unsetting GIT_QUARANTINE_PATH during git worktree usage
2017-11-05 16:07:59 -05:00
Jose Diaz-Gonzalez
4a3047b170 feat: drop pinning of git version 2017-11-05 12:37:42 -05:00
Jose Diaz-Gonzalez
64a1c91b76 feat: allow usage of git 2.13.0+ by unsetting GIT_QUARANTINE_PATH during git worktree usage
Closes #2796
2017-11-05 12:34:47 -05:00
Jose Diaz-Gonzalez
39b879058d Merge pull request #2972 from buckle2000/patch-1
Correct typo in docker-options:remove error output
2017-11-05 12:26:36 -05:00
buckle2000
5ae9067750 Fix typo 2017-11-06 00:48:29 +08:00
Jose Diaz-Gonzalez
2af312ac03 Merge pull request #2971 from miraculixx/fix-2955
Add support for older virtualbox versions in official Dokku Vagrantfile
2017-11-04 13:04:24 -04:00
miraculixx
172bc87f32 resolve #2955 2017-11-04 14:14:02 +01:00
Jose Diaz-Gonzalez
83ef992155 Merge pull request #2969 from znz/fix-comments
Fix comments [ci skip]
2017-11-04 01:25:57 -04:00
Jose Diaz-Gonzalez
0df3f8d12d Merge pull request #2964 from znz/remove-unused
Remove unused variable
2017-11-03 18:08:00 -04:00
Jose Diaz-Gonzalez
23ee740c04 Merge pull request #2968 from znz/use-special-name
Use special name for global
2017-11-03 18:07:31 -04:00
Jose Diaz-Gonzalez
54d731aeee Merge pull request #2965 from znz/remove-spaces
Remove spaces like helps of other subcommands
2017-11-03 18:07:12 -04:00
Jose Diaz-Gonzalez
9481e7031d Merge pull request #2966 from znz/refactoring
Refactoring some codes
2017-11-03 18:07:01 -04:00
Jose Diaz-Gonzalez
70ba60e9e8 Merge pull request #2967 from znz/fix-indent
Fix indent
2017-11-03 18:05:38 -04:00
Jose Diaz-Gonzalez
04a5e8bedf Merge pull request #2963 from znz/fix-typos
Fix typos
2017-11-03 11:26:55 -04:00
Kazuhiro NISHIYAMA
9706f7a298 Fix comments [ci skip]
fix comments of `func main()`
closes #2946
2017-11-03 15:55:18 +09:00
Kazuhiro NISHIYAMA
cdd2b2028e Use special name for global
Use name with `<>` like `<unknown>` to distinguish global env and env of app named global
2017-11-03 13:41:49 +09:00
Kazuhiro NISHIYAMA
3eb7a13006 Fix indent 2017-11-03 13:30:18 +09:00
Kazuhiro NISHIYAMA
71763e18f6 Reduce copying args when global 2017-11-03 13:28:08 +09:00
Kazuhiro NISHIYAMA
e9506e80cb Reduce loading global env 2017-11-03 13:27:23 +09:00
Kazuhiro NISHIYAMA
33a540502a Remove spaces like helps of other subcommands 2017-11-03 12:51:40 +09:00
Kazuhiro NISHIYAMA
b8575a33f5 Remove unused variable 2017-11-03 12:47:30 +09:00
Kazuhiro NISHIYAMA
a3cd6f6e63 Fix typos 2017-11-03 12:42:00 +09:00
Jose Diaz-Gonzalez
85fa7a5bb0 Merge pull request #2751 from alexquick/feature-config-golang
Move config plugin to golang
2017-10-28 20:40:06 -04:00
Andrea Rabbaglietti
72d702a522 Add doc page 'Run Dokku on External Volume' 2017-10-27 14:01:11 +02:00
Alex Quick
90ee5d58c5 [config] use field names in struct literals 2017-10-24 09:12:20 -04:00
Jose Diaz-Gonzalez
ffac858566 Merge pull request #2954 from mrname/adding_vernemq_to_docs
adding vernemq plugin to docs
2017-10-23 16:06:35 -04:00
Justin Crown
0f10c94839 adding vernemq plugin to docs 2017-10-23 11:51:12 -07:00
Jose Diaz-Gonzalez
0581b38adf Merge pull request #2951 from dokku/josegonzalez-patch-1
fix: handle case where the app directory is a symlink
2017-10-22 14:06:15 -04:00
Jose Diaz-Gonzalez
576ec05a9e fix: handle case where the app directory is a symlink
Closes #2943
2017-10-21 13:52:08 -04:00
Jose Diaz-Gonzalez
6f4720adca Merge pull request #2939 from znz/remove-unnecessary-line
Remove unnecessary lines
2017-10-19 10:28:14 -04:00
Jose Diaz-Gonzalez
ab3249c76b Merge pull request #2945 from znz/fix-network-plugin-version
Fix network plugin version
2017-10-19 10:27:55 -04:00
Alex
2f7daad200 fix: typo on declare 2017-10-16 20:23:30 -04:00
Alex
6780d53c77 Merge branch 'master' of github.com:dokku/dokku into feature-config-golang 2017-10-16 20:22:28 -04:00
Kazuhiro NISHIYAMA
36fc689a5d Fix network plugin version
[ci skip]
2017-10-16 21:15:36 +09:00
Alex Quick
98c45b55b7 fix: newlines at eof 2017-10-16 02:21:38 -04:00
Alex Quick
1be66bd1bc [config] don't alias import 2017-10-16 02:09:26 -04:00
Alex Quick
91c2164e49 [config] refactor package structure 2017-10-15 20:10:46 -04:00
Jose Diaz-Gonzalez
9876b9e588 Merge pull request #2944 from axilleas/patch-1
Fix syntax typo in debian.md
2017-10-15 14:08:07 -04:00
Achilleas Pipinellis
58e36fee10 Fix syntax typo in debian.md
[ci skip]
2017-10-15 13:54:13 +03:00
Alex Quick
03830562c2 move around the members of configenv to make more sense 2017-10-12 23:49:22 -04:00
Alex Quick
430cc2b4ca [config] move PrettyPrintEnvEntries 2017-10-12 23:42:14 -04:00
Alex Quick
3f497908b5 [config] use named returns where applicable 2017-10-12 23:41:42 -04:00
Alex Quick
3422866909 [config] remove spurious newlines 2017-10-12 22:50:29 -04:00
Alex Quick
b84635baf7 [config] remove old code 2017-10-12 22:49:44 -04:00
Alex Quick
ad8bcecb5b [config] clean up PlugnTrigger and NewShellCmd 2017-10-12 22:38:18 -04:00
Alex Quick
c896ca700c [config] remove vestige of old test 2017-10-12 21:42:18 -04:00
Alex Quick
ecf67d3cdd [config] add eof newlines where needed 2017-10-12 21:40:26 -04:00
Alex Quick
e9b9091de5 [config] remove extra test targets 2017-10-12 21:35:33 -04:00
Kazuhiro NISHIYAMA
62b27d4007 Remove unnecessary lines
Because never reached when `VHOST` is regular file.
(reachable when `VHOST` is fifo, etc.)

[ci skip]
2017-10-11 20:58:26 +09:00
Michael Hobbs
cc3ccda90a Merge pull request #2938 from dokku/mh/chore/upgrade-golang
upgrade to golang 1.9.1
2017-10-10 10:11:52 -07:00
Michael Hobbs
dc79152fe0 upgrade to golang 1.9.1 2017-10-10 08:13:59 -07:00
Michael Hobbs
6b340c69b5 Merge pull request #2937 from dokku/mh/fix/strip-restart-flag
strip restart flag from app_user_pre_deploy_trigger
2017-10-09 16:03:04 -07:00
Michael Hobbs
f2ec959598 strip restart flag from app_user_pre_deploy_trigger 2017-10-09 15:33:09 -07:00
Jose Diaz-Gonzalez
b16c2876c4 Merge branch 'master' into feature-config-golang 2017-10-06 11:13:15 -04:00
Jose Diaz-Gonzalez
3f50097619 Merge pull request #2932 from znz/fix-comment
Fix comment
2017-10-06 11:12:58 -04:00
Jose Diaz-Gonzalez
28ca39266c Merge pull request #2933 from znz/fix-typo
Fix version number [ci skip]
2017-10-06 11:12:07 -04:00
Kazuhiro NISHIYAMA
6dcf695822 Fix version number [ci skip]
in document of Container network interface binding
2017-10-06 20:07:18 +09:00
Kazuhiro NISHIYAMA
aeba3f2269 Fix comment
[ci skip]
2017-10-06 20:01:35 +09:00
Jose Diaz-Gonzalez
1fb0e737c3 Merge pull request #2931 from dokku/josegonzalez-patch-1
fix: upgrade git package for CI
2017-10-05 23:15:55 -04:00
Jose Diaz-Gonzalez
462a648ac8 Merge pull request #2928 from silverfix/patch-1
fix: do not overwrite the VHOST file during installation if it exists
2017-10-05 22:32:58 -04:00
Jose Diaz-Gonzalez
6523163701 fix: upgrade git package for CI 2017-10-05 22:28:24 -04:00
Jose Diaz-Gonzalez
a9a9d0a898 Merge pull request #2926 from vtavernier/issue-2915
Fix #2915
2017-10-05 22:05:55 -04:00
Jose Diaz-Gonzalez
2851f2c63f fix: remove duplicate logging functions 2017-10-05 13:26:20 -04:00
Jose Diaz-Gonzalez
5e82b37147 Merge branch 'master' into feature-config-golang 2017-10-04 19:04:31 -04:00
Jose Diaz-Gonzalez
810ebffceb Merge pull request #2736 from dokku/2403-network-plugin
Implement Network Plugin
2017-10-04 18:55:41 -04:00
Jose Diaz-Gonzalez
adedd3af5d fix: avoid Hash Sum mismatch errors 2017-10-04 01:11:09 -04:00
Jose Diaz-Gonzalez
722f22e7f0 fix: avoid old gpg key error 2017-10-04 01:06:17 -04:00
Jose Diaz-Gonzalez
ad732bd42b feat: add network:report command 2017-10-04 00:58:29 -04:00
Michael Hobbs
fdbab2c291 fix test coverage deps 2017-10-02 16:57:45 -07:00
Michael Hobbs
8654783131 style tweaks 2017-10-02 16:50:05 -07:00
Michael Hobbs
b099d2c389 add more tests 2017-10-02 16:49:54 -07:00
Michael Hobbs
c9ea884e5d move coverage command to only run on ci 2017-10-02 16:36:12 -07:00
Michael Hobbs
fbf9077075 make test more flexible 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
5e32f9a89d refactor: go back to the old regex 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
690c32ceb8 fix: use the same method to trigger the client 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
7d73577952 refactor: use grep -E instead of egrep 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
edfec35177 feat: add symlinks to all network and proxy hooks 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
c2ee6e99c6 fix: update unconfigured client test regex 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
419d687c50 fix: remove proxy enabled checks when retrieving a container's ip and port 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
3ca5503b74 fix: actually echo the property 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
acde3d60a7 feat: allow users to bind to all interfaces when a proxy is enabled
- use a plugin trigger to see whether we should bind to all interfaces
- create a generic way of setting properties for a plugin
- migrate proxy-enabled to the new network property "bind-all-interfaces"
- add network:set subcommand
2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
7a4464a8ae feat: more loggers 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
096ba83f41 refactor: alphabetize more functions 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
04cd5eeb91 refactor: move all logging functions to their own file 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
9d287d0a5d refactor: alphabetize functions 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
af13d1247f refactor: consolidate DOKKU_DISABLE_PROXY usage into the proxy plugin 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
81ddef04ff refactor: drop direct access to PORT files 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
9ef7c385d4 refactor: drop extra sub-shell 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
dc00542b6f refactor: remove use of IP and PORT files from core-post-deploy plugin 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
7fe2f8593c refactor: remove unused IS_HEROKUISH_CONTAINER argument 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
20dca9fd46 fix: convert the containerIndex to a string to ensure it is properly passed to the plugn trigger 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
647efab2dd fix: ensure we always call proxy-build-config when calling ps_start 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
44282fd857 fix: Declare and assign separately to avoid masking return values. 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
1372522258 fix: Declare and assign separately to avoid masking return values. 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
27f247eabd fix: do not shadow id variable 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
a3abf8016b fix: correct lint errors 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
3b9f4ba63f fix: correct lint errors 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
92d6e76ea4 fix: ignore vendor directories 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
350efd8d53 chore: remove use of deprecated method 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
6f008d6643 fix: use correct conditional check for isHerokuishContainer 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
6e76831b5d fix: use correct flag parameter for app name 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
31333452c8 fix: refactor retrieval of network and docker inspect information 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
25759bcbb4 fix: use correct flag positional argument 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
72eb8a06f0 fix: respond to all review comments 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
1e8831d9a0 chore: remove unused nullglob 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
c788659b63 refactor: rewrite network plugin in golang 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
e74346f0dc fix: call correct command 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
5b592575e7 fix: call correct command 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
c43a3edfc6 fix: ensure ports are set to an array 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
94149c8445 fix: properly pass PROC_TYPE 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
7fd32fb3e8 fix: properly retrieve ports list 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
006eb452f1 fix: do not generate network config if there is no generated scale file 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
2c5190bf63 fix: set IS_HEROKUISH_CONTAINER=false to false by default 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
0cc9e42c59 fix: check IS_HEROKUISH_CONTAINER value check 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
b409af602a fix: call network-get-ipaddr correctly 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
b0afa778fb chore: minor cleanup 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
b8a4152e10 fix: call the correct method in the proxy-build-config hook 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
4949d1e33e fix: always pass in IS_HEROKUISH_CONTAINER 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
06a7cb2a3d fix: check correct variable 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
aee88d081d fix: add missing proxy/functions source call 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
f71d147a8f fix: add missing argument 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
dfad37ba23 fix: cleanup issues retrieving the port and ipaddr for a container 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
1a2ed28e5b docs: add documentation for all new triggers 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
054a1328f7 fix: thren => then 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
901ec7c213 refactor: retrieve ip and port for checks from the network plugin triggers 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
6fbd148597 fix: properly name variable to avoid reference issues 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
d7d5d373c9 feat: refactor to retrieve listeners from network plugin 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
a9e0f8b7be fix: ensure we write the ipaddr and port 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
f668bec210 docs: move dns and proxy management to new networking section 2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
1835b04809 feat: refactor to use network plugin
- Add proxy-build-config hook to rebuild network and proxy settings for an application
- Scope nginx:build-config to work only when it is the configured proxy for an application
- Refactor deploy code to interact with network plugin for computed and actual ipaddr/port settings
- Ensure the proxy-build-config plugin trigger is called on ps:restore
- Expose a few plugin triggers for retrieving networking information for a given APP/PROC_TYPE/CONTAINER_ID combination
2017-10-02 15:05:13 -07:00
Jose Diaz-Gonzalez
ec9b8be5f8 feat: implement first-pass at networking plugin
Implements help, `rebuild`, and `rebuildall` command.

Refs #2403
2017-10-02 15:05:13 -07:00
Michael Hobbs
8be92d9739 Merge pull request #2929 from dokku/mh/chore/codacy
add codacy config and coverage targets
2017-10-02 15:04:38 -07:00
Michael Hobbs
bbb38031f0 add codacy config and coverage targets 2017-10-02 14:41:03 -07:00
Jose Diaz-Gonzalez
c25ef5dc4c fix: Declare and assign separately to avoid masking return values 2017-10-02 11:57:50 -04:00
Jose Diaz-Gonzalez
093414b846 feat: add logging 2017-10-02 11:48:29 -04:00
Jose Diaz-Gonzalez
f664ad1cde fix: remove extra whitespace 2017-10-02 11:40:31 -04:00
Andrea Rabbaglietti
5e9306ad40 Fix #2927
Fix to prevent dokku upgrade on debian systems overwrites ${DOKKU_ROOT}/VHOST
2017-10-02 17:37:17 +02:00
Vincent Tavernier
c9af7e4cfa Fix #2915
Add forward slash cleanup of the app name for the git-upload-pack
command. Prevents is_valid_app_name from removing the application folder
on `git fetch`.
2017-10-02 09:29:30 +02:00
Alex Quick
5d72f145df [config] restore dokku config functionality and fix docs 2017-10-01 22:50:01 -04:00
Jose Diaz-Gonzalez
5b3506584a Release 0.10.5
# History

## 0.10.5

### Bug Fixes

- #2912: @josegonzalez Add missing depends statement for rsyslog
- #2906: @manuel-colmenero Check the location of nginx in a central way
- #2895: @josegonzalez cd to app directory when calling git worktree add

### Documentation

- #2922: @axilleas Clarify the minimum Nginx version for HTTP/2 support
- #2919: @wootwoot1234 Update nginx documentation surrounding file uploading for php buildpack users
- #2913: @znz Fix a typo in the rpm release script
- #2910: @buckle2000 Add a note about using the full git url for non-compliant toolchains
2017-10-01 15:12:30 -04:00
Jose Diaz-Gonzalez
27748f9576 Merge pull request #2922 from axilleas/docs/nginx-http2
Clarify the minimum Nginx version for HTTP/2 support
2017-10-01 14:46:34 -04:00
Jose Diaz-Gonzalez
e6f7d4a732 docs: remove unnecessary doc explanation
[ci skip]
2017-10-01 14:46:20 -04:00
Jose Diaz-Gonzalez
32b18a8a5c Merge pull request #2924 from dokku/josegonzalez-patch-1
fix: use a colon instead of a slash for remotes
2017-10-01 14:42:32 -04:00
Jose Diaz-Gonzalez
160a5c9760 fix: use a colon instead of a slash for remotes
Using a slash is broken as it will assume that is part of the remote name.

[ci skip]
2017-10-01 14:42:07 -04:00
Achilleas Pipinellis
dde1531f42 Clarify the minimum Nginx version for HTTP/2 support
Add docs for https://github.com/dokku/dokku/pull/2496

[ci skip]
2017-10-01 12:12:14 +02:00
Alex Quick
60e3b37d39 [config] trigger app restart through plugn rather than exec 2017-09-27 23:56:43 -04:00
Alex Quick
a8563489e7 [common] fix PlugnTrigger 2017-09-27 23:56:42 -04:00
Alex Quick
a86c037a91 [config] upgrade to godotenv 1.2.0 2017-09-27 23:56:42 -04:00
Jose Diaz-Gonzalez
523429b47f fix: ignore vendor directories 2017-09-27 23:56:42 -04:00
Alex Quick
a13722eec1 [config] update glide dependencies 2017-09-27 23:56:42 -04:00
Alex Quick
8e8b6d60f0 fix: Declare and assign separately to avoid masking return values. 2017-09-27 23:56:42 -04:00
Alex Quick
4808c047ee [config] make HasKey more idiomatic 2017-09-27 23:56:42 -04:00
Alex Quick
be5e81b246 [config] config:get exit with status 1 if key is not set in env 2017-09-27 23:56:42 -04:00
Jose Diaz-Gonzalez
a137ed64dc fix: Declare and assign separately to avoid masking return values. 2017-09-27 23:56:42 -04:00
Jose Diaz-Gonzalez
fc1129c728 fix: correct flake8 issues 2017-09-27 23:56:42 -04:00
Alex Quick
a22594b891 [config] update docs 2017-09-27 23:56:41 -04:00
Alex Quick
4f5c747c99 [config] add config:export --format shell 2017-09-27 23:56:41 -04:00
Alex Quick
e7a81a8f8b [config] error message when no key is given for config:get 2017-09-27 23:56:41 -04:00
Alex Quick
32414b343a [config] show empty config when ENV file doesn't exist yet 2017-09-27 23:56:41 -04:00
Alex Quick
eeb6e78fa4 [config] move to godotenv 2017-09-27 23:56:41 -04:00
Alex Quick
08aa2b9fa4 [config] improve logging and default command 2017-09-27 23:56:41 -04:00
Alex Quick
8b90d4ebf9 [config] move vendor to right place 2017-09-27 23:56:41 -04:00
Alex Quick
133fdc1f0a [config] support for old export-style config files 2017-09-27 23:56:41 -04:00
Alex Quick
e7e01ee838 [config] fix shellcheck 2017-09-27 23:56:40 -04:00
Alex Quick
12c9536a7b [config] test python buildpack too 2017-09-27 23:56:40 -04:00
Alex Quick
c20fbfccf6 [config] support for env bundles 2017-09-27 23:56:40 -04:00
Alex Quick
fd27d90303 [config] config:export --merge, --prefix, & --suffix 2017-09-27 23:56:40 -04:00
Alex Quick
686428a41a [config] lint fixes 2017-09-27 23:56:40 -04:00
Alex Quick
73e85b7df5 [config] preliminary Dockerfile support 2017-09-27 23:56:40 -04:00
Alex Quick
dfa241d6a9 [dockerfile] test new config stuff 2017-09-27 23:56:40 -04:00
Alex Quick
dd8e1fdf45 [config] no longer reenter dokku in config/functions 2017-09-27 23:56:40 -04:00
Alex Quick
21b091ab14 [config] update test-deploy-config to include odd characters 2017-09-27 23:56:40 -04:00
Alex Quick
416b499670 [nginx-proxy] remove trailing spaces from PROXY_PORT_MAP
this plugin used to rely on the fact that config
supressed trailing spaces
2017-09-27 23:56:39 -04:00
Alex Quick
dc90a889d7 [config] add config:set --encoded (base64)
You can now set b64encoded values. They are
stored decoded, this is so dokku over ssh can set
odd config values
```
config:set --encoded KEY=BASE_64_VALUE
```
2017-09-27 23:56:39 -04:00
Alex Quick
14757ca925 [config] change file format to match bash exports
got rid of nonstandard escaping/quoting so that
the disk file is a strict subset of valid bash exports
2017-09-27 23:56:39 -04:00
Alex Quick
7d865ccb1f [config] refactor makefile 2017-09-27 23:56:39 -04:00
Alex Quick
294d4b1f29 [config] first cut of config rewritten in golang
still to do:
* Rework disk format to be okay with quotes
* Fix Dockerfile deployments
* Dedup code in the subcommands
* Add --encode
* Add deploytests for the new stuff
* Restore some log messages (should I make some helpers in common?)
* Restore some functions that may be used by 3d-party plugins
2017-09-27 23:56:39 -04:00
Alex Quick
5e3184b61d [common] helper for go trigger plugn events 2017-09-27 23:56:39 -04:00
Alex Quick
e57e1408b2 [common] add NewTokenizedShellCmd to ShellCmd 2017-09-27 23:56:39 -04:00
Alex Quick
ef95d2bcd4 [config] test some config oddities 2017-09-27 23:56:39 -04:00
Jose Diaz-Gonzalez
d8602c52af Merge pull request #2919 from wootwoot1234/patch-1
Update nginx.md
2017-09-27 23:14:38 -04:00
Jose Diaz-Gonzalez
657bb1d2a1 docs: clarify Procfile/nginx.conf usage
[ci skip]
2017-09-27 23:14:23 -04:00
Tom
0bd6b041c8 Update nginx.md
Added an explanation of how to add additional nginx configuration to the `nginx.conf` file imported in a Procfile. Here's a related issue: https://github.com/dokku/dokku/issues/2917#issuecomment-332704867
2017-09-27 21:50:14 -05:00
Jose Diaz-Gonzalez
28077dff67 Merge pull request #2913 from znz/fix-typo
Fix a typo [ci skip]
2017-09-26 12:51:24 -04:00
Kazuhiro NISHIYAMA
68917f12fb Fix a typo [ci skip] 2017-09-26 20:55:15 +09:00
Jose Diaz-Gonzalez
bb1b657ac9 Merge pull request #2912 from dokku/josegonzalez-patch-1
fix: add depends statement for rsyslog
2017-09-25 14:55:37 -04:00
Jose Diaz-Gonzalez
07c83d4d32 fix: add depends statement for rsyslog
Refs #2911
2017-09-25 13:43:07 -04:00
Jose Diaz-Gonzalez
264109360b Merge pull request #2910 from buckle2000/master
Mention full git URL
2017-09-23 02:58:34 -04:00
Jose Diaz-Gonzalez
2278290b91 docs: reword note.
[ci skip]
2017-09-23 02:58:25 -04:00
buckle2000
23bcb4127a Update application-deployment.md
Well, please add a yellow "warning" background to the added backquote.
2017-09-23 14:53:35 +08:00
Jose Diaz-Gonzalez
8004f0962c Merge pull request #2906 from manuel-colmenero/master
fix: Check the location of nginx in a central way
2017-09-19 13:53:21 -04:00
Jose Diaz-Gonzalez
689f0443f3 chore: remove unnecessary dokku_log_fail
[ci skip]
2017-09-19 13:53:00 -04:00
Manuel Colmenero
441e864ea1 fix: Declare and assign separately to avoid masking return values
Fixes the introduced CI warnings.
2017-09-19 19:14:48 +02:00
Manuel Colmenero
4f17392bf1 fix: Move operator inside the brackets 2017-09-19 08:27:21 +02:00
Manuel Colmenero
deace7a03a fix: Remove unnecessary nesting 2017-09-19 08:26:55 +02:00
Manuel Colmenero
c49f81cd8b fix: Check first in $PATH for nginx, use sbin location as backup 2017-09-18 21:19:30 +02:00
Manuel Colmenero
bada02a122 Use double brackets instead of single ones 2017-09-18 21:09:03 +02:00
Manuel Colmenero
3d785360e1 fix: Check the location of nginx in a central way
- Now there's only a "single source of truth" for the location of the nginx
  binary.
- It is checked if it's there before it's needed.
2017-09-18 20:19:27 +02:00
Jose Diaz-Gonzalez
3a81c8f279 Merge pull request #2895 from dokku/2864-git-rebuild-in-dir
fix: Change to app directory when calling git worktree add
2017-09-02 14:33:08 -04:00
Jose Diaz-Gonzalez
9f64fdb9b6 fix: Change to app directory when calling git worktree add
Closes #2864
2017-09-02 14:10:47 -04:00
Jose Diaz-Gonzalez
e9873c58a8 Release 0.10.4
# History

## 0.10.4

### Bug Fixes

- #2894: @josegonzalez fix: bail if any step in the release process fails
- #2880: @josegonzalez fix: properly detect empty subcommands
- #2881: @josegonzalez Verify app name on git push
- #2858: @cstroe Use correct port number for the upstream.
- #2848: @josegonzalez Ensure https applications return an https url from `dokku url`
- #2839: @josegonzalez fix: skip clearing cache if we are not building a herokuish image

### New Features

- #2890: @michaelshobbs use circleci 2.0
- #2847: @scjody Add nginx ppa before installing Dokku
- #2850: @michaelshobbs add optional PROC_TYPE and CONTAINER_INDEX to docker-args-deploy plugn trigger
- #2840: @josegonzalez Add DYNO environment variable to run containers
- #2824: @josegonzalez Upgrade herokuish to version 0.3.31

### Documentation

- #2861: @adelq Use non-deprecated apps command
- #2878: @m0rth1um Add telegram notifications plugin
- #2876: @josegonzalez docs: clarify storage documentation caveats
- #2873: @josegonzalez docs: add a note on which docs to look at for customizing nginx docs
- #2867: @josegonzalez docs: cleanup help output for dokku shell
- #2859: @josegonzalez docs: use relative link for application deployment doc
- #2866: @josegonzalez Add missing migration guides
- #2863: @josegonzalez docs: fix syntax on getting started docs
- #2836: @fishnux Add a note regarding nginx dependency to installation docs
- #2834: @iansu Clarify port exposure in Dockerfile documentation
2017-09-02 13:15:23 -04:00
Jose Diaz-Gonzalez
a4a3bfc556 Merge pull request #2894 from dokku/release-error-catching
fix: bail if any step in the release process fails
2017-09-02 02:44:41 -04:00
Jose Diaz-Gonzalez
235115af9c Merge pull request #2880 from dokku/2849-empty-subcommand
fix: properly detect empty subcommands
2017-09-02 02:44:30 -04:00
Jose Diaz-Gonzalez
aa82042db2 fix: bail if any step in the release process fails 2017-09-01 23:51:15 -04:00
Jose Diaz-Gonzalez
e8f1ce501a fix: check that subcommand is non-zero in length 2017-09-01 23:43:58 -04:00
Jose Diaz-Gonzalez
a4f4bef1f6 fix: remove syntax error 2017-09-01 23:16:10 -04:00
Jose Diaz-Gonzalez
6aa315f815 fix: properly detect empty subcommands
Closes #2849
2017-09-01 23:16:10 -04:00
Jose Diaz-Gonzalez
15494d85a9 Merge pull request #2881 from dokku/2807-bad-app-name
Verify app name on git push
2017-09-01 11:59:49 -04:00
Michael Hobbs
787e2f106a Merge pull request #2890 from dokku/mh/chore/circle-2.0-machine-exec
use circleci 2.0
2017-08-29 13:53:21 -07:00
Michael Hobbs
4db991c891 use circleci 2.0 2017-08-29 13:12:03 -07:00
Jose Diaz-Gonzalez
ab11453fc8 feat: validate app name when running git functions 2017-08-19 19:16:40 -04:00
Jose Diaz-Gonzalez
1a5bea6dde refactor: extract app name validation 2017-08-19 19:16:16 -04:00
Jose Diaz-Gonzalez
5e0ea9c734 Merge pull request #2858 from cstroe/issue-2857-nginx-conf-with-multiple-expose-ports
Use correct port number for the upstream.
2017-08-19 19:08:13 -04:00
Jose Diaz-Gonzalez
68e628d384 Merge pull request #2861 from adelq/patch-1
Use non-deprecated apps command
2017-08-19 19:05:29 -04:00
Jose Diaz-Gonzalez
0babde74f3 docs: update uninstallation docs to clarify which subcommand to use for listing applications
[ci skip]
2017-08-19 19:03:20 -04:00
Jose Diaz-Gonzalez
42cee30187 Merge pull request #2878 from m0rth1um/patch-1
Add telegram notifications plugin
2017-08-19 18:31:36 -04:00
Moritz Mackiewicz
c50f1c8830 Update plugins.md 2017-08-19 19:01:41 +02:00
Jose Diaz-Gonzalez
1db9e16006 Merge pull request #2876 from dokku/josegonzalez-patch-1
docs: clarify storage documentation caveats
2017-08-17 15:05:49 -04:00
Jose Diaz-Gonzalez
3bf3bb433b docs: clarify user/group id
[ci skip]
2017-08-17 14:43:56 -04:00
Jose Diaz-Gonzalez
fa0b4b26ac docs: clarify storage documentation caveats
[ci skip]
2017-08-17 14:36:23 -04:00
Jose Diaz-Gonzalez
ec9f81b323 Merge pull request #2873 from dokku/jdg-customization-notes
docs: add a note on which docs to look at for customizing nginx docs
2017-08-15 11:26:08 -04:00
Jose Diaz-Gonzalez
c400bc8f03 docs: add a note on which docs to look at for customizing nginx docs
[ci skip]
2017-08-15 11:25:50 -04:00
Dmitry
fc2fb71396 docs: fix vertical scroll for the slack-channel section (#2869) 2017-08-14 06:36:55 -05:00
Jose Diaz-Gonzalez
e8287b839f Merge pull request #2867 from dokku/josegonzalez-patch-1
docs: cleanup help output for dokku shell
2017-08-10 17:30:00 -04:00
Jose Diaz-Gonzalez
fcd713b23c docs: cleanup help output for dokku shell
[ci skip]
2017-08-10 17:28:47 -04:00
Jose Diaz-Gonzalez
294f82c327 Merge pull request #2859 from dokku/josegonzalez-patch-1
docs: use relative link for application deployment doc
2017-08-09 17:25:57 -04:00
Jose Diaz-Gonzalez
0cc8ee6669 Merge pull request #2866 from dokku/josegonzalez-patch-2
Add missing migration guides
2017-08-09 17:25:46 -04:00
Jose Diaz-Gonzalez
e7a2284226 Create 0.10.0-migration-guide.md
[ci skip]
2017-08-09 17:23:51 -04:00
Jose Diaz-Gonzalez
64162a0bfd Create 0.9.0-migration-guide.md 2017-08-09 17:19:53 -04:00
Jose Diaz-Gonzalez
c2f92e07d9 Create 0.8.0-migration-guide.md 2017-08-09 17:15:30 -04:00
Jose Diaz-Gonzalez
29e44260a0 docs: add links to migration guides
[ci skip]
2017-08-09 17:07:06 -04:00
Jose Diaz-Gonzalez
e2bebe078a Merge pull request #2863 from dokku/josegonzalez-patch-2
docs: fix syntax on getting started docs
2017-08-08 01:10:18 -04:00
Jose Diaz-Gonzalez
d025a00d18 docs: fix syntax on getting started docs
[ci skip]
2017-08-08 01:09:49 -04:00
Adel Qalieh
db0b2bc93e Use non-deprecated apps command 2017-08-04 14:48:07 -04:00
Cosmin Stroe
0b2bea3fa9 Use upstream port in nginx.conf template 2017-08-04 12:26:35 -05:00
Cosmin Stroe
9156dea8b7 Revert "Fix upstream ports configuration."
This reverts commit 1f93169c43.
2017-08-04 12:20:35 -05:00
Cosmin Stroe
1f93169c43 Fix upstream ports configuration. 2017-08-04 02:21:31 -05:00
Cosmin Stroe
65990068cb Revert "Use correct port number for the upstream."
This reverts commit 52b45d74cb.
2017-08-04 00:24:12 -05:00
Jose Diaz-Gonzalez
4008919a3c docs: use relative link for application deployment doc
[ci skip]
2017-08-04 00:54:51 -04:00
Cosmin Stroe
52b45d74cb Use correct port number for the upstream. 2017-08-03 22:24:14 -05:00
Jose Diaz-Gonzalez
ee27ea76a6 Merge pull request #2847 from plotly/add-ppa-before-apt
Add nginx ppa before installing Dokku
2017-07-30 14:09:52 -04:00
Josh Manders
a85159425b Merge branch 'master' into add-ppa-before-apt 2017-07-26 22:19:25 -05:00
Michael Hobbs
ab69be6665 Merge pull request #2850 from dokku/mh/chore/optional-docker-args-deploy
add optional PROC_TYPE and CONTAINER_INDEX to docker-args-deploy plugn trigger
2017-07-26 10:36:02 -07:00
Michael Hobbs
68ca119ae0 add syslog plugin 2017-07-26 10:35:41 -07:00
Michael Hobbs
a0e05eaef0 add optional PROC_TYPE and CONTAINER_INDEX to docker-args-deploy plugn trigger 2017-07-26 09:04:14 -07:00
Jody McIntyre
34d80a18dc Merge branch 'master' into add-ppa-before-apt 2017-07-24 11:46:53 -04:00
Jose Diaz-Gonzalez
1a38b5533d Merge pull request #2848 from dokku/fix_app_url_with_https
Ensure https applications return an https url from `dokku url`
2017-07-23 14:34:17 -06:00
Jose Diaz-Gonzalez
7df06fb2f6 fix: ensure tests pass 2017-07-22 15:17:40 -06:00
Domonkos Czinke
0efb690992 Fix URL error and add test 2017-07-22 15:15:54 -06:00
Domonkos Czinke
5af42dc678 url command should return https if it's configured 2017-07-22 15:15:54 -06:00
Jose Diaz-Gonzalez
2b929a98e7 Merge pull request #2839 from dokku/2771-dockerfile-cache
fix: skip clearing cache if we are not building a herokuish image
2017-07-22 15:07:35 -06:00
Josh Manders
9aa3721aa3 Merge branch 'master' into add-ppa-before-apt 2017-07-22 13:11:22 -05:00
Jose Diaz-Gonzalez
5ee257304a Merge pull request #2840 from dokku/2837-dyno-run-env-var
Add DYNO environment variable to run containers
2017-07-21 13:49:15 -06:00
Jody McIntyre
4497a54b12 Add nginx ppa before installing Dokku
Fixes #2845
2017-07-21 15:41:33 -04:00
Jose Diaz-Gonzalez
13ff7f7b96 feat: add DYNO environment variable to run containers. Closes #2837 2017-07-17 03:53:42 -06:00
Jose Diaz-Gonzalez
0147d55302 fix: skip clearing cache if we are not building a herokuish image
Closes #2771
2017-07-17 00:30:35 -06:00
Josh Manders
2169fb3859 Merge pull request #2836 from fishnux/patch-1
Added a note on documentation (issue #2835)
2017-07-13 10:37:35 -05:00
fishnux
8f9e23a59d Reworded some bits on installation.md 2017-07-13 12:24:32 +01:00
fishnux
9735f73c38 Clarified nginx installation issue 2017-07-13 12:20:35 +01:00
fishnux
a8d60e13e1 Added a note on documentation (issue #2835)
Added a small note that points to issue #2835, since some Linux distros appear to install an old nginx version by default
2017-07-12 23:00:20 +01:00
Jose Diaz-Gonzalez
b843716113 Merge pull request #2834 from iansu/patch-1
Update dockerfiles.md
2017-07-10 15:26:03 -06:00
Jose Diaz-Gonzalez
f442e6fabf docs: clarify port exposing
[ci skip]
2017-07-10 15:24:35 -06:00
Ian Sutherland
e8e6660b2a Update dockerfiles.md
Added a note about port ordering in Dockerfile.
2017-07-10 14:32:12 -06:00
Jose Diaz-Gonzalez
6dd4e61e04 Merge pull request #2824 from dokku/josegonzalez-patch-1
Upgrade herokuish to version 0.3.31
2017-07-09 14:28:21 -06:00
Jose Diaz-Gonzalez
98fa428386 Release 0.10.3
# History

## 0.10.3

### Bug Fixes

- #2832: @josegonzalez fix: use python2.7 binary instead of python2 binary
2017-07-09 14:12:16 -06:00
Jose Diaz-Gonzalez
a145333fbd Merge pull request #2832 from dokku/josegonzalez-python27
fix: use python2.7 binary instead of python2 binary
2017-07-09 14:11:32 -06:00
Jose Diaz-Gonzalez
72491257c3 fix: use python2.7 binary instead of python2 binary
On hosts where python3 is the system default python env and there is a minimal server installation, Dokku will silently fail to return the values of json keys.
2017-07-08 17:54:12 -06:00
Jose Diaz-Gonzalez
0bdc6e443e feat: Upgrade herokuish to version 0.3.31 2017-07-02 23:21:27 -06:00
585 changed files with 18577 additions and 5410 deletions

34
.circleci/config.yml Normal file
View File

@@ -0,0 +1,34 @@
version: 2
jobs:
build:
machine: true
parallelism: 4
steps:
- checkout
- run: |
make ci-dependencies
- run: |
./tests/ci/setup.sh
- run: |
echo 'export DOKKU_SKIP_CLEANUP=true' | sudo tee /home/dokku/.dokkurc/dokku_skip_cleanup
- run: |
# dokku.me now resolves to 10.0.0.2. add 10.0.0.2/24 to eth0
sudo ip a a 10.0.0.2/24 broadcast 10.0.0.255 dev eth0
- run: |
case $CIRCLE_NODE_INDEX in
0) sudo -E make -e lint go-tests ci-go-coverage ;;
1) sudo -E make -e deploy-test-checks-root deploy-test-config ;;
2) sudo -E make -e deploy-test-multi ;;
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;;
esac
- run:
shell: /bin/bash
command: sudo -E make -e test-ci
no_output_timeout: 60m
- store_artifacts:
path: ./coverage.out
- store_artifacts:
path: ./test-results
destination: test-results
- store_test_results:
path: test-results

5
.codacy.yml Normal file
View File

@@ -0,0 +1,5 @@
exclude_paths:
- vendor/**/*
- tests/**/*
- "**_test.go"
- contrib/*

View File

@@ -3,6 +3,9 @@
.git
.vagrant
contrib
build
docs
tests
!contrib/dokku-installer.py
!contrib/dokku-update
!contrib/bash-completion

View File

@@ -17,5 +17,5 @@ indent_size = 4
[*.go]
insert_final_newline = true
indent_style = space
indent_style = tab
indent_size = 4

5
.gitignore vendored
View File

@@ -2,7 +2,12 @@
*.rpm
.DS_Store
.ruby-version
.idea/
.vagrant
build/
data/
test-results/
stack.tgz
tmp
coverage.out
contrib/dokku-update-version

View File

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

View File

@@ -11,7 +11,7 @@ several ways to help out:
* Contribute to the [documentation](http://dokku.viewdocs.io/dokku/)
* Come up with new ways to show off our [lovely logo](https://avatars1.githubusercontent.com/u/13455795)
* Blog about different ways you are using dokku
* [Sponsor](https://opencollective.com/dokku#support) the Dokku project financially
* Sponsor the Dokku project financially on [OpenCollective](https://opencollective.com/dokku#support) or [Patreon](https://www.patreon.com/dokku)
There are a few guidelines that we need contributors to follow so that we have
a chance of keeping on top of things.

View File

@@ -1,5 +1,622 @@
# History
## 0.14.3
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.3/bootstrap.sh
sudo DOKKU_TAG=v0.14.3 bash bootstrap.sh
```
### Bug Fixes
- #3412: @josegonzalez Ensure official golang plugins have correct help output
- #3411: @josegonzalez Properly handle the nginx installation dependency
- #3406: @josegonzalez Add missing semicolons to app-json script
- #3394: @josegonzalez Quiet ps:retire where possible
### New Features
- #3410: @josegonzalez Make installs quieter
- #3409: @josegonzalez Build golang binaries with higher concurrency
- #3408: @josegonzalez Disable container restarts for stopped containers
- #3389: @heyarne Remove jQuery from web-based installer
### Documentation
- #3407: @tkrugg Fix typo on domain docs
### Tests
- #3414: @josegonzalez Test and release changes
## 0.14.2
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.2/bootstrap.sh
sudo DOKKU_TAG=v0.14.2 bash bootstrap.sh
```
### Bug Fixes
- #3395: @josegonzalez Correct early exit 1 in apps:report
### Documentation
- #3393: @jayjun Fix capitalization and formatting in installation guides
- #3392: @jayjun Fix wrong PostgreSQL environment variable in guide
- #3391: @josegonzalez Update all gpgkey paths to the new url
## 0.14.1
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.1/bootstrap.sh
sudo DOKKU_TAG=v0.14.1 bash bootstrap.sh
```
### Bug Fixes
- #3386: @josegonzalez Ensure we can deploy code when there is no pre or post-deploy script defined
## 0.14.0
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.0/bootstrap.sh
sudo DOKKU_TAG=v0.14.0 bash bootstrap.sh
```
### Bug Fixes
- #3384: @josegonzalez fix: use updated gpg key for apt repository
- #3382: @josegonzalez Set cleanup to global when no application is specified
- #3350: @josegonzalez Do not build the proxy config when there are no app listeners
- #3366: @josegonzalez Add post-app-clone-setup to network clean make target
- #3349: @josegonzalez Ensure apps are cleanly cloned
- #3356: @josegonzalez Move storage directory into DOKKU_LIB_ROOT
- #3341: @baikunz Select only default dokku network IP
- #3348: @josegonzalez Use correct name for packagecloud token when running CI commands
- #3339: @josegonzalez Properly check args when calling cleanup globally
- #3344: @josegonzalez Allow running dokku report without needing an interactive shell
### New Features
- #3381: @josegonzalez Add support for the Procfile release command
- #3380: @josegonzalez Install stable docker when using bootstrap script
- #3378: @josegonzalez Make admin setup UI look nicer
- #3369: @josegonzalez Pull invalid nginx configuration when the nginx configs fail to validate
- #3371: @josegonzalez Add tests section to changelog
- #3358: @josegonzalez Image tag deploy workflow cleanup
- #3351: @josegonzalez Do not clone URLS and VHOST files to new apps
- #3357: @josegonzalez Add support for building arbitrary releases
- #3354: @josegonzalez Drop default dhparam key size to 2048
- #3347: @josegonzalez Upgrade herokuish
- #3352: @josegonzalez Increase security of default SSL setup
- #3353: @josegonzalez Normalize tests
- #3345: @josegonzalez Allow triggering the full report for all apps via --all flag
- #3346: @josegonzalez Always overwrite the dokku.conf file for nginx
### Documentation
- #3377: @josegonzalez Remove team member section on homepage in favor of sponsor section
- #3376: @josegonzalez Switch from rawgit to jsdelivr
- #3365: @josegonzalez Remove extra tags:create call from docs
### Tests
- #3379: @josegonzalez Run mvdan/shfmt on test runs
- #3370: @josegonzalez Add junit support to shellcheck output
- #3308: @josegonzalez Add timing info to test runs on CircleCI
- #3367: @josegonzalez Run tests from built artifact
- #3368: @josegonzalez Balance circleci tests
- #3363: @josegonzalez Add a wrapper for invoking a single test
- #3362: @josegonzalez Allow tests to be run from any directory
- #3360: @josegonzalez Switch to bats-core
- #3361: @josegonzalez Do not generate dhparam for tests
### Other
- #3279: @fruitl00p Make sure the universe repo is loaded into APT
## 0.13.4
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.13.4/bootstrap.sh
sudo DOKKU_TAG=v0.13.4 bash bootstrap.sh
```
### Bug Fixes
- #3337: @josegonzalez Use correct container id variable for killing containers
### New Features
- #3338: @josegonzalez Redirect ps:retire output to a log file
## 0.13.3
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.13.3/bootstrap.sh
sudo DOKKU_TAG=v0.13.3 bash bootstrap.sh
```
### Bug Fixes
- #3330: @josegonzalez Ensure chowned properties always have a user and group set
### New Features
- #3334: @josegonzalez refactor: run every 5 minutes instead of 2
## 0.13.2
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.13.2/bootstrap.sh
sudo DOKKU_TAG=v0.13.2 bash bootstrap.sh
```
### Bug Fixes
- #3329: @josegonzalez Avoid parsing missing file when retiring containers
- #3325: @wcalandro Add "--global" to dokku cleanup on dokku update
### Documentation
- #3326: @josegonzalez Add note to release on how to upgrade via the bootstrap script
## 0.13.1
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.13.1/bootstrap.sh
sudo DOKKU_TAG=v0.13.1 bash bootstrap.sh
```
### Bug Fixes
- #3324: @josegonzalez Add missing source of config functions
## 0.13.0
### Bug Fixes
- #3312: @josegonzalez fix: keep track of failed containers regardless of docker kill output
- #3299: @josegonzalez Wrap script_bin in double-quotes
- #3295: @alexquick Sort config:show by key name
- #3288: @josegonzalez Wrap script binary in single quotes during executable check
### New Features
- #3302: @josegonzalez Add ability to check on app lock status via apps:locked command
- #3315: @aokon Upgrade herokuish to 0.4.5 version
- #3236: @josegonzalez Retire old containers
- #3307: @josegonzalez Add support for docker.io package
- #3301: @josegonzalez Add ability to sync packages to a new version of ubuntu
- #3286: @josegonzalez Sanitize docker inspect output with ps:inspect
- #3240: @josegonzalez Refactor Procfile handling to use go-procfile-util
- #3282: @josegonzalez Use create instead of run for faster and more reliable file copy from docker images
- #3280: @josegonzalez Better scheduler support
- #3259: @josegonzalez Check if script is executable when a full path is specified
### Documentation
- #3314: @royklutman Remove reference to non-existent DigitalOcean hosting plan
- #3313: @morenoh149 Indicate to user to specify hostname
- #3310: @josegonzalez Add a note to our issue template begging for money
- #3281: @josegonzalez Add documentation on custom error pages
## 0.12.13
### New Features
- #3257: @josegonzalez Suppress output in git plugin during builds
- #3254: @michaelshobbs Update herokuish to 0.4.4
### Documentation
- #3270: @alexymik Correct typo in git documentation
- #3268: @josegonzalez Correct notice on ubuntu support
- #3247: @mimischi Fix typo in ps:stopall
- #3246: @dv Change DISABLE_CHOWN to disable-chown
## 0.12.12
### New Features
- #3244: @josegonzalez Allow disabling chown for persistent storage in scheduler-docker-local
## 0.12.11
### Bug Fixes
- #3238: @josegonzalez Handle proxy issues in app renaming
- #3234: @mashrikt Unset GIT_QUARANTINE_PATH when updating repo submodule
- #3223: @josegonzalez Get the global scheduler if no app is specified
- #3218: @wcalandro Fix error text when using "dokku plugin:uninstall"
### New Features
- #3242: @josegonzalez Upgrade herokuish to 0.4.3
- #3241: @josegonzalez Add a subcommand for retrieving failed app deploy logs
- #3237: @josegonzalez Support --quiet header when showing all environment variables
### Documentation
- #3235: @josegonzalez Switch from ps:rebuild to ps:restart
- #3221: @josegonzalez Better callout for why env vars do not get applied to dockerfile builds
## 0.12.10
### New Features
- #3214: @josegonzalez Add net-tools as a dependency to debian installs
## 0.12.9
### Bug Fixes
- #3212: @josegonzalez Add missing config source
## 0.12.8
### Bug Fixes
- #3211: @josegonzalez Add missing source of config/functions
### Documentation
- #3204: @znz Add `--no-restart` to `config:unset` of `config:help`
- #3203: @josegonzalez Clarify issue template
## 0.12.7
### Bug Fixes
- #3200: @josegonzalez fix: correct bash-completion integration
### New Features
- #3199: @josegonzalez Update herokuish to 0.4.2
- #3198: @josegonzalez Cleanup temporary changes during betafish releases
## 0.12.6
### Bug Fixes
- #3193: @josegonzalez Install bash-completion files correctly
- #3179: @josegonzalez Ignore issues with popd when OS versions with stricter security
- #3177: @philm ensure dokku-redeploy runs when docker is stopped then started
- #3176: @josegonzalez Detect mixed running status on service start
### New Features
- #3195: @josegonzalez Allow lower versions of docker-engine
- #3181: @malixsys Adding support for `http2_push_preload` to nginx 1.13.9+ configuration
- #3183: @josegonzalez Unskip initial herokuish test
- #3175: @josegonzalez Implement bash-completion for commands
### Documentation
- #3197: @josegonzalez Add a tutorial for deploying applications via gitlab ci
- #3194: @josegonzalez Clarify why dokku report information is useful
- #3189: @josegonzalez Correct issue with adding a user remotely
## 0.12.5
### Bug Fixes
- #3173: @josegonzalez fix: do not output error message twice
### New Features
- #3172: @josegonzalez feat: Add the ability to ignore existing applications during a git clone
- #3171: @josegonzalez Allow users to override the reported app url
- #3170: @josegonzalez Add ps:startall command
### Documentation
- #3159: @zuck Improve docs for default site with HTTPS
## 0.12.4
### Bug Fixes
- #3168: @josegonzalez Use correct variable name when writing deploy-branch value
## 0.12.3
### Bug Fixes
- #3156: @josegonzalez fix: ensure we _always_ include all types in history output
### Documentation
- #3163: @josegonzalez Better apt install formatting
### Other
- #3153: @scjody Allow specifying a separate DOKKU_HOST_ROOT
## 0.12.2
### Bug Fixes
- #3155: @josegonzalez fix: re-add is_container_running
## 0.12.1
### Bug Fixes
- #3151: @josegonzalez fix: include missing config/functions source
## 0.12.0
### Bug Fixes
- #3146: @josegonzalez Fix non ubuntu installs
- #3138: @josegonzalez Use correct path for /etc/default file
- #3137: @josegonzalez Ensure we can disable setting the rev-env-var
- #3131: @axilleas Capitalize log sentence when renaming containers
- #3128: @Modicrumb Improve windows vagrant experience
- #3105: @znz Follow renaming from deploy-method to deploy-source
- #3101: @josegonzalez Handle stopped nginx during debian installation
### New Features
- #3141: @josegonzalez Centralize app existence checks into the apps plugin
- #3147: @josegonzalez Create proxy:ports-set call
- #3145: @josegonzalez Add report trigger
- #3144: @josegonzalez Increase curl max timeout to 600 seconds (10 minutes)
- #3107: @znz Remove unused password in ssl cert generation
- #3095: @josegonzalez Migrate env for NGINX_* to PROXY_*
- #3140: @josegonzalez Add newline to config:get output
- #3139: @josegonzalez Add ability to initialize a git repository out of band
- #3111: @josegonzalez Upgrade herokuish to 0.4.0
- #3110: @josegonzalez Upgrade herokuish to 0.3.36
- #3106: @znz Remove unnecessary shellcheck disable
- #3098: @josegonzalez Pull herokuish from docker hub when installing via package
- #3100: @josegonzalez Properly handle invalid process type entries during DOKKU_SCALE generation
- #3097: @josegonzalez Update herokuish to 0.3.35
### Documentation
- #3148: @josegonzalez Use consistent terms for domains, apps, and commands
- #3135: @josegonzalez Revert "Clarify that the checks plugin only matches content start"
- #3134: @tomdyson Fix typo in upgrading docs
- #3119: @TomasHubelbauer Link through to the application deployment page after the installation
- #3118: @Tyilo Clarify that the checks plugin only matches content start
- #3113: @ilyapoz Fix proxy management link
- #3112: @josegonzalez Minor doc css fixes
- #3104: @sarendsen Add dokku-limit to plugins documentation
- #3108: @znz Update plugin list output
## 0.11.6
### Bug Fixes
- #3091: @josegonzalez Properly trigger tar-based deploys on git-deployed repositories
- #3076: @Kjwon15 Prune worktree after build
- #3090: @josegonzalez Ensure all plugin triggers have docs and events integration
- #3089: @josegonzalez Use a longer password for self-signed certificates
### New Features
- #2950: @adelq Add configuration option to disable automatic app creation
- #3093: @josegonzalez Add subcommands to allow app locking and unlocking
- #3092: @josegonzalez Add support for configuring the app shell
### Documentation
- #3096: @josegonzalez docs: Document how to check on a running dokku-installer
## 0.11.5
### Bug Fixes
- #3088: @josegonzalez Silence port retrieval stderr
- #3086: @josegonzalez Fix help output for golang plugins
- #3079: @josegonzalez Move container status exclusively to ps plugin
### New Features
- #3085: @josegonzalez Add support for checking if an application exists
- #3032: @josegonzalez Add support for arbitrary ubuntu versions
- #3074: @josegonzalez Add the ability to disable ANSI prefixes via DOKKU_DISABLE_ANSI_PREFIX_REMOVAL
- #3083: @josegonzalez Source /etc/defaults/dokku if available
### Documentation
- #2958: @silverfix Add tutorial for running Dokku on an external volume
- #3082: @josegonzalez Switch from Gratipay to Patreon
- #3081: @josegonzalez Add docs for switching between deployment methodologies
## 0.11.4
### Bug Fixes
- #3071: @josegonzalez Do not grab restart policies if the deploy phase cannot be read
- #3065: @josegonzalez Check if dokkurc files are readable before attempting to source
- #3066: @josegonzalez Validate that all application names are valid domain names
- #3052: @alexquick Remove bad config keys on load from app/global envfiles
### New Features
- #3073: @josegonzalez Add support for rhel
- #3039: @josegonzalez Enhance security-related upgrade process
- #3038: @shrmnk Add ps:stopall subcommand
- #3055: @michaelshobbs Update to herokuish v0.3.34
- #3045: @jcrben Remove nginx configuration files on debian purge
### Documentation
- #3072: @josegonzalez Remove all references to VHOST files from documentation
- #3069: @josegonzalez Remove potentially bad nginx template examples
- #3059: @lwm Add note for runtime host configuration for checks.
- #3041: @jcrben Point to unattended install instructions
- #3053: @mimischi Add plugin to manage Dockerfile location to documentation
- #3062: @shannara Change help run command be more explicit
- #3034: @znz Fix a typo in golang config.go source
- #3061: @tomdyson Fix plugin-triggers docs typo
- #3056: @raine Fix typo in config help output
- #3044: @takuti Fix links to port-management
- #3042: @josegonzalez Improve documentation around port handling.
## 0.11.3
### Bug Fixes
- #3031: @josegonzalez fix: ensure we respect DOKKU_DEPLOY_BRANCH when rebuilding applications
### New Features
- #3028: @josegonzalez Ensure parallel runs properly for non-restorable apps and moreutils parallel
- #3030: @josegonzalez feat: allow changing the system user the properties plugin uses
- #3024: @jcrben Use high-availability pool keyserver during tests
- #3017: @josegonzalez feat: add pre-start trigger for notifying on application start
### Documentation
- #3020: @gliwka Point to docs in the right version
- #3016: @josegonzalez Update nginx template example to use http2 when available
## 0.11.2
### Bug Fixes
- #3014: @josegonzalez fix: handle case where DOKKU_DOCKERFILE_PORTS is an empty string
- #3013: @alexquick Fix some issues with config/network/repo help output
- #3012: @alexquick Fail when setting/unsetting invalid keys
- #3011: @alexquick Forward output from plugn triggers to user
- #3004: @josegonzalez Return/Exit 1 when an image being deployed is invalid
### Documentation
- #3015: @elia Tiny fixes to triggers documentation
## 0.11.1
### Bug Fixes
- #3010: @josegonzalez fix: route config_all to the `config` command to fix datastore plugin usage
- #3009: @josegonzalez fix: correct the guard around the config_export call in config_sub
- #3006: @josegonzalez fix: do not allow shadowing of the CACHE_DIR variable
- #3005: @josegonzalez fix: persist users in the dokku group through installations
- #3003: @josegonzalez Fix issues in apps:clone calls
- #3001: @josegonzalez fix: allow applications to begin with numeric values
### New Features
- #3002: @josegonzalez fix: omit redirection of docker build output
- #3000: @josegonzalez fix: remove golang files and triggers directory for packaging
## 0.11.0
### Bug Fixes
- #2998: @josegonzalez Fix issues in release process
- #2993: @josegonzalez Add config_all alias for plugin usage
- #2972: @buckle2000 Correct typo in docker-options:remove error output
- #2964: @znz Remove unused variable
- #2967: @znz Fix indentation in test file
- #2963: @znz Correct typos in config plugin and remove potential infinite recursion issue
- #2951: @josegonzalez Handle case where the app directory is a symlink
- #2939: @znz Remove unnecessary lines
- #2945: @znz Fix network plugin version
- #2937: @michaelshobbs Strip restart flag from app_user_pre_deploy_trigger
- #2931: @josegonzalez Upgrade git package for CI
- #2928: @silverfix Do not overwrite the VHOST file during installation if it exists
- #2926: @vtavernier Remove leading forward slash from app name in git-upload-pack
### New Features
- #2985: @bitmand Build a custom dhparam file once for nginx and include it as default
- #2974: @josegonzalez Upgrade to herokuish 0.3.33
- #2973: @josegonzalez Allow usage of git 2.13.0+ by unsetting GIT_QUARANTINE_PATH during git worktree usage
- #2971: @miraculixx Add support for older virtualbox versions in official Dokku Vagrantfile
- #2966: @znz Simplify internal config functions to reduce duplication
- #2751: @alexquick Move config plugin to golang
- #2938: @michaelshobbs Upgrade to golang 1.9.1
- #2736: @josegonzalez Implement Network Plugin
- #2929: @michaelshobbs Add codacy config and coverage targets
### Documentation
- #2935: @jcrben Document how to make herokuish optional during the bootstrap installation
- #2982: @agorf Correct typo in user management docs
- #2981: @agorf Correct typos in process management docs
- #2969: @znz Correct comments on network triggers
- #2965: @znz Remove spaces from config subcommand help output to mirror help output of other subcommands
- #2954: @mrname Add vernemq community datastore plugin to docs
- #2944: @axilleas Fix syntax typo in debian installation docs
- #2932: @znz Update code comment to match documentation
- #2933: @znz Fix version number for network binding documentation
## 0.10.5
### Bug Fixes
- #2912: @josegonzalez Add missing depends statement for rsyslog
- #2906: @manuel-colmenero Check the location of nginx in a central way
- #2895: @josegonzalez cd to app directory when calling git worktree add
### Documentation
- #2922: @axilleas Clarify the minimum Nginx version for HTTP/2 support
- #2919: @wootwoot1234 Update nginx documentation surrounding file uploading for php buildpack users
- #2913: @znz Fix a typo in the rpm release script
- #2910: @buckle2000 Add a note about using the full git url for non-compliant toolchains
## 0.10.4
### Bug Fixes
- #2894: @josegonzalez fix: bail if any step in the release process fails
- #2880: @josegonzalez fix: properly detect empty subcommands
- #2881: @josegonzalez Verify app name on git push
- #2858: @cstroe Use correct port number for the upstream.
- #2848: @josegonzalez Ensure https applications return an https url from `dokku url`
- #2839: @josegonzalez fix: skip clearing cache if we are not building a herokuish image
### New Features
- #2890: @michaelshobbs use circleci 2.0
- #2847: @scjody Add nginx ppa before installing Dokku
- #2850: @michaelshobbs add optional PROC_TYPE and CONTAINER_INDEX to docker-args-deploy plugn trigger
- #2840: @josegonzalez Add DYNO environment variable to run containers
- #2824: @josegonzalez Upgrade herokuish to version 0.3.31
### Documentation
- #2861: @adelq Use non-deprecated apps command
- #2878: @m0rth1um Add telegram notifications plugin
- #2876: @josegonzalez docs: clarify storage documentation caveats
- #2873: @josegonzalez docs: add a note on which docs to look at for customizing nginx docs
- #2867: @josegonzalez docs: cleanup help output for dokku shell
- #2859: @josegonzalez docs: use relative link for application deployment doc
- #2866: @josegonzalez Add missing migration guides
- #2863: @josegonzalez docs: fix syntax on getting started docs
- #2836: @fishnux Add a note regarding nginx dependency to installation docs
- #2834: @iansu Clarify port exposure in Dockerfile documentation
## 0.10.3
### Bug Fixes
- #2832: @josegonzalez fix: use python2.7 binary instead of python2 binary
## 0.10.2
### New Features

View File

@@ -1,22 +1,37 @@
> If you're using Dokku - especially for commercial purposes - consider donating to project development via [OpenCollective](https://opencollective.com/dokku) or [Patreon](https://www.patreon.com/dokku). Funds go to general development, support, and infrastructure costs.
>
> If you need help figuring out how to use a specific buildpack, or are having issues using multiple buildpacks, please see our [irc or slack channels](http://dokku.viewdocs.io/dokku/getting-started/where-to-get-help/#the-irc-and-slack-channels). Issues pertaining to buildpacks may be closed and locked.
Description of problem:
## Description of problem
### How reproducible
Output of the following commands
### Steps to Reproduce
<!-- If you're running 0.4.10+ just use dokku report-->
1.
2.
3.
- `uname -a`:
- `free -m`:
- `docker version`:
- `docker -D info`:
- `sigil -v`:
- `docker run -ti gliderlabs/herokuish:latest herokuish version`:
- `dokku version`:
- `dokku plugin`:
- `docker inspect CONTAINER_ID` (if applicable):
(BEWARE: `docker inspect` will print environment variables for some commands, be sure you're not exposing any sensitive information when posting issues. You may replace these values with XXXXXXX):
#### Actual Results
#### Expected Results
## Environment Information
### `dokku report APP_NAME` output
> This is required! Issues missing this information may be closed.
>
> For problems affecting all applications, the report output for a broken application is useful for our debugging.
> You may also run `dokku report` without any arguments to display the top-level reporting information.
### How (deb/make/rpm) and where (AWS, VirtualBox, physical, etc.) was Dokku installed?:
### Additional information
- Container Inspect Output (if applicable):
- 0.13.0+: `dokku inspect APP_NAME`
- <0.13.0: `docker inspect CONTAINER_ID`: WARNING, `docker inspect` will print environment variables for some commands, be sure you're not exposing any sensitive information when posting issues. You may replace these values with XXXXXXX.
- `cat /home/dokku/<app>/nginx.conf` (if applicable):
- Link to the exact repository being deployed (if possible/applicable):
- If a deploy is failing or behaving unexpectedly:
@@ -27,23 +42,3 @@ Output of the following commands
- If it exists, the contents of your `Procfile`.
- Output of failing Dokku commands after running `dokku trace on`
(BEWARE: `trace on` will print environment variables for some commands, be sure you're not exposing any sensitive information when posting issues. You may replace these values with XXXXXXX):
Environment details (AWS, VirtualBox, physical, etc.):
How was Dokku installed?:
How reproducible:
Steps to Reproduce:
1.
2.
3.
Actual Results:
Expected Results:
Additional info:

View File

@@ -1,6 +1,8 @@
DOKKU_VERSION ?= master
SSHCOMMAND_URL ?= https://raw.githubusercontent.com/dokku/sshcommand/v0.6.0/sshcommand
PROCFILE_VERSION ?= 0.4.0
SSHCOMMAND_URL ?= https://raw.githubusercontent.com/dokku/sshcommand/v0.7.0/sshcommand
PROCFILE_UTIL_URL ?= https://github.com/josegonzalez/go-procfile-util/releases/download/v${PROCFILE_VERSION}/procfile-util_${PROCFILE_VERSION}_linux_x86_64.tgz
PLUGN_URL ?= https://github.com/dokku/plugn/releases/download/v0.3.0/plugn_0.3.0_linux_x86_64.tgz
SIGIL_URL ?= https://github.com/gliderlabs/sigil/releases/download/v0.4.0/sigil_0.4.0_Linux_x86_64.tgz
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
@@ -26,7 +28,7 @@ endif
include common.mk
.PHONY: all apt-update install version copyfiles man-db plugins dependencies sshcommand plugn docker aufs stack count dokku-installer vagrant-acl-add vagrant-dokku go-build
.PHONY: all apt-update install version copyfiles copyplugin man-db plugins dependencies sshcommand procfile-util plugn docker aufs stack count dokku-installer vagrant-acl-add vagrant-dokku go-build
include tests.mk
include deb.mk
@@ -38,17 +40,6 @@ all:
install: dependencies version copyfiles plugin-dependencies plugins
release: deb-all rpm-all package_cloud packer
package_cloud:
package_cloud push dokku/dokku/ubuntu/trusty herokuish*.deb
package_cloud push dokku/dokku/ubuntu/trusty sshcommand*.deb
package_cloud push dokku/dokku/ubuntu/trusty plugn*.deb
package_cloud push dokku/dokku/ubuntu/trusty dokku*.deb
package_cloud push dokku/dokku/el/7 herokuish*.rpm
package_cloud push dokku/dokku/el/7 sshcommand*.rpm
package_cloud push dokku/dokku/el/7 plugn*.rpm
package_cloud push dokku/dokku/el/7 dokku*.rpm
packer:
packer build contrib/packer.json
@@ -61,6 +52,15 @@ go-build:
fi ;\
done
go-build-plugin:
ifndef PLUGIN_NAME
$(error PLUGIN_NAME not specified)
endif
if [ -e plugins/$(PLUGIN_NAME)/Makefile ]; then \
$(MAKE) -e -C plugins/$(PLUGIN_NAME) $(PLUGIN_MAKE_TARGET) || exit $$? ;\
fi
go-clean:
basedir=$(PWD); \
for dir in plugins/*; do \
@@ -76,24 +76,29 @@ copyfiles:
rm -rf ${CORE_PLUGINS_PATH}/*
test -d ${CORE_PLUGINS_PATH}/enabled || PLUGIN_PATH=${CORE_PLUGINS_PATH} plugn init
test -d ${PLUGINS_PATH}/enabled || PLUGIN_PATH=${PLUGINS_PATH} plugn init
find plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do \
rm -Rf ${CORE_PLUGINS_PATH}/available/$$plugin && \
rm -Rf ${PLUGINS_PATH}/available/$$plugin && \
rm -rf ${CORE_PLUGINS_PATH}/$$plugin && \
rm -rf ${PLUGINS_PATH}/$$plugin && \
cp -R plugins/$$plugin ${CORE_PLUGINS_PATH}/available && \
rm -rf ${CORE_PLUGINS_PATH}/available/$$plugin/src && \
ln -s ${CORE_PLUGINS_PATH}/available/$$plugin ${PLUGINS_PATH}/available; \
find /var/lib/dokku/ -xtype l -delete;\
PLUGIN_PATH=${CORE_PLUGINS_PATH} plugn enable $$plugin ;\
PLUGIN_PATH=${PLUGINS_PATH} plugn enable $$plugin ;\
done
find plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do $(MAKE) copyplugin PLUGIN_NAME=$$plugin; done
ifndef SKIP_GO_CLEAN
$(MAKE) go-clean
endif
chown dokku:dokku -R ${PLUGINS_PATH} ${CORE_PLUGINS_PATH} || true
$(MAKE) addman
copyplugin:
ifndef PLUGIN_NAME
$(error PLUGIN_NAME not specified)
endif
rm -Rf ${CORE_PLUGINS_PATH}/available/$(PLUGIN_NAME) && \
rm -Rf ${PLUGINS_PATH}/available/$(PLUGIN_NAME) && \
rm -rf ${CORE_PLUGINS_PATH}/$(PLUGIN_NAME) && \
rm -rf ${PLUGINS_PATH}/$(PLUGIN_NAME) && \
cp -R plugins/$(PLUGIN_NAME) ${CORE_PLUGINS_PATH}/available && \
rm -rf ${CORE_PLUGINS_PATH}/available/$(PLUGIN_NAME)/src && \
ln -s ${CORE_PLUGINS_PATH}/available/$(PLUGIN_NAME) ${PLUGINS_PATH}/available; \
find /var/lib/dokku/ -xtype l -delete;\
PLUGIN_PATH=${CORE_PLUGINS_PATH} plugn enable $(PLUGIN_NAME) ;\
PLUGIN_PATH=${PLUGINS_PATH} plugn enable $(PLUGIN_NAME)
chown dokku:dokku -R ${PLUGINS_PATH} ${CORE_PLUGINS_PATH} || true
addman: help2man man-db
mkdir -p /usr/local/share/man/man1
help2man -Nh help -v version -n "configure and get information from your dokku installation" -o /usr/local/share/man/man1/dokku.1 dokku
@@ -106,17 +111,17 @@ else
echo $(DOKKU_VERSION) > ~dokku/VERSION
endif
plugin-dependencies: plugn
plugin-dependencies: plugn procfile-util
sudo -E dokku plugin:install-dependencies --core
plugins: plugn docker
plugins: plugn procfile-util docker
sudo -E dokku plugin:install --core
dependencies: apt-update sshcommand plugn docker help2man man-db sigil
dependencies: apt-update sshcommand plugn procfile-util docker help2man man-db sigil
$(MAKE) -e stack
apt-update:
apt-get update
apt-get update -qq
help2man:
apt-get install -qq -y help2man
@@ -129,6 +134,10 @@ sshcommand:
chmod +x /usr/local/bin/sshcommand
sshcommand create dokku /usr/local/bin/dokku
procfile-util:
wget -qO /tmp/procfile-util_latest.tgz ${PROCFILE_UTIL_URL}
tar xzf /tmp/procfile-util_latest.tgz -C /usr/local/bin
plugn:
wget -qO /tmp/plugn_latest.tgz ${PLUGN_URL}
tar xzf /tmp/plugn_latest.tgz -C /usr/local/bin

View File

@@ -1,5 +1,5 @@
# 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)
[![Build Status](https://img.shields.io/circleci/project/github/dokku/dokku.svg?style=flat-square "Build Status")](https://circleci.com/gh/dokku/dokku/tree/master)
[![Ubuntu Package](https://img.shields.io/badge/package-ubuntu-brightgreen.svg?style=flat-square "Ubuntu Package")](https://packagecloud.io/dokku/dokku)
[![Arch Package](https://img.shields.io/badge/package-arch-brightgreen.svg?style=flat-square "Arch Package")](https://aur.archlinux.org/packages/dokku/)
[![IRC Network](https://img.shields.io/badge/irc-freenode-blue.svg?style=flat-square "IRC Freenode")](https://webchat.freenode.net/?channels=dokku)
@@ -7,7 +7,7 @@
[![Documentation](https://img.shields.io/badge/docs-viewdocs-blue.svg?style=flat-square "Viewdocs")](http://dokku.viewdocs.io/dokku/)
[![OpenCollective](https://opencollective.com/dokku/sponsors/badge.svg?style=flat-square)](#sponsors)
[![OpenCollective](https://opencollective.com/dokku/backers/badge.svg?style=flat-square)](#backers)
[![Gratipay](https://img.shields.io/gratipay/dokku.svg?style=flat-square)](https://gratipay.com/dokku/)
[![Patreon](https://img.shields.io/badge/patreon-donate-green.svg?style=flat-square)](https://www.patreon.com/dokku/)
Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen.
@@ -88,9 +88,8 @@ Support us with a monthly donation and help us continue our activities. [[Become
A fresh VM running any of the following operating systems:
- Ubuntu 16.04 x64
- Ubuntu 14.04 x64
- Debian 8.2 x64
- Ubuntu x64 - Any currently supported release
- Debian 8.2+ x64
- CentOS 7 x64 *(experimental)*
- Arch Linux x64 *(experimental)*
@@ -99,8 +98,8 @@ A fresh VM running any of the following operating systems:
To install the latest stable release, run the following commands as a user who has access to `sudo`:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.10.2/bootstrap.sh
sudo DOKKU_TAG=v0.10.2 bash bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.3/bootstrap.sh
sudo DOKKU_TAG=v0.14.3 bash bootstrap.sh
```
You can then proceed to the ip address or domain name associated with your server to complete the web-based installation.

6
Vagrantfile vendored
View File

@@ -45,6 +45,8 @@ Vagrant::configure("2") do |config|
vm.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
# enable NAT adapter cable https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=838999
vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
end
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update > /dev/null && apt-get -qq -y install git > /dev/null && cd /root/dokku && #{make_cmd}"
@@ -64,8 +66,8 @@ Vagrant::configure("2") do |config|
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
vm.vm.hostname = "#{DOKKU_DOMAIN}"
vm.vm.network :private_network, ip: DOKKU_IP
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update > /dev/null && apt-get -qq -y install git > /dev/null"
vm.vm.provision :shell, :inline => "cd /vagrant/ && export DOKKU_BRANCH=`git symbolic-ref -q --short HEAD 2>/dev/null` && export DOKKU_TAG=`git describe --tags --exact-match 2>/dev/null` && cd /root/ && cp /vagrant/bootstrap.sh ./ && bash bootstrap.sh"
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update > /dev/null && apt-get -qq -y install git dos2unix > /dev/null"
vm.vm.provision :shell, :inline => "cd /vagrant/ && export DOKKU_BRANCH=`git symbolic-ref -q --short HEAD 2>/dev/null` && export DOKKU_TAG=`git describe --tags --exact-match 2>/dev/null` && cd /root/ && cp /vagrant/bootstrap.sh ./ && dos2unix bootstrap.sh && bash bootstrap.sh"
end
config.vm.define "dokku-deb", autostart: false do |vm|

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
# A script to bootstrap dokku.
# It expects to be run on Ubuntu 14.04 via 'sudo'
@@ -15,7 +16,7 @@ ensure-environment() {
local FREE_MEMORY
echo "Preparing to install $DOKKU_TAG from $DOKKU_REPO..."
hostname -f > /dev/null 2>&1 || {
hostname -f >/dev/null 2>&1 || {
echo "This installation script requires that you have a hostname set for the instance. Please set a hostname for 127.0.0.1 in your /etc/hosts"
exit 1
}
@@ -31,8 +32,14 @@ install-requirements() {
echo "--> Ensuring we have the proper dependencies"
case "$DOKKU_DISTRO" in
debian|ubuntu)
apt-get update -qq > /dev/null
debian | ubuntu)
if ! dpkg -l | grep -q software-properties-common; then
apt-get update -qq >/dev/null
apt-get -qq -y install software-properties-common
fi
add-apt-repository universe >/dev/null
apt-get update -qq >/dev/null
;;
esac
}
@@ -41,18 +48,25 @@ install-dokku() {
if [[ -n $DOKKU_BRANCH ]]; then
install-dokku-from-source "origin/$DOKKU_BRANCH"
elif [[ -n $DOKKU_TAG ]]; then
local DOKKU_SEMVER="${DOKKU_TAG//v}"
local DOKKU_SEMVER="${DOKKU_TAG//v/}"
major=$(echo "$DOKKU_SEMVER" | awk '{split($0,a,"."); print a[1]}')
minor=$(echo "$DOKKU_SEMVER" | awk '{split($0,a,"."); print a[2]}')
patch=$(echo "$DOKKU_SEMVER" | awk '{split($0,a,"."); print a[3]}')
use_plugin=false
# 0.4.0 implemented a `plugin` plugin
if [[ "$major" -eq "0" ]] && [[ "$minor" -ge "4" ]] && [[ "$patch" -ge "0" ]]; then
use_plugin=true
elif [[ "$major" -ge "1" ]]; then
use_plugin=true
fi
# 0.3.13 was the first version with a debian package
if [[ "$major" -eq "0" ]] && [[ "$minor" -eq "3" ]] && [[ "$patch" -ge "13" ]]; then
install-dokku-from-package "$DOKKU_SEMVER"
echo "--> Running post-install dependency installation"
dokku plugins-install-dependencies
# 0.4.0 implemented a `plugin` plugin
elif [[ "$major" -eq "0" ]] && [[ "$minor" -ge "4" ]] && [[ "$patch" -ge "0" ]]; then
elif [[ "$use_plugin" == "true" ]]; then
install-dokku-from-package "$DOKKU_SEMVER"
echo "--> Running post-install dependency installation"
sudo -E dokku plugin:install-dependencies --core
@@ -88,10 +102,10 @@ install-dokku-from-source() {
install-dokku-from-package() {
case "$DOKKU_DISTRO" in
debian|ubuntu)
debian | ubuntu)
install-dokku-from-deb-package "$@"
;;
centos)
centos | rhel)
install-dokku-from-rpm-package "$@"
;;
*)
@@ -101,37 +115,75 @@ install-dokku-from-package() {
esac
}
in-array() {
declare desc="return true if value ($1) is in list (all other arguments)"
local e
for e in "${@:2}"; do
[[ "$e" == "$1" ]] && return 0
done
return 1
}
install-dokku-from-deb-package() {
local DOKKU_CHECKOUT="$1"
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
local OS_ID
if [[ -n $DOKKU_DOCKERFILE ]]; then
NO_INSTALL_RECOMMENDS=" --no-install-recommends "
fi
echo "--> Initial apt-get update"
apt-get update -qq > /dev/null
apt-get update -qq >/dev/null
apt-get -qq -y install apt-transport-https
echo "--> Installing docker"
if uname -r | grep -q linode; then
echo "--> NOTE: Using Linode? Docker may complain about missing AUFS support."
echo " You can safely ignore this warning."
echo " Installation will continue in 10 seconds."
sleep 10
if ! command -v docker &>/dev/null; then
echo "--> Installing docker"
if uname -r | grep -q linode; then
echo "--> NOTE: Using Linode? Docker may complain about missing AUFS support."
echo " You can safely ignore this warning."
echo " Installation will continue in 10 seconds."
sleep 10
fi
export CHANNEL=stable
wget -nv -O - https://get.docker.com/ | sh
fi
if [[ "$DOKKU_DISTRO_VERSION" == "14.04" ]]; then
echo "--> Adding nginx PPA"
add-apt-repository -y ppa:nginx/stable
fi
OS_ID="$(lsb_release -cs 2>/dev/null || echo "trusty")"
if ! in-array "$DOKKU_DISTRO" "debian" "ubuntu"; then
DOKKU_DISTRO="ubuntu"
OS_ID="trusty"
fi
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
OS_IDS=("trusty" "utopic" "vivid" "wily" "xenial" "yakkety" "zesty" "artful" "bionic")
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
OS_ID="trusty"
fi
elif [[ "$DOKKU_DISTRO" == "debian" ]]; then
OS_IDS=("wheezy" "jessie" "stretch" "buster")
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
OS_ID="stretch"
fi
fi
wget -nv -O - https://get.docker.com/ | sh
echo "--> Installing dokku"
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
wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
echo "deb https://packagecloud.io/dokku/dokku/$DOKKU_DISTRO/ $OS_ID main" | tee /etc/apt/sources.list.d/dokku.list
apt-get update -qq >/dev/null
[[ -n $DOKKU_VHOST_ENABLE ]] && echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | sudo debconf-set-selections
[[ -n $DOKKU_WEB_CONFIG ]] && echo "dokku dokku/web_config boolean $DOKKU_WEB_CONFIG" | sudo debconf-set-selections
[[ -n $DOKKU_HOSTNAME ]] && echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | sudo debconf-set-selections
[[ -n $DOKKU_VHOST_ENABLE ]] && echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | sudo debconf-set-selections
[[ -n $DOKKU_WEB_CONFIG ]] && echo "dokku dokku/web_config boolean $DOKKU_WEB_CONFIG" | sudo debconf-set-selections
[[ -n $DOKKU_HOSTNAME ]] && echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | sudo debconf-set-selections
[[ -n $DOKKU_SKIP_KEY_FILE ]] && echo "dokku dokku/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | sudo debconf-set-selections
[[ -n $DOKKU_KEY_FILE ]] && echo "dokku dokku/key_file string $DOKKU_KEY_FILE" | sudo debconf-set-selections
[[ -n $DOKKU_KEY_FILE ]] && echo "dokku dokku/key_file string $DOKKU_KEY_FILE" | sudo debconf-set-selections
[[ -n $DOKKU_NGINX_ENABLE ]] && echo "dokku dokku/nginx_enable string $DOKKU_NGINX_ENABLE" | sudo debconf-set-selections
if [[ -n $DOKKU_CHECKOUT ]]; then
# shellcheck disable=SC2086

View File

@@ -1,20 +0,0 @@
machine:
pre:
- echo 'DOCKER_OPTS="-s btrfs -e lxc --userland-proxy=false"' | sudo tee -a /etc/default/docker
- sudo curl -L -o /usr/bin/docker 'https://s3-external-1.amazonaws.com/circle-downloads/docker-1.9.1-circleci-cp-workaround'
- sudo chmod 0755 /usr/bin/docker
services:
- docker
dependencies:
cache_directories:
- "~/docker"
override:
- ./tests/ci/parallel_runner.sh setup: { timeout: 300 }
- echo "export DOKKU_SKIP_CLEANUP=true" > /home/dokku/.dokkurc/dokku_skip_cleanup
# dokku.me now resolves to 10.0.0.2. add 10.0.0.2/24 to eth0
- sudo ip a a 10.0.0.2/24 broadcast 10.0.0.255 dev eth0
post:
- sudo -E make -e lint
test:
override:
- ./tests/ci/parallel_runner.sh testing: { parallel: true, timeout: 3600 }

View File

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

31
contrib/bash-completion Normal file
View File

@@ -0,0 +1,31 @@
# bash completion for dd -*- shell-script -*-
_dokku_complete_verify() {
declare desc="shows bash completion"
declare COMMAND="$1"
local COMMANDS=""
_dokku_complete_goals=$(cat "/var/cache/dokku-completion")
while read -r fn; do
if [[ -z "$COMMAND" ]] || [[ "$fn" == $COMMAND* ]]; then
COMMANDS="${COMMANDS};${fn}"
fi
done <<< "$_dokku_complete_goals"
echo "${COMMANDS#";"}"
}
_dokku() {
local cur prev
_get_comp_words_by_ref -n : cur
if [[ ! -f "/var/cache/dokku-completion" ]] || [[ ! -s "/var/cache/dokku-completion" ]]; then
dokku --quiet help --all | awk '/^ /{ print $1 }' | sort > "/var/cache/dokku-completion"
fi
opts=$(_dokku_complete_verify "${cur}")
COMPREPLY=($(IFS=";" compgen -W "$opts" -- "$cur"))
__ltrim_colon_completions "$cur"
} &&
complete -F _dokku dokku

View File

@@ -0,0 +1,6 @@
FROM ubuntu:14.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get -y install gcc git build-essential wget ruby-dev ruby1.9.1 lintian rpm help2man man-db
RUN command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc

View File

@@ -0,0 +1,16 @@
FROM dokku/build-base:0.0.1
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get -y install gcc git build-essential wget ruby-dev ruby1.9.1 lintian rpm help2man man-db
RUN command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc
ARG WORKDIR=/go/src/github.com/dokku/dokku
WORKDIR ${WORKDIR}
COPY . ${WORKDIR}
RUN make deb-dokku-update rpm-dokku-update
RUN ls -lha /tmp/

View File

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

View File

@@ -0,0 +1,16 @@
FROM dokku/build-base:0.0.1
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get -y install gcc git build-essential wget ruby-dev ruby1.9.1 lintian rpm help2man man-db
RUN command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc
ARG WORKDIR=/go/src/github.com/dokku/dokku
WORKDIR ${WORKDIR}
COPY . ${WORKDIR}
RUN make deb-herokuish rpm-herokuish
RUN ls -lha /tmp/

51
contrib/copy-packages Normal file
View File

@@ -0,0 +1,51 @@
#!/usr/bin/env python2.7
import os
import requests
import shutil
import subprocess
from requests.auth import HTTPBasicAuth
PACKAGECLOUD_TOKEN = os.getenv('DOKKU_PACKAGECLOUD_TOKEN')
def download_file(filename, url):
r = requests.get(url, stream=True)
with open(filename, 'wb') as f:
shutil.copyfileobj(r.raw, f)
def upload_file(filename):
versions = [
"bionic",
]
cmd_template = "package_cloud push dokku/dokku/ubuntu/{0} {1}"
for version in versions:
cmd = cmd_template.format(version, filename)
subprocess.call(cmd, shell=True)
def main():
auth = HTTPBasicAuth(PACKAGECLOUD_TOKEN, '')
base = requests.get('https://packagecloud.io/api/v1/repos/dokku/dokku/packages/deb/ubuntu/trusty.json',
auth=auth)
data = base.json()
urls = []
for package in data:
urls.append(package['versions_url'])
download_urls = {}
for url in urls:
base = requests.get('https://packagecloud.io{0}'.format(url),
auth=auth)
data = base.json()
for version in data:
download_urls['downloads/' + version['filename']] = version['download_url']
for filename, download_url in download_urls.items():
print "downloading", filename
download_file(filename, download_url)
upload_file(filename)
if __name__ == "__main__":
main()

View File

@@ -10,7 +10,7 @@ import subprocess
import sys
import threading
VERSION = 'v0.10.2'
VERSION = 'v0.14.3'
hostname = ''
try:
@@ -21,7 +21,13 @@ try:
except subprocess.CalledProcessError:
pass
key_file = os.getenv('KEY_FILE', '/root/.ssh/authorized_keys')
key_file = os.getenv('KEY_FILE', None)
if os.path.isfile('/home/ec2-user/.ssh/authorized_keys'):
key_file = '/home/ec2-user/.ssh/authorized_keys'
elif os.path.isfile('/home/ubuntu/.ssh/authorized_keys'):
key_file = '/home/ubuntu/.ssh/authorized_keys'
else:
key_file = '/root/.ssh/authorized_keys'
admin_keys = []
if os.path.isfile(key_file):
@@ -72,6 +78,7 @@ class GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
content = PAGE.replace('{VERSION}', VERSION)
content = content.replace('{HOSTNAME}', hostname)
content = content.replace('{AUTHORIZED_KEYS_LOCATION}', key_file)
content = content.replace('{ADMIN_KEYS}', "\n".join(admin_keys))
self.send_response(200)
self.end_headers()
@@ -120,6 +127,7 @@ class GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
proc.stdin.close()
proc.wait()
set_debconf_selection('boolean', 'nginx_enable', 'true')
set_debconf_selection('boolean', 'skip_key_file', 'true')
set_debconf_selection('boolean', 'vhost_enable', vhost_enable)
set_debconf_selection('boolean', 'web_config', 'false')
@@ -210,70 +218,147 @@ def main():
PAGE = """
<html>
<head>
<meta charset="utf-8" />
<title>Dokku Setup</title>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<style>
.bd-callout {
padding: 1.25rem;
margin-top: 1.25rem;
margin-bottom: 1.25rem;
border: 1px solid #eee;
border-left-width: .25rem;
border-radius: .25rem;
}
.bd-callout p:last-child {
margin-bottom: 0;
}
.bd-callout-info {
border-left-color: #5bc0de;
}
pre {
font-size: 80%;
margin-bottom: 0;
}
h1 small {
font-size: 50%;
}
h5 {
font-size: 1rem;
}
.container {
width: 640px;
}
.result {
padding-left: 20px;
}
input.form-control, textarea.form-control {
background-color: #fafbfc;
font-size: 14px;
}
input.form-control::placeholder, textarea.form-control::placeholder {
color: #adb2b8
}
</style>
</head>
<body>
<div class="container" style="width: 640px;">
<form id="form" role="form">
<h1>Dokku Setup <small>{VERSION}</small></h1>
<div class="form-group">
<h3><small style="text-transform: uppercase;">Admin Access</small></h3>
<label for="key">Public Key</label><br />
<textarea class="form-control" name="keys" rows="7" id="key">{ADMIN_KEYS}</textarea>
</div>
<div class="form-group">
<h3><small style="text-transform: uppercase;">Hostname Configuration</small></h3>
<div class="form-group">
<label for="hostname">Hostname</label>
<input class="form-control" type="text" id="hostname" name="hostname" value="{HOSTNAME}" />
<div class="container">
<form id="form" role="form">
<h1 class="pt-3">Dokku Setup <small class="text-muted">{VERSION}</small></h1>
<div class="alert alert-warning small" role="alert">
<strong>Warning:</strong> The SSH key filled out here can grant root access to the server. Please complete the setup as soon as possible.
</div>
<div class="checkbox">
<label><input id="vhost" name="vhost" type="checkbox" value="true"> Use <abbr title="Nginx will be run on port 80 and backend to your apps based on hostname">virtualhost naming</abbr> for apps</label>
<div class="row">
<div class="col">
<h3>Admin Access</h3>
<div class="form-group">
<label for="key">Public SSH Keys</label><br />
<textarea class="form-control" name="keys" rows="5" id="key" placeholder="Begins with 'ssh-rsa', 'ssh-dss', 'ssh-ed25519', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', or 'ecdsa-sha2-nistp521'">{ADMIN_KEYS}</textarea>
<small class="form-text text-muted">Public keys allow users to ssh onto the server as the <code>dokku</code> user, as well as remotely execute Dokku commands. They are currently auto-populated from: <code>{AUTHORIZED_KEYS_LOCATION}</code>, and can be changed later via the <a href="http://dokku.viewdocs.io/dokku/deployment/user-management/" target="_blank"><code>dokku ssh-keys</code></a> plugin.</small>
</div>
</div>
</div>
<p>Your app URLs will look like:</p>
<pre id="example">http://hostname:port</pre>
</div>
<button type="button" onclick="setup()" class="btn btn-primary">Finish Setup</button> <span style="padding-left: 20px;" id="result"></span>
</form>
<div class="row">
<div class="col">
<h3>Hostname Configuration</h3>
<div class="form-group">
<label for="hostname">Hostname</label>
<input class="form-control" type="text" id="hostname" name="hostname" value="{HOSTNAME}" placeholder="A hostname or ip address such as {HOSTNAME}" />
<small class="form-text text-muted">This will be used as the default host for all applications, and can be changed later via the <a href="http://dokku.viewdocs.io/dokku/configuration/domains/" target="_blank"><code>dokku domains:set-global</code></a> command.</small>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="vhost" name="vhost" value="true">
<label class="form-check-label" for="vhost">Use virtualhost naming for apps</label>
<small class="form-text text-muted">When enabled, Nginx will be run on port 80 and proxy requests to apps based on hostname.</small>
<small class="form-text text-muted">When disabled, a specific port will be setup for each application on first deploy, and requests to that port will be proxied to the relevant app.</small>
</div>
<div class="bd-callout bd-callout-info">
<h5>What will app URLs look like?</h5>
<pre><code id="example">http://hostname:port</code></pre>
</div>
</div>
</div>
<button type="button" onclick="setup()" class="btn btn-primary">Finish Setup</button> <span class="result"></span>
</form>
</div>
<div id="error-output"></div>
<script>
var $ = document.querySelector.bind(document)
function setup() {
if ($.trim($("#key").val()) == "") {
if ($("#key").value.trim() == "") {
alert("Your admin public key cannot be blank.")
return
}
if ($.trim($("#hostname").val()) == "") {
if ($("#hostname").value.trim() == "") {
alert("Your hostname cannot be blank.")
return
}
data = $("#form").serialize()
$("input,textarea,button").prop("disabled", true);
$.post('/setup', data)
.done(function() {
$("#result").html("Success!")
window.location.href = "http://progrium.viewdocs.io/dokku/deployment/application-deployment/";
var data = new FormData($("#form"))
var inputs = [].slice.call(document.querySelectorAll("input, textarea, button"))
inputs.forEach(function (input) {
input.disabled = true
})
var result = $(".result")
fetch("/setup", {method: "POST", body: data})
.then(function(response) {
if (response.ok) {
return response.json()
} else {
throw new Error('Server returned error')
}
})
.then(function(response) {
result.classList.add("text-success");
result.textContent = "Success! Redirecting in 3 seconds. .."
setTimeout(function() {
window.location.href = "http://dokku.viewdocs.io/dokku~{VERSION}/deployment/application-deployment/";
}, 3000);
})
.catch(function (error) {
result.classList.add("text-danger");
result.textContent = "Could not send the request"
})
.fail(function(data) {
$("#result").html("Something went wrong...")
$("#error-output").html(data.responseText)
});
}
function update() {
if ($("#vhost").is(":checked") && $("#hostname").val().match(/^(\d{1,3}\.){3}\d{1,3}$/)) {
if ($("#vhost").matches(":checked") && $("#hostname").value.match(/^(\d{1,3}\.){3}\d{1,3}$/)) {
alert("In order to use virtualhost naming, the hostname must not be an IP but a valid domain name.")
$("#vhost").prop('checked', false);
$("#vhost").checked = false;
}
if ($("#vhost").is(':checked')) {
$("#example").html("http://&lt;app-name&gt;."+$("#hostname").val())
if ($("#vhost").matches(':checked')) {
$("#example").textContent = "http://<app-name>."+$("#hostname").value
} else {
$("#example").html("http://"+$("#hostname").val()+":&lt;app-port&gt;")
$("#example").textContent = "http://"+$("#hostname").value+":<app-port>"
}
}
$("#vhost").change(update);
$("#hostname").change(update);
$("#vhost").addEventListener("input", update);
$("#hostname").addEventListener("input", update);
update();
</script>
</body>

112
contrib/dokku-update Executable file
View File

@@ -0,0 +1,112 @@
#!/usr/bin/env bash
set -eo pipefail
shopt -s nullglob
if [[ -r /etc/default/dokku ]]; then
# shellcheck disable=SC1091
source /etc/default/dokku
fi
export DOKKU_ROOT=${DOKKU_ROOT:=~dokku}
if [[ -f "$DOKKU_ROOT/dokkurc" ]]; then
if [[ -r $DOKKU_ROOT/dokkurc ]]; then
source "$DOKKU_ROOT/dokkurc"
else
echo "Unable to read $DOKKU_ROOT/dokkurc for sourcing" 1>&2
exit 1
fi
fi
if [[ -d $DOKKU_ROOT/.dokkurc ]]; then
for f in $DOKKU_ROOT/.dokkurc/*; do
if [[ -r "$f" ]]; then
source "$f"
else
echo "Unable to read $f for sourcing" 1>&2
exit 1
fi
done
fi
[[ $DOKKU_TRACE ]] && set -x
export DOKKU_LIB_ROOT=${DOKKU_LIB_PATH:="/var/lib/dokku"}
export PLUGIN_PATH=${PLUGIN_PATH:="$DOKKU_LIB_ROOT/plugins"}
export PLUGIN_ENABLED_PATH=${PLUGIN_ENABLED_PATH:="$PLUGIN_PATH/enabled"}
export DEBIAN_FRONTEND=noninteractive
dokku-log-info() {
declare desc="log info formatter"
echo "-----> $*"
}
dokku-log-verbose() {
declare desc="log verbose formatter"
echo " $*"
}
dokku-log-warn() {
declare desc="log warning formatter"
echo " ! $*" 1>&2
}
dokku-update-plugin() {
declare PLUGIN_NAME="$1"
if [[ -d "$PLUGIN_ENABLED_PATH/$PLUGIN_NAME/.git" ]]; then
dokku-log-verbose "Updating $PLUGIN_NAME"
dokku plugin:update "$PLUGIN_NAME"
fi
}
main() {
declare COMMAND="$1"
local DOKKU_DISTRO PLUGIN_NAME VERSION
if [[ -f "/etc/os-release" ]]; then
# shellcheck disable=SC1091
DOKKU_DISTRO=$(. /etc/os-release && echo "$ID")
fi
if [[ "$COMMAND" == "version" ]] || [[ "$COMMAND" == "-v" ]]; then
VERSION=UNRELEASED
if [[ -f "/var/lib/dokku-update/VERSION" ]]; then
VERSION="$(cat /var/lib/dokku-update/VERSION)"
fi
echo "dokku-update ${VERSION}"
exit 0
fi
dokku-log-info "Running system updates"
case "$DOKKU_DISTRO" in
arch)
yaourt -Syyua
;;
debian | ubuntu)
apt-get update -qq >/dev/null
apt-get -qq -y --force-yes dist-upgrade
;;
centos | opensuse | rhel)
dokku-log-warn "Updating this operating system is not supported"
;;
*)
dokku-log-warn "Updating this operating system is not supported"
exit 1
;;
esac
# update all plugins
dokku-log-info "Updating all plugins"
for PLUGIN_NAME in $(dokku plugin:list | grep enabled | awk '$1=$1' | cut -d' ' -f1); do
dokku-update-plugin "$PLUGIN_NAME"
done
dokku plugin:install
# rebuild all applications
dokku-log-info "Rebuilding all applications"
dokku ps:rebuildall
dokku-log-info "Waiting for old containers to stop"
sleep 120
dokku-log-info "Cleaning up"
dokku cleanup --global
}
main "$@"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
export DOKKU_PORT=${DOKKU_PORT:=22}
export DOKKU_HOST=${DOKKU_HOST:=}
@@ -48,7 +49,7 @@ fn-dokku-host() {
declare DOKKU_GIT_REMOTE="$1" DOKKU_HOST="$2"
if [[ -z "$DOKKU_HOST" ]]; then
if [[ -d .git ]] || git rev-parse --git-dir > /dev/null 2>&1; then
if [[ -d .git ]] || git rev-parse --git-dir >/dev/null 2>&1; then
DOKKU_HOST=$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | head -n 1 | cut -f1 -d' ' | cut -f2 -d '@' | cut -f1 -d':' 2>/dev/null || true)
fi
fi
@@ -67,7 +68,7 @@ main() {
for arg in "$@"; do
if [[ "$skip" == "true" ]]; then
next_index=$(( next_index + 1 ))
next_index=$((next_index + 1))
skip=false
continue
fi
@@ -92,13 +93,13 @@ main() {
cmd_set=true
fi
fi
next_index=$(( next_index + 1 ))
next_index=$((next_index + 1))
done
DOKKU_REMOTE_HOST="$(fn-dokku-host "$DOKKU_GIT_REMOTE" "$DOKKU_HOST")"
if [[ -z "$APP" ]]; then
if [[ -d .git ]] || git rev-parse --git-dir > /dev/null 2>&1; then
if [[ -d .git ]] || git rev-parse --git-dir >/dev/null 2>&1; then
set +e
APP=$(git remote -v 2>/dev/null | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | head -n 1 | cut -f2 -d'@' | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
set -e
@@ -112,14 +113,14 @@ main() {
if [[ -z "$APP_ARG" ]]; then
APP=$(fn-random-name)
counter=0
while ssh -p "$DOKKU_PORT" "dokku@$DOKKU_REMOTE_HOST" apps 2>/dev/null| grep -q "$APP"; do
while ssh -p "$DOKKU_PORT" "dokku@$DOKKU_REMOTE_HOST" apps 2>/dev/null | grep -q "$APP"; do
if [[ $counter -ge 100 ]]; then
echo "Error: could not reasonably generate a new app name. try cleaning up some apps..."
ssh -p "$DOKKU_PORT" "dokku@$DOKKU_REMOTE_HOST" apps
exit 1
else
APP=$(random_name)
counter=$((counter+1))
counter=$((counter + 1))
fi
done
else
@@ -139,7 +140,7 @@ main() {
esac
[[ " apps certs help ls nginx shell storage trace version " == *" $CMD "* ]] && unset APP
[[ " certs:chain domains:add-global domains:remove-global domains:set-global ps:rebuildall ps:restartall ps:restore " == *" $CMD "* ]] && unset APP
[[ " certs:chain domains:add-global domains:remove-global domains:set-global ps:rebuildall ps:restartall ps:restore ps:startall ps:stopall " == *" $CMD "* ]] && unset APP
[[ "$CMD" =~ events*|plugin*|ssh-keys* ]] && unset APP
[[ -n "$APP_ARG" ]] && [[ "$APP_ARG" == "--global" ]] && unset APP
[[ -n "$@" ]] && [[ -n "$APP" ]] && app_arg="--app $APP"

View File

@@ -49,8 +49,9 @@ fn-build-dokku() {
--build-arg IS_RELEASE="$IS_RELEASE" \
--build-arg PLUGIN_MAKE_TARGET="build" \
--build-arg GOLANG_VERSION="$GOLANG_VERSION" \
-f "contrib/build.Dockerfile" \
-f "contrib/build-dokku.Dockerfile" \
-t "$NAME" .
return "$?"
}
fn-extract-package() {
@@ -67,7 +68,8 @@ fn-extract-package() {
[[ "$IS_RELEASE" == "true" ]] && NAME="dokku:build-release"
log-info "(extract-package) writing ${PACKAGE_NAME} to correct path"
docker run --rm --entrypoint cat "$NAME" "/data/${PACKAGE_NAME}" > "${ROOT_DIR}/${PACKAGE_NAME}"
docker run --rm --entrypoint cat "$NAME" "/tmp/${PACKAGE_NAME}" >"${ROOT_DIR}/build/${PACKAGE_NAME}"
return "$?"
}
fn-in-array() {
@@ -127,12 +129,39 @@ fn-version-next() {
fn-publish-package() {
declare desc="Publishes a package to packagecloud"
declare IS_RELEASE="$1" RELEASE_TYPE="$2" PACKAGE_NAME="$3"
local REPOSITORY=dokku/dokku-betafish DIST=ubuntu/trusty
local REPOSITORY=dokku/dokku-betafish DIST=ubuntu EXIT_CODE=0
local OS_ID ex
[[ "$IS_RELEASE" == "true" ]] && REPOSITORY=dokku/dokku
[[ "$RELEASE_TYPE" == "rpm" ]] && DIST=el/7
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}" "$PACKAGE_NAME"
if [[ "$DIST" == "ubuntu" ]]; then
OS_IDS=("trusty" "utopic" "vivid" "wily" "xenial" "yakkety" "zesty" "artful" "bionic")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
ex="$?"
if [[ "$ex" -ne "0" ]]; then
EXIT_CODE="$ex"
fi
done
DIST=debian
OS_IDS=("wheezy" "jessie" "stretch" "buster")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
ex="$?"
if [[ "$ex" -ne "0" ]]; then
EXIT_CODE="$ex"
fi
done
else
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}" "$PACKAGE_NAME"
EXIT_CODE="$?"
fi
return "$EXIT_CODE"
}
fn-replace-version() {
@@ -208,7 +237,7 @@ fn-repo-update-history-and-commit() {
declare desc="Updates the history file and commits the changes"
declare CURRENT_VERSION="$1" NEXT_VERSION="$2"
local PULL_REQUEST_ID TITLE AUTHOR TYPE CHANGELOG_TEXT
local COMMIT_MESSAGE HISTORY HISTORY_CONTENTS HISTORY_DOCUMENTATION HISTORY_ENHANCEMENT HISTORY_BUG ISSUE_FILE
local COMMIT_MESSAGE HISTORY HISTORY_CONTENTS HISTORY_DOCUMENTATION HISTORY_ENHANCEMENT HISTORY_BUG HISTORY_OTHER HISTORY_TESTS ISSUE_FILE
pushd "$ROOT_DIR" >/dev/null
@@ -229,13 +258,22 @@ fn-repo-update-history-and-commit() {
HISTORY_BUG="${HISTORY_BUG}"$'\n'"$CHANGELOG_TEXT"
elif [[ "$TYPE" == "documentation" ]]; then
HISTORY_DOCUMENTATION="${HISTORY_DOCUMENTATION}"$'\n'"$CHANGELOG_TEXT"
elif [[ "$TYPE" == "enhancement" ]]; then
elif [[ "$TYPE" == "enhancement" ]] || [[ "$TYPE" == "refactor" ]]; then
HISTORY_ENHANCEMENT="${HISTORY_ENHANCEMENT}"$'\n'"$CHANGELOG_TEXT"
elif [[ "$TYPE" == "tests" ]]; then
HISTORY_TESTS="${HISTORY_TESTS}"$'\n'"$CHANGELOG_TEXT"
else
HISTORY_OTHER="${HISTORY_OTHER}"$'\n'"$CHANGELOG_TEXT"
fi
done
HISTORY="# History"
HISTORY="${HISTORY}"$'\n\n'"## ${NEXT_VERSION}"
HISTORY="${HISTORY}"$'\n\n'"Install/update via the bootstrap script:"
HISTORY="${HISTORY}"$'\n\n'"\`\`\`shell"
HISTORY="${HISTORY}"$'\n'"wget https://raw.githubusercontent.com/dokku/dokku/v${NEXT_VERSION}/bootstrap.sh"
HISTORY="${HISTORY}"$'\n'"sudo DOKKU_TAG=v${NEXT_VERSION} bash bootstrap.sh"
HISTORY="${HISTORY}"$'\n'"\`\`\`"
if [[ "$HISTORY_BUG" ]]; then
HISTORY="${HISTORY}"$'\n\n'"### Bug Fixes"
@@ -252,6 +290,16 @@ fn-repo-update-history-and-commit() {
HISTORY="${HISTORY}"$'\n'"$HISTORY_DOCUMENTATION"
fi
if [[ "$HISTORY_TESTS" ]]; then
HISTORY="${HISTORY}"$'\n\n'"### Tests"
HISTORY="${HISTORY}"$'\n'"$HISTORY_TESTS"
fi
if [[ "$HISTORY_OTHER" ]]; then
HISTORY="${HISTORY}"$'\n\n'"### Other"
HISTORY="${HISTORY}"$'\n'"$HISTORY_OTHER"
fi
sed -i.bak '1d' HISTORY.md && rm HISTORY.md.bak
HISTORY_CONTENTS="$(cat HISTORY.md)"
echo -e "$HISTORY\n$HISTORY_CONTENTS" >HISTORY.md
@@ -271,8 +319,8 @@ fn-require-bin() {
main() {
declare RELEASE="$1"
local CURRENT_VERSION NEXT_VERSION IS_RELEASE major minor patch versions
local VALID_RELEASE_LEVELS=("major" "minor" "patch" "betafish")
local CURRENT_VERSION NEXT_VERSION IS_RELEASE
local VALID_RELEASE_LEVELS=("major" "minor" "patch" "betafish" "build")
if [[ "$RELEASE" == '--trace' ]]; then
shift 1
@@ -281,33 +329,45 @@ main() {
fi
if [[ -z "$RELEASE" ]]; then
log-fail "Argument 1 must be one of [major, minor, patch, betafish], none given"
log-fail "Argument 1 must be one of [major, minor, patch, betafish, build], none given"
fi
if ! fn-in-array "$RELEASE" "${VALID_RELEASE_LEVELS[@]}"; then
log-fail "Argument 1 must be one of [major, minor, patch, betafish], '${RELEASE}' given"
log-fail "Argument 1 must be one of [major, minor, patch, betafish, build], '${RELEASE}' given"
fi
log-info "Creating $RELEASE release"
mkdir -p "build"
fn-require-bin "docker"
fn-require-bin "git"
fn-require-bin "package_cloud"
[[ -n "$PACKAGECLOUD_API_TOKEN" ]] || log-fail "Missing PACKAGECLOUD_API_TOKEN environment variable"
if [[ "$RELEASE" != "build" ]]; then
fn-require-bin "package_cloud"
[[ -n "$PACKAGECLOUD_TOKEN" ]] || log-fail "Missing PACKAGECLOUD_TOKEN environment variable"
fi
CURRENT_VERSION="$(fn-version-current)"
NEXT_VERSION="$(fn-version-next "$CURRENT_VERSION" "$RELEASE")"
IS_RELEASE="$(fn-is-release "$RELEASE")"
fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION"
fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION" || log-fail "Error building package"
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package"
fn-extract-package "$IS_RELEASE" "dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error extracting rpm package"
fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION"
if [[ "$RELEASE" != "build" ]]; then
fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package"
fn-publish-package "$IS_RELEASE" "rpm" "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error publishing rpm package"
fn-repo-push-tags "$IS_RELEASE"
fi
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb"
fn-extract-package "$IS_RELEASE" "dokku-${NEXT_VERSION}-1.x86_64.rpm"
if [[ "$IS_RELEASE" != "true" ]]; then
git reset -q HEAD plugins/*/plugin.toml
git checkout -- plugins/*/plugin.toml
fi
fn-publish-package "$IS_RELEASE" "deb" "dokku_${NEXT_VERSION}_amd64.deb"
fn-publish-package "$IS_RELEASE" "rpm" "dokku-${NEXT_VERSION}-1.x86_64.rpm"
fn-repo-push-tags "$IS_RELEASE"
echo "build/dokku_${NEXT_VERSION}_amd64.deb" >build/deb-filename
echo "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" >build/rpm-filename
}
main "$@"

160
contrib/release-dokku-update Executable file
View File

@@ -0,0 +1,160 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $TRACE ]] && set -x
readonly ROOT_DIR="$(cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")" && pwd)"
readonly TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-release.XXXX")"
readonly DOKKU_GIT_REV="$(git rev-parse HEAD)"
trap 'rm -rf "$TMP_WORK_DIR" > /dev/null' RETURN INT TERM EXIT
log-info() {
# shellcheck disable=SC2034
declare desc="Log info formatter"
echo "$*"
}
log-error() {
# shellcheck disable=SC2034
declare desc="Log error formatter"
echo "! $*" 1>&2
}
log-fail() {
# shellcheck disable=SC2034
declare desc="Log fail formatter"
log-error "$*"
exit -1
}
fn-build-dokku() {
declare desc="Builds dokku packages within a docker container"
pushd "$ROOT_DIR" >/dev/null
docker build \
-f "contrib/build-dokku-update.Dockerfile" \
-t dokku-update:build .
return "$?"
}
fn-extract-package() {
declare desc="Extract packages from a docker container to the root directory"
declare PACKAGE_NAME="$1"
if [[ -z "$PACKAGE_NAME" ]]; then
log-error "Invalid deb file specified"
return 1
fi
log-info "(extract-package) writing ${PACKAGE_NAME} to correct path"
docker run --rm --entrypoint cat dokku-update:build "/tmp/${PACKAGE_NAME}" >"${ROOT_DIR}/build/${PACKAGE_NAME}"
return "$?"
}
fn-publish-package() {
declare desc="Publishes a package to packagecloud"
declare IS_RELEASE="$1" RELEASE_TYPE="$2" PACKAGE_NAME="$3"
local REPOSITORY=dokku/dokku-betafish DIST=ubuntu
local OS_ID ex EXIT_CODE=0
[[ "$IS_RELEASE" == "true" ]] && REPOSITORY=dokku/dokku
[[ "$RELEASE_TYPE" == "rpm" ]] && DIST=el/7
if [[ "$DIST" == "ubuntu" ]]; then
OS_IDS=("trusty" "utopic" "vivid" "wily" "xenial" "yakkety" "zesty" "artful" "bionic")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-dokku-update) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
ex="$?"
if [[ "$ex" -ne "0" ]]; then
EXIT_CODE="$ex"
fi
done
DIST=debian
OS_IDS=("wheezy" "jessie" "stretch" "buster")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-dokku-update) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
ex="$?"
if [[ "$ex" -ne "0" ]]; then
EXIT_CODE="$ex"
fi
done
else
log-info "(release-dokku-update) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}" "$PACKAGE_NAME"
EXIT_CODE="$?"
fi
return "$EXIT_CODE"
}
fn-in-array() {
declare desc="return true if value ($1) is in list (all other arguments)"
local e
for e in "${@:2}"; do
[[ "$e" == "$1" ]] && return 0
done
return 1
}
fn-is-release() {
declare desc="Checks if a given run is a release run"
declare RELEASE="$1"
local IS_RELEASE=false
if [[ "$RELEASE" == "major" ]] || [[ "$RELEASE" == "minor" ]] || [[ "$RELEASE" == "patch" ]]; then
IS_RELEASE=true
fi
echo "$IS_RELEASE"
}
fn-require-bin() {
declare desc="Checks that a binary exists"
declare BINARY="$1"
if ! command -v "$BINARY" &>/dev/null; then
log-fail "Missing ${BINARY}, please install it"
fi
}
main() {
declare RELEASE="$1"
local NEXT_VERSION
local VALID_RELEASE_LEVELS=("major" "minor" "patch" "betafish" "build")
if [[ "$RELEASE" == '--trace' ]]; then
shift 1
RELEASE="$1"
TRACE=1 && set -x
fi
if [[ -z "$RELEASE" ]]; then
log-fail "Argument 1 must be one of [major, minor, patch, betafish, build], none given"
fi
if ! fn-in-array "$RELEASE" "${VALID_RELEASE_LEVELS[@]}"; then
log-fail "Argument 1 must be one of [major, minor, patch, betafish, build], '${RELEASE}' given"
fi
mkdir -p "build"
fn-require-bin "docker"
if [[ "$RELEASE" != "build" ]]; then
fn-require-bin "package_cloud"
[[ -n "$PACKAGECLOUD_TOKEN" ]] || log-fail "Missing PACKAGECLOUD_TOKEN environment variable"
fi
NEXT_VERSION="$(grep DOKKU_UPDATE_VERSION deb.mk | head -n1 | cut -d'=' -f2 | xargs)"
IS_RELEASE="$(fn-is-release "$RELEASE")"
fn-build-dokku || log-fail "Error building package"
fn-extract-package "dokku-update_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package"
fn-extract-package "dokku-update-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error extracting rpm package"
if [[ "$RELEASE" != "build" ]]; then
fn-publish-package "$IS_RELEASE" "deb" "build/dokku-update_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package"
fn-publish-package "$IS_RELEASE" "rpm" "build/dokku-update-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error publishing rpm package"
fi
}
main "$@"

160
contrib/release-herokuish Executable file
View File

@@ -0,0 +1,160 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $TRACE ]] && set -x
readonly ROOT_DIR="$(cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")" && pwd)"
readonly TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-release.XXXX")"
readonly DOKKU_GIT_REV="$(git rev-parse HEAD)"
trap 'rm -rf "$TMP_WORK_DIR" > /dev/null' RETURN INT TERM EXIT
log-info() {
# shellcheck disable=SC2034
declare desc="Log info formatter"
echo "$*"
}
log-error() {
# shellcheck disable=SC2034
declare desc="Log error formatter"
echo "! $*" 1>&2
}
log-fail() {
# shellcheck disable=SC2034
declare desc="Log fail formatter"
log-error "$*"
exit -1
}
fn-build-dokku() {
declare desc="Builds dokku packages within a docker container"
pushd "$ROOT_DIR" >/dev/null
docker build \
-f "contrib/build-herokuish.Dockerfile" \
-t herokuish:build .
return "$?"
}
fn-extract-package() {
declare desc="Extract packages from a docker container to the root directory"
declare PACKAGE_NAME="$1"
if [[ -z "$PACKAGE_NAME" ]]; then
log-error "Invalid deb file specified"
return 1
fi
log-info "(extract-package) writing ${PACKAGE_NAME} to correct path"
docker run --rm --entrypoint cat herokuish:build "/tmp/${PACKAGE_NAME}" >"${ROOT_DIR}/build/${PACKAGE_NAME}"
return "$?"
}
fn-publish-package() {
declare desc="Publishes a package to packagecloud"
declare IS_RELEASE="$1" RELEASE_TYPE="$2" PACKAGE_NAME="$3"
local REPOSITORY=dokku/dokku-betafish DIST=ubuntu
local OS_ID ex EXIT_CODE=0
[[ "$IS_RELEASE" == "true" ]] && REPOSITORY=dokku/dokku
[[ "$RELEASE_TYPE" == "rpm" ]] && DIST=el/7
if [[ "$DIST" == "ubuntu" ]]; then
OS_IDS=("trusty" "utopic" "vivid" "wily" "xenial" "yakkety" "zesty" "artful" "bionic")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-herokuish) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
ex="$?"
if [[ "$ex" -ne "0" ]]; then
EXIT_CODE="$ex"
fi
done
DIST=debian
OS_IDS=("wheezy" "jessie" "stretch" "buster")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-herokuish) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
ex="$?"
if [[ "$ex" -ne "0" ]]; then
EXIT_CODE="$ex"
fi
done
else
log-info "(release-herokuish) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}" "$PACKAGE_NAME"
EXIT_CODE="$?"
fi
return "$EXIT_CODE"
}
fn-in-array() {
declare desc="return true if value ($1) is in list (all other arguments)"
local e
for e in "${@:2}"; do
[[ "$e" == "$1" ]] && return 0
done
return 1
}
fn-is-release() {
declare desc="Checks if a given run is a release run"
declare RELEASE="$1"
local IS_RELEASE=false
if [[ "$RELEASE" == "major" ]] || [[ "$RELEASE" == "minor" ]] || [[ "$RELEASE" == "patch" ]]; then
IS_RELEASE=true
fi
echo "$IS_RELEASE"
}
fn-require-bin() {
declare desc="Checks that a binary exists"
declare BINARY="$1"
if ! command -v "$BINARY" &>/dev/null; then
log-fail "Missing ${BINARY}, please install it"
fi
}
main() {
declare RELEASE="$1"
local NEXT_VERSION
local VALID_RELEASE_LEVELS=("major" "minor" "patch" "betafish" "build")
if [[ "$RELEASE" == '--trace' ]]; then
shift 1
RELEASE="$1"
TRACE=1 && set -x
fi
if [[ -z "$RELEASE" ]]; then
log-fail "Argument 1 must be one of [major, minor, patch, betafish, build], none given"
fi
if ! fn-in-array "$RELEASE" "${VALID_RELEASE_LEVELS[@]}"; then
log-fail "Argument 1 must be one of [major, minor, patch, betafish, build], '${RELEASE}' given"
fi
mkdir -p "build"
fn-require-bin "docker"
if [[ "$RELEASE" != "build" ]]; then
fn-require-bin "package_cloud"
[[ -n "$PACKAGECLOUD_TOKEN" ]] || log-fail "Missing PACKAGECLOUD_TOKEN environment variable"
fi
NEXT_VERSION="$(grep HEROKUISH_VERSION deb.mk | head -n1 | cut -d'=' -f2 | xargs)"
IS_RELEASE="$(fn-is-release "$RELEASE")"
fn-build-dokku || log-fail "Error building package"
fn-extract-package "herokuish_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package"
fn-extract-package "herokuish-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error extracting rpm package"
if [[ "$RELEASE" != "build" ]]; then
fn-publish-package "$IS_RELEASE" "deb" "build/herokuish_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package"
fn-publish-package "$IS_RELEASE" "rpm" "build/herokuish-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error publishing rpm package"
fi
}
main "$@"

View File

@@ -57,7 +57,7 @@ main() {
local CURRENT_VERSION FILENAME NEXT_VERSION ORG_REPO_NAME REPO_NAME major minor patch
if [[ -z "$RELEASE" ]]; then
cat<<'EOF'
cat <<'EOF'
requirements:
- this is run in a plugin folder
@@ -97,9 +97,9 @@ EOF
while true; do
read -rp "Do you wish to continue? " yn
case $yn in
[Yy]* ) break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
[Yy]*) break ;;
[Nn]*) exit ;;
*) echo "Please answer yes or no." ;;
esac
done
fi
@@ -131,19 +131,19 @@ EOF
patch=$(echo "$CURRENT_VERSION" | awk '{split($0,a,"."); print a[3]}')
if [[ "$RELEASE" == "major" ]]; then
major=$((major + 1));
major=$((major + 1))
minor="0"
patch="0"
elif [[ "$RELEASE" == "minor" ]]; then
minor=$((minor + 1));
minor=$((minor + 1))
patch="0"
elif [[ "$RELEASE" == "patch" ]]; then
patch=$((patch + 1));
patch=$((patch + 1))
else
log-error "Invalid release type specified"
return 1
fi
NEXT_VERSION="${major}.${minor}.${patch}"
NEXT_VERSION="${major}.${minor}.${patch}"
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" plugin.toml
git add plugin.toml
@@ -163,7 +163,7 @@ EOF
DOKKU_PLUGIN_S3_PATH="${DOKKU_PLUGIN_S3_PATH}/"
fi
fn-github-download-release "$ORG_REPO_NAME" "$NEXT_VERSION" > "${TMP_WORK_DIR}/${FILENAME}"
fn-github-download-release "$ORG_REPO_NAME" "$NEXT_VERSION" >"${TMP_WORK_DIR}/${FILENAME}"
aws s3 cp "${TMP_WORK_DIR}/${FILENAME}" "s3://${DOKKU_PLUGIN_S3_BUCKET}/${DOKKU_PLUGIN_S3_PATH}${FILENAME}" --acl public-read
fi
}

78
deb.mk
View File

@@ -1,6 +1,8 @@
BUILD_DIRECTORY ?= /tmp
HEROKUISH_DESCRIPTION = 'Herokuish uses Docker and Buildpacks to build applications like Heroku'
HEROKUISH_REPO_NAME ?= gliderlabs/herokuish
HEROKUISH_VERSION ?= 0.3.29
HEROKUISH_VERSION ?= 0.4.6
HEROKUISH_ARCHITECTURE = amd64
HEROKUISH_PACKAGE_NAME = herokuish_$(HEROKUISH_VERSION)_$(HEROKUISH_ARCHITECTURE).deb
@@ -8,6 +10,12 @@ DOKKU_DESCRIPTION = 'Docker powered PaaS that helps you build and manage the lif
DOKKU_REPO_NAME ?= dokku/dokku
DOKKU_ARCHITECTURE = amd64
DOKKU_UPDATE_DESCRIPTION = 'Binary that handles updating Dokku and related systems'
DOKKU_UPDATE_REPO_NAME ?= dokku/dokku
DOKKU_UPDATE_VERSION ?= 0.1.0
DOKKU_UPDATE_ARCHITECTURE = amd64
DOKKU_UPDATE_PACKAGE_NAME = dokku-update_$(DOKKU_UPDATE_VERSION)_$(DOKKU_UPDATE_ARCHITECTURE).deb
define PLUGN_DESCRIPTION
Hook system that lets users extend your application with plugins
Plugin triggers are simply scripts that are executed by the system.
@@ -52,7 +60,7 @@ export PLUGN_DESCRIPTION
export SIGIL_DESCRIPTION
export SSHCOMMAND_DESCRIPTION
.PHONY: install-from-deb deb-all deb-herokuish deb-dokku deb-plugn deb-setup deb-sshcommand deb-sigil
.PHONY: install-from-deb deb-all deb-herokuish deb-dokku deb-dokku-update deb-plugn deb-setup deb-sshcommand deb-sigil
install-from-deb:
@echo "--> Initial apt-get update"
@@ -63,13 +71,13 @@ install-from-deb:
wget -nv -O - https://get.docker.com/ | sh
@echo "--> Installing dokku"
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
wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
@echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ $(shell lsb_release -cs 2> /dev/null || echo "trusty") main" | sudo tee /etc/apt/sources.list.d/dokku.list
sudo apt-get update -qq > /dev/null
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install -yy dokku
deb-all: deb-setup deb-herokuish deb-dokku deb-plugn deb-sshcommand deb-sigil
mv /tmp/*.deb .
deb-all: deb-setup deb-herokuish deb-dokku deb-plugn deb-sshcommand deb-sigil deb-dokku-update
mv $(BUILD_DIRECTORY)/*.deb .
@echo "Done"
deb-setup:
@@ -87,28 +95,30 @@ deb-herokuish:
@echo "#!/usr/bin/env bash" >> /tmp/tmp/post-install
@echo "sleep 5" >> /tmp/tmp/post-install
@echo "echo 'Importing herokuish into docker (around 5 minutes)'" >> /tmp/tmp/post-install
@echo 'if [[ ! -z $${http_proxy+x} ]]; then BUILDARGS="--build-arg http_proxy=$$http_proxy"; fi' >> /tmp/tmp/post-install
@echo 'if [[ ! -z $${https_proxy+x} ]]; then BUILDARGS="$$BUILDARGS --build-arg https_proxy=$$https_proxy"; fi' >> /tmp/tmp/post-install
@echo 'if [[ ! -z $${BUILDARGS+x} ]]; then echo Adding proxy settings to docker build: $$BUILDARGS; fi' >> /tmp/tmp/post-install
@echo 'sudo docker build --pull $$BUILDARGS -t gliderlabs/herokuish /var/lib/herokuish 1> /dev/null' >> /tmp/tmp/post-install
@echo "-> Cloning repository"
git clone -q "https://github.com/$(HEROKUISH_REPO_NAME).git" --branch "v$(HEROKUISH_VERSION)" /tmp/tmp/herokuish > /dev/null
rm -rf /tmp/tmp/herokuish/.git /tmp/tmp/herokuish/.gitignore
@echo "-> Copying files into place"
mkdir -p "/tmp/build/var/lib"
cp -rf /tmp/tmp/herokuish /tmp/build/var/lib/herokuish
@echo 'if [[ ! -z $${http_proxy+x} ]]; then echo "See the docker pull docs for proxy configuration"; fi' >> /tmp/tmp/post-install
@echo 'if [[ ! -z $${https_proxy+x} ]]; then echo "See the docker pull docs for proxy configuration"; fi' >> /tmp/tmp/post-install
@echo 'if [[ ! -z $${BUILDARGS+x} ]]; then echo "See the docker pull docs for proxy configuration"; fi' >> /tmp/tmp/post-install
@echo "sudo docker pull gliderlabs/herokuish:v${HEROKUISH_VERSION} && sudo docker tag gliderlabs/herokuish:v${HEROKUISH_VERSION} gliderlabs/herokuish:latest" >> /tmp/tmp/post-install
@echo "-> Creating $(HEROKUISH_PACKAGE_NAME)"
sudo fpm -t deb -s dir -C /tmp/build -n herokuish -v $(HEROKUISH_VERSION) -a $(HEROKUISH_ARCHITECTURE) -p $(HEROKUISH_PACKAGE_NAME) --deb-pre-depends 'docker-engine-cs (>= 1.9.1) | docker-engine (>= 1.9.1) | docker-ce | docker-ee' --deb-pre-depends sudo --after-install /tmp/tmp/post-install --url "https://github.com/$(HEROKUISH_REPO_NAME)" --description $(HEROKUISH_DESCRIPTION) --license 'MIT License' .
mv *.deb /tmp
sudo fpm -t deb -s dir -C /tmp/build -n herokuish \
--version $(HEROKUISH_VERSION) \
--architecture $(HEROKUISH_ARCHITECTURE) \
--package $(BUILD_DIRECTORY)/$(HEROKUISH_PACKAGE_NAME) \
--deb-pre-depends 'docker-engine-cs (>= 1.9.1) | docker-engine (>= 1.9.1) | docker-ce | docker-ee' \
--deb-pre-depends sudo \
--after-install /tmp/tmp/post-install \
--url "https://github.com/$(HEROKUISH_REPO_NAME)" \
--description $(HEROKUISH_DESCRIPTION) \
--license 'MIT License' \
.
deb-dokku:
rm -rf /tmp/tmp /tmp/build dokku_*_$(DOKKU_ARCHITECTURE).deb
mkdir -p /tmp/tmp /tmp/build
cp -r debian /tmp/build/DEBIAN
mkdir -p /tmp/build/usr/share/bash-completion/completions
mkdir -p /tmp/build/usr/bin
mkdir -p /tmp/build/usr/share/doc/dokku
mkdir -p /tmp/build/usr/share/dokku/contrib
@@ -118,6 +128,7 @@ deb-dokku:
cp dokku /tmp/build/usr/bin
cp LICENSE /tmp/build/usr/share/doc/dokku/copyright
cp contrib/bash-completion /tmp/build/usr/share/bash-completion/completions/dokku
find . -name ".DS_Store" -depth -exec rm {} \;
$(MAKE) go-build
cp common.mk /tmp/build/var/lib/dokku/core-plugins/common.mk
@@ -147,8 +158,22 @@ else
git rev-parse HEAD > /tmp/build/var/lib/dokku/GIT_REV
endif
sed -i.bak "s/^Version: .*/Version: `cat /tmp/build/var/lib/dokku/STABLE_VERSION`/g" /tmp/build/DEBIAN/control && rm /tmp/build/DEBIAN/control.bak
dpkg-deb --build /tmp/build "/tmp/dokku_`cat /tmp/build/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
lintian "/tmp/dokku_`cat /tmp/build/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
dpkg-deb --build /tmp/build "$(BUILD_DIRECTORY)/dokku_`cat /tmp/build/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
lintian "$(BUILD_DIRECTORY)/dokku_`cat /tmp/build/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
deb-dokku-update:
rm -rf /tmp/dokku-update*.deb dokku-update*.deb
echo "${DOKKU_UPDATE_VERSION}" > contrib/dokku-update-version
sudo fpm -t deb -s dir -n dokku-update \
--version $(DOKKU_UPDATE_VERSION) \
--architecture $(DOKKU_UPDATE_ARCHITECTURE) \
--package $(BUILD_DIRECTORY)/$(DOKKU_UPDATE_PACKAGE_NAME) \
--depends 'dokku' \
--url "https://github.com/$(DOKKU_UPDATE_REPO_NAME)" \
--description $(DOKKU_UPDATE_DESCRIPTION) \
--license 'MIT License' \
contrib/dokku-update=/usr/local/bin/dokku-update \
contrib/dokku-update-version=/var/lib/dokku-update/VERSION
deb-plugn:
rm -rf /tmp/tmp /tmp/build $(PLUGN_PACKAGE_NAME)
@@ -165,14 +190,13 @@ deb-plugn:
sudo fpm -t deb -s dir -C /tmp/build -n plugn \
--version $(PLUGN_VERSION) \
--architecture $(PLUGN_ARCHITECTURE) \
--package $(PLUGN_PACKAGE_NAME) \
--package $(BUILD_DIRECTORY)/$(PLUGN_PACKAGE_NAME) \
--url "https://github.com/$(PLUGN_REPO_NAME)" \
--maintainer "Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>" \
--category utils \
--description "$$PLUGN_DESCRIPTION" \
--license 'MIT License' \
.
mv *.deb /tmp
deb-sshcommand:
rm -rf /tmp/tmp /tmp/build $(SSHCOMMAND_PACKAGE_NAME)
@@ -190,14 +214,13 @@ deb-sshcommand:
sudo fpm -t deb -s dir -C /tmp/build -n sshcommand \
--version $(SSHCOMMAND_VERSION) \
--architecture $(SSHCOMMAND_ARCHITECTURE) \
--package $(SSHCOMMAND_PACKAGE_NAME) \
--package $(BUILD_DIRECTORY)/$(SSHCOMMAND_PACKAGE_NAME) \
--url "https://github.com/$(SSHCOMMAND_REPO_NAME)" \
--maintainer "Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>" \
--category admin \
--description "$$SSHCOMMAND_DESCRIPTION" \
--license 'MIT License' \
.
mv *.deb /tmp
deb-sigil:
rm -rf /tmp/tmp /tmp/build $(SIGIL_PACKAGE_NAME)
@@ -214,11 +237,10 @@ deb-sigil:
sudo fpm -t deb -s dir -C /tmp/build -n gliderlabs-sigil \
--version $(SIGIL_VERSION) \
--architecture $(SIGIL_ARCHITECTURE) \
--package $(SIGIL_PACKAGE_NAME) \
--package $(BUILD_DIRECTORY)/$(SIGIL_PACKAGE_NAME) \
--url "https://github.com/$(SIGIL_REPO_NAME)" \
--maintainer "Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>" \
--category utils \
--description "$$SIGIL_DESCRIPTION" \
--license 'MIT License' \
.
mv *.deb /tmp

6
debian/config vendored
View File

@@ -1,5 +1,6 @@
#!/bin/bash
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
if [[ -e /usr/share/debconf/confmodule ]]; then
# shellcheck disable=SC1091
@@ -14,9 +15,10 @@ db_go || true
db_get "dokku/web_config"
if [ $RET = "true" ]; then
exit 0
exit 0
fi
db_input "high" "dokku/nginx_enable" || true
db_input "high" "dokku/hostname" || true
db_input "high" "dokku/vhost_enable" || true
if [ "$ACTION" != "reconfigure" ]; then

6
debian/control vendored
View File

@@ -1,10 +1,10 @@
Package: dokku
Version: 0.10.2
Version: 0.14.3
Section: web
Priority: optional
Architecture: amd64
Depends: locales, git, make, curl, gcc, man-db, netcat, sshcommand (>= 0.6.0), gliderlabs-sigil, docker-engine-cs (>= 1.9.1) | docker-engine (>= 1.9.1) | docker-io (>= 1.9.1) | docker-ce | docker-ee, software-properties-common, python-software-properties | python3-software-properties
Recommends: herokuish (>= 0.3.4), parallel
Depends: locales, git, make, curl, gcc, man-db, netcat, sshcommand (>= 0.6.0), gliderlabs-sigil, docker-engine-cs (>= 1.7.1) | docker-engine (>= 1.7.1) | docker-io (>= 1.7.1) | docker.io (>= 1.7.1) | docker-ce | docker-ee, net-tools, software-properties-common, procfile-util, python-software-properties | python3-software-properties, rsyslog
Recommends: herokuish (>= 0.3.4), parallel, dokku-update
Pre-Depends: nginx (>= 1.8.0) | openresty, dnsutils, cgroupfs-mount | cgroup-lite, plugn (>= 0.3.0), sudo, python2.7, debconf
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
Description: Docker-powered PaaS that helps build and manage the lifecycle of applications

View File

@@ -3,3 +3,10 @@ dokku: maintainer-script-calls-systemctl postinst:87
dokku: changelog-file-missing-in-native-package
dokku: statically-linked-binary
dokku: unstripped-binary-or-object
# The Go compiler is currently unable to produce read-only relocations
# (it produces static binaries).
dokku: hardening-no-relro
# Built golang binaries link to libc
dokku: missing-dependency-on-libc

47
debian/postinst vendored
View File

@@ -1,11 +1,17 @@
#!/bin/bash
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
if [[ -e /usr/share/debconf/confmodule ]]; then
# shellcheck disable=SC1091
. /usr/share/debconf/confmodule
fi
if [[ -r /etc/default/dokku ]]; then
# shellcheck disable=SC1091
source /etc/default/dokku
fi
readonly DOKKU_ROOT="${DOKKU_ROOT:-/home/dokku}"
readonly DOKKU_LIB_ROOT="${DOKKU_LIB_PATH:-/var/lib/dokku}"
@@ -21,10 +27,10 @@ call-sshcommand() {
}
case "$1" in
abort-upgrade|abort-remove|abort-deconfigure)
;;
abort-upgrade | abort-remove | abort-deconfigure) ;;
configure)
\
configure)
mandb
[ ! -x /usr/bin/docker.io ] || ln -sf /usr/bin/docker.io /usr/local/bin/docker
modprobe aufs || echo "WARNING: Restart server to finish installing dokku!"
@@ -50,14 +56,18 @@ case "$1" in
elif [ -f ${DOKKU_LIB_ROOT}/plugins/$plugin/.core ]; then
rm -rf ${DOKKU_LIB_ROOT}/plugins/$plugin
elif [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
mv ${DOKKU_LIB_ROOT}/plugins/$plugin ${DOKKU_LIB_ROOT}/plugins/available;
mv ${DOKKU_LIB_ROOT}/plugins/$plugin ${DOKKU_LIB_ROOT}/plugins/available
fi
done
db_get "dokku/nginx_enable"
echo "Enabling all core plugins"
find ${DOKKU_LIB_ROOT}/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
if [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
ln -s ${DOKKU_LIB_ROOT}/core-plugins/available/$plugin ${DOKKU_LIB_ROOT}/plugins/available/$plugin;
if [ "$plugin" = "nginx-vhosts" ] && [ "$RET" = "false" ]; then
echo "Skipping enable of nginx-vhosts plugin"
continue
elif [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
ln -s ${DOKKU_LIB_ROOT}/core-plugins/available/$plugin ${DOKKU_LIB_ROOT}/plugins/available/$plugin
PLUGIN_PATH=${DOKKU_LIB_ROOT}/core-plugins plugn enable $plugin
PLUGIN_PATH=${DOKKU_LIB_ROOT}/plugins plugn enable $plugin
fi
@@ -66,7 +76,7 @@ case "$1" in
chown dokku:dokku -R ${DOKKU_LIB_ROOT}/plugins ${DOKKU_LIB_ROOT}/core-plugins
echo "Ensure proper sshcommand path"
echo '/usr/bin/dokku' > "${DOKKU_ROOT}/.sshcommand"
echo '/usr/bin/dokku' >"${DOKKU_ROOT}/.sshcommand"
if [[ -f .ssh/authorized_keys ]]; then
sed -i.bak 's#/usr/local/bin/dokku#/usr/bin/dokku#' "${DOKKU_ROOT}/.ssh/authorized_keys"
rm "${DOKKU_ROOT}/.ssh/authorized_keys"
@@ -87,8 +97,8 @@ case "$1" in
systemctl enable dokku-installer
fi
installer_status="$(service dokku-installer status 2> /dev/null || true)"
if echo $installer_status | grep -Eq "(inactive|waiting)" > /dev/null; then
installer_status="$(service dokku-installer status 2>/dev/null || true)"
if echo $installer_status | grep -Eq "(inactive|waiting)" >/dev/null; then
echo "Starting dokku-installer"
service dokku-installer start || echo "Unable to start dokku-installer"
fi
@@ -100,21 +110,24 @@ case "$1" in
exit 0
fi
db_get "dokku/vhost_enable"
if [ "$RET" = "true" ]; then
db_get "dokku/hostname"
echo "$RET" > "${DOKKU_ROOT}/VHOST"
if [ -f "${DOKKU_ROOT}/VHOST" ]; then
echo "VHOST file detected, skipping modification"
else
rm -f "${DOKKU_ROOT}/VHOST"
db_get "dokku/vhost_enable"
if [ "$RET" = "true" ]; then
db_get "dokku/hostname"
echo "Setting VHOST contents to $RET"
echo "$RET" >"${DOKKU_ROOT}/VHOST"
fi
fi
db_get "dokku/hostname"
echo "$RET" > "${DOKKU_ROOT}/HOSTNAME"
echo "$RET" >"${DOKKU_ROOT}/HOSTNAME"
if [ -z "${DEBCONF_RECONFIGURE}" ]; then
db_get "dokku/key_file"
if [ -f "$RET" ]; then
call-sshcommand acl-add dokku default < "$RET" || true
call-sshcommand acl-add dokku default <"$RET" || true
fi
fi
;;

10
debian/postrm vendored
View File

@@ -1,5 +1,6 @@
#!/bin/bash
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
if [[ -e /usr/share/debconf/confmodule ]]; then
# shellcheck disable=SC1091
@@ -21,9 +22,14 @@ main() {
rm -f /etc/systemd/system/dokku-redeploy.service
rm -f /etc/update-motd.d/99-dokku
(nginx -t && service nginx reload) || true
db_get "dokku/nginx_enable"
if [ "$RET" = "true" ]; then
(nginx -t && service nginx reload) || true
fi
if [[ "$1" == "purge" ]]; then
rm -f /etc/nginx/conf.d/dokku.conf
rm -f /etc/nginx/conf.d/dokku-installer.conf
rm -f ${DOKKU_ROOT}/.dokkurc ${DOKKU_ROOT}/dokkurc ${DOKKU_ROOT}/tls
rm -f ${DOKKU_ROOT}/.ssh/authorized_keys ${DOKKU_ROOT}/.sshcommand
rm -f ${DOKKU_ROOT}/ENV ${DOKKU_ROOT}/HOSTNAME ${DOKKU_ROOT}/VERSION

38
debian/preinst vendored
View File

@@ -1,5 +1,6 @@
#!/bin/bash
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
if [[ -e /usr/share/debconf/confmodule ]]; then
# shellcheck disable=SC1091
@@ -23,10 +24,23 @@ case "$1" in
echo ' proxy_pass http://dokku-installer;'
echo ' }'
echo '}'
} >> $NGINX_CONF
} >>$NGINX_CONF
rm -f /etc/nginx/sites-enabled/*
service nginx reload || /etc/init.d/nginx reload
DOKKU_DISTRO="$(
. /etc/os-release >/dev/null 2>&1 || true
echo "$ID"
)"
case "$DOKKU_DISTRO" in
debian)
NGINX_INIT="/usr/sbin/invoke-rc.d"
"$NGINX_INIT" nginx reload || "$NGINX_INIT" nginx start
;;
ubuntu)
NGINX_INIT="/etc/init.d/nginx"
"$NGINX_INIT" reload || "$NGINX_INIT" start
;;
esac
exit 0
fi
@@ -34,21 +48,21 @@ case "$1" in
if [ -z "${DEBCONF_RECONFIGURE}" ] && [ "$RET" != "true" ]; then
db_get "dokku/key_file"
if [ ! -f "$RET" ]; then
echo "Error: keyfile '$RET' not found."
echo " you can enter a new keyfile path when you restart the installation."
db_reset "dokku/key_file"
exit 1
echo "Error: keyfile '$RET' not found."
echo " you can enter a new keyfile path when you restart the installation."
db_reset "dokku/key_file"
exit 1
fi
fi
;;
upgrade)
;;
upgrade) ;;
abort-upgrade)
;;
\
abort-upgrade) ;;
*)
\
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;

33
debian/prerm vendored
View File

@@ -1,34 +1,35 @@
#!/bin/bash
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
readonly DOKKU_ROOT="${DOKKU_ROOT:-/home/dokku}"
readonly DOKKU_LIB_ROOT="${DOKKU_LIB_PATH:-/var/lib/dokku}"
ps_backtrace() {
if [ $# -lt 1 ]; then
echo "Usage: $0 PID" > /dev/stderr
echo "Usage: $0 PID" >/dev/stderr
exit 1
fi
declare -i pid=$1;
ppid=0;
header_modifier="";
while : ; do
declare -i pid=$1
ppid=0
header_modifier=""
while :; do
if [ $ppid -ne 0 ]; then
header_modifier=h;
fi;
ppid=$(ps -o ppid= $pid);
ps uww $header_modifier -p $pid;
header_modifier=h
fi
ppid=$(ps -o ppid= $pid)
ps uww $header_modifier -p $pid
if [ $pid -eq 1 ]; then
break;
fi;
pid=$ppid;
done;
break
fi
pid=$ppid
done
}
main() {
# HACK: Ensure that we only delete data when purging dokku from the system
if ps_backtrace $BASHPID 2> /dev/null | grep dpkg | grep -- "--purge" > /dev/null; then
if ps_backtrace $BASHPID 2>/dev/null | grep dpkg | grep -- "--purge" >/dev/null; then
echo "Processing purge"
echo "Destroying deployed applications"
@@ -40,7 +41,7 @@ main() {
echo "Disabling all core plugins"
find ${DOKKU_LIB_ROOT}/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
if [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
rm ${DOKKU_LIB_ROOT}/plugins/available/$plugin;
rm ${DOKKU_LIB_ROOT}/plugins/available/$plugin
PLUGIN_PATH=${DOKKU_LIB_ROOT}/core-plugins plugn disable $plugin
PLUGIN_PATH=${DOKKU_LIB_ROOT}/plugins plugn disable $plugin
fi

5
debian/templates vendored
View File

@@ -22,3 +22,8 @@ Template: dokku/key_file
Description: Keyfile for initial user:
Type: string
Default: /root/.ssh/id_rsa.pub
Template: dokku/nginx_enable
Description: Enable nginx-vhosts plugin?
Type: boolean
Default: true

View File

@@ -2,25 +2,52 @@
> New as of 0.5.0
Sometimes you need to run a command on at deployment time, but before an app is completely deployed.
Common use cases include:
Sometimes you need to run a command on at deployment time, but before an app is completely deployed. Common use cases include:
* Checking a database is initialized
* Running database migrations
* Any commands required to set up the server (e.g. something like a Django `collectstatic`)
## `app.json` and `scripts.dokku`
To support this, Dokku provides support for a special `release` command within your app's `Procfile`, as well as a special `scripts.dokku` key inside of your app's `app.json` file. Be aware that all commands are run within the context of the built docker image - no commands affect the host unless there are volume mounts attached to your app.
Dokku accomplishes this by using an `app.json` file. The format in use is similar to format of Heroku's [app.json](https://devcenter.heroku.com/articles/app-json-schema).
However, Dokku currently only supports the nodes `scripts.dokku.predeploy` and `scripts.dokku.postdeploy`.
For buildpack apps, simply place an `app.json` file in the root of your repository.
For dockerfile apps, place `app.json` in the configured `WORKDIR` directory; otherwise Dokku defaults to the buildpack app behavior of looking in `/app`.
Each "phase" has different expectations and limitations:
> NOTE: postdeploy changes are *NOT* committed to the app image.
- `app.json`: `scripts.dokku.predeploy`
- When to use: This should be used if your app does not support arbitrary build commands and you need to make changes to the built image.
- Are changes committed to the image at this phase: Yes
- Example use-cases
- Bundling assets in a slightly different way
- Installing a custom package from source or copying a binary into place
- `app.json`: `scripts.dokku.postdeploy`
- When to use: This should be used in conjunction with external systems to signal the completion of your deploy.
- Are changes committed to the image at this phase: No
- Example use-cases
- Notifying slack that your app is deployed
- Coordinating traffic routing with a central load balancer
- `Procfile`: `release`
- When to use: This should be used in conjunction with external systems to signal the completion of your app image build.
- Are changes committed to the image at this phase: No
- Example use-cases
- Sending CSS, JS, and other assets from your app’s slug to a CDN or S3 bucket
- Priming or invalidating cache stores
- Running database migrations
### Example app.json
Please keep the above in mind when utilizing deployment tasks.
> NOTE: Only the `scripts.dokku.predeploy` and `scripts.dokku.postdeploy` tasks are supported by Dokku at this time. All other fields will be ignored and can be omitted.
> To execute commands on the host during a release phase, see the [plugin creation documentation](/docs/development/plugin-creation) docs for more information on building your own custom plugin.
## `app.json` deployment tasks
Dokku provides limited support for the `app.json` manifest from Heroku (documentation available [here](https://devcenter.heroku.com/articles/app-json-schema)). The keys available for use with Deployment Tasks are:
- `scripts.dokku.predeploy`: This is run _after_ an app's docker image is built, but _before_ any containers are scheduled. Changes made to your image are committed at this phase.
- `scripts.dokku.postdeploy`: This is run _after_ an app's containers are scheduled. Changes made to your image are *not* committed at this phase.
For buildpack-based deployments, the location of the `app.json` file should be at the root of your repository. Dockefile-based app deploys should have the `app.json` in the configured `WORKDIR` directory; otherwise Dokku defaults to the buildpack app behavior of looking in `/app`.
> Warning: Any failed `app.json` deployment task will fail the deploy. In the case of either phase, a failure will not affect any running containers.
The following is an example `app.json` file. Please note that only the `scripts.dokku.predeploy` and `scripts.dokku.postdeploy` tasks are supported by Dokku at this time. All other fields will be ignored and can be omitted.
```json
{
@@ -32,3 +59,19 @@ For dockerfile apps, place `app.json` in the configured `WORKDIR` directory; oth
}
}
```
## Procfile Release command
> New as of 0.14.0
The `Procfile` also supports a special `release` command which acts in a similar way to the [Heroku Release Phase](https://devcenter.heroku.com/articles/release-phase). This command is executed _after_ an app's docker image is built, but _before_ any containers are scheduled. This is also run _after_ any command executed by `scripts.dokku.predeploy`.
To use the `release` command, simply add a `release` stanza to your Procfile.
```Procfile
release: curl https://some.external.api.service.com/deployment?state=built
```
Unlike the `scripts.dokku.predeploy` command, changes made during by the `release` command are *not* persisted to disk.
> Warning: scaling the release command up will likely result in unspecified issues within your deployment, and is highly discouraged.

View File

@@ -36,10 +36,8 @@ Jul 3 16:10:02 dokku.me dokku[128114]: INVOKED: docker-args-run( nhl )
Jul 3 16:10:03 dokku.me dokku[128136]: INVOKED: post-release-buildpack( pythonapp )
Jul 3 16:10:03 dokku.me dokku[128195]: INVOKED: pre-deploy( pythonapp )
Jul 3 16:10:23 dokku.me dokku[129253]: INVOKED: docker-args-deploy( pythonapp )
Jul 3 16:10:24 dokku.me dokku[129337]: INVOKED: bind-external-ip( pythonapp )
Jul 3 16:10:24 dokku.me dokku[129451]: INVOKED: check-deploy( pythonapp 6274ced0d4be11af4490cd18abaf77cdd593f025133f403d984e80d86a39acec web 5000 10.0.16.80 )
Jul 3 16:10:35 dokku.me dokku[129561]: INVOKED: docker-args-deploy( pythonapp )
Jul 3 16:10:35 dokku.me dokku[129649]: INVOKED: bind-external-ip( pythonapp )
Jul 3 16:10:36 dokku.me dokku[129760]: INVOKED: check-deploy( pythonapp ac88a56ee4161ff37e4b92d1498c3eadc91f0aa7c8b81b44fc077e2a51d54cc0 worker )
Jul 3 16:10:46 dokku.me dokku[129851]: INVOKED: post-deploy( pythonapp )
Jul 3 16:10:46 dokku.me dokku[129945]: INVOKED: nginx-pre-reload( pythonapp )
@@ -56,29 +54,28 @@ dokku events:list
```
=====> Events currently logged
docker-args-build
pre-delete
post-deploy
receive-app
pre-release-buildpack
nginx-pre-reload
docker-args-deploy
post-build-buildpack
post-domains-update
post-release-dockerfile
check-deploy
git-pre-pull
git-post-pull
nginx-hostname
bind-external-ip
pre-deploy
post-delete
dependencies
pre-build-buildpack
docker-args-build
docker-args-deploy
docker-args-run
pre-build-dockerfile
post-release-buildpack
git-post-pull
git-pre-pull
nginx-hostname
nginx-pre-reload
post-build-buildpack
post-build-dockerfile
post-delete
post-deploy
post-domains-update
post-release-buildpack
post-release-dockerfile
pre-build-buildpack
pre-build-dockerfile
pre-delete
pre-deploy
pre-release-buildpack
pre-release-dockerfile
receive-app
update
```
```

View File

@@ -14,9 +14,19 @@ storage:unmount <app> <host-dir:container-dir> # Remove an existing bind mount
> The storage plugin is compatible with storage mounts created with the docker-options. The storage plugin will only list mounts from the deploy/run phase.
## Ideology and Background
The storage plugin supports the following mount points:
The storage plugin requires explicit paths on the host side. This is intentional to ensure that new users avoid running into unexpected results with implicit paths that may not exist (a feature deprecated in [Docker 1.9.0](https://github.com/docker/docker/releases/tag/v1.9.0])). The container directory is created for the mount point in the container. Any existing directory contents are not accessible after a mount is added to the container. Dokku creates a new directory `/var/lib/dokku/data/storage` during installation, it's the general consensus that new users should use this directory. Mounts are only available at run and deploy times, you must redeploy (restart) an app to mount or unmount to an existing app's container.
- explicit paths that exist on the host
- docker volumes
There are a few caveats to using the persistent storage plugin:
- Using implicit paths that do not exist are no longer supported, and actually deprecated in [Docker 1.9.0](https://github.com/docker/docker/releases/tag/v1.9.0). When you specify a persistent storage mount, the host directory is **not** autocreated by either Dokku or Docker.
- We recommend using the directory `/var/lib/dokku/data/storage` directory as the root host path for mounts, and we create this on Dokku installation.
- Mounts are only available at run and deploy times, and you **must** redeploy (restart) an app to mount or unmount to an existing app's container.
- When a directory is mounted, any existing files within the container will be overwritten. If you are writing assets during the build process and then replace the directory with a mount, those files will no longer exist. This is a Docker limitation.
- Paths are mounted within the container at the root of the disk - `/` - and are **not** relative to `/app` (for buildpacks deploys) or the `WORKDIR` (for Dockerfile/Docker images).
- For applications using buildpack deploys, the host directory should be owned by the user and group id `32767`. This is due to how permissions within Herokuish - which builds the Docker images - works. For Dockerfile or Docker image deployments, please use the user and group id which corresponds to the one running the process within the container.
## Usage
@@ -29,11 +39,11 @@ dokku storage:mount node-js-app /var/lib/dokku/data/storage/node-js-app:/storage
Dokku will then mount the shared contents of `/var/lib/dokku/data/storage` to `/storage` inside the container.
Once you have mounted persistent storage, you will also need to restart the application. See the
Once you have mounted persistent storage, you will also need to restart the application. See the
[process scaling documentation](/docs/deployment/process-management.md) for more information.
```shell
dokku ps:rebuild app-name
dokku ps:restart app-name
```
A more complete workflow may require making a custom directory for your application and mounting it within your `/app/storage` directory instead. The mount point is *not* relative to your application's working directory, and is instead relative to the root of the container.
@@ -45,7 +55,8 @@ mkdir -p /var/lib/dokku/data/storage/node-js-app
# ensure the proper user has access to this directory
chown -R dokku:dokku /var/lib/dokku/data/storage/node-js-app
# as of 0.7.x, you should chown using the `32767` user and group id
# as of 0.7.x, you should chown using the `32767` user and group id for buildpack deploys
# For dockerfile deploys, substitute the user and group id in use within the image
chown -R 32767:32767 /var/lib/dokku/data/storage/node-js-app
# mount the directory into your container's /app/storage directory, relative to root
@@ -121,7 +132,7 @@ Your app may have services that are running in memory and need to be backed up l
By default, Dokku will only bind storage mounts during the deploy and run phases. Under certain conditions, one might want to bind a storage mount during the build phase. This can be accomplished by using the `docker-options` plugin directly.
```shell
dokku docker-options:add <app> build "-v /tmp/python-test:/opt/test"
dokku docker-options:add node-js-app build "-v /tmp/python-test:/opt/test"
```
You cannot use mounted volumes during the build phase of a Dockerfile deploy. This is because Docker does not support volumes when executing `docker build`.
@@ -136,4 +147,4 @@ By default, Dokku will execute your buildpack application processes as the `hero
> NOTE: this user must exist in your herokuish image.
Additionally, Dokku will ensure your storage mounts are owned by either `herokuishuser` or the overridden value you have set in `DOKKU_APP_USER`.
Additionally, the default `docker-local` scheduler that comes with Dokku will ensure your storage mounts are owned by either `herokuishuser` or the overridden value you have set in `DOKKU_APP_USER`. See the [scheduler-docker-local documentation](/docs/advanced-usage/schedulers/docker-local.md#disabling-chown-of-persistent-storage) docs for more information.

View File

@@ -31,30 +31,31 @@ dokku plugin
```
plugn: dev
00_dokku-standard 0.10.2 enabled dokku core standard plugin
20_events 0.10.2 enabled dokku core events logging plugin
apps 0.10.2 enabled dokku core apps plugin
build-env 0.10.2 enabled dokku core build-env plugin
certs 0.10.2 enabled dokku core certificate management plugin
checks 0.10.2 enabled dokku core checks plugin
common 0.10.2 enabled dokku core common plugin
config 0.10.2 enabled dokku core config plugin
docker-options 0.10.2 enabled dokku core docker-options plugin
domains 0.10.2 enabled dokku core domains plugin
enter 0.10.2 enabled dokku core enter plugin
git 0.10.2 enabled dokku core git plugin
logs 0.10.2 enabled dokku core logs plugin
named-containers 0.10.2 enabled dokku core named containers plugin
nginx-vhosts 0.10.2 enabled dokku core nginx-vhosts plugin
plugin 0.10.2 enabled dokku core plugin plugin
proxy 0.10.2 enabled dokku core proxy plugin
ps 0.10.2 enabled dokku core ps plugin
repo 0.10.2 enabled dokku core repo plugin
shell 0.10.2 enabled dokku core shell plugin
ssh-keys 0.10.2 enabled dokku core ssh-keys plugin
storage 0.10.2 enabled dokku core storage plugin
tags 0.10.2 enabled dokku core tags plugin
tar 0.10.2 enabled dokku core tar plugin
00_dokku-standard 0.14.3 enabled dokku core standard plugin
20_events 0.14.3 enabled dokku core events logging plugin
apps 0.14.3 enabled dokku core apps plugin
build-env 0.14.3 enabled dokku core build-env plugin
certs 0.14.3 enabled dokku core certificate management plugin
checks 0.14.3 enabled dokku core checks plugin
common 0.14.3 enabled dokku core common plugin
config 0.14.3 enabled dokku core config plugin
docker-options 0.14.3 enabled dokku core docker-options plugin
domains 0.14.3 enabled dokku core domains plugin
enter 0.14.3 enabled dokku core enter plugin
git 0.14.3 enabled dokku core git plugin
logs 0.14.3 enabled dokku core logs plugin
named-containers 0.14.3 enabled dokku core named containers plugin
network 0.14.3 enabled dokku core network plugin
nginx-vhosts 0.14.3 enabled dokku core nginx-vhosts plugin
plugin 0.14.3 enabled dokku core plugin plugin
proxy 0.14.3 enabled dokku core proxy plugin
ps 0.14.3 enabled dokku core ps plugin
repo 0.14.3 enabled dokku core repo plugin
shell 0.14.3 enabled dokku core shell plugin
ssh-keys 0.14.3 enabled dokku core ssh-keys plugin
storage 0.14.3 enabled dokku core storage plugin
tags 0.14.3 enabled dokku core tags plugin
tar 0.14.3 enabled dokku core tar plugin
```
Installing a plugin is easy as well using the `plugin:install` command. This command will also trigger the `install` pluginhook on all existing plugins.

View File

@@ -1,206 +0,0 @@
# Proxy Management
> New as of 0.5.0, Enhanced in 0.6.0
```
proxy:disable <app> # Disable proxy for app
proxy:enable <app> # Enable proxy for app
proxy:ports <app> # List proxy port mappings for app
proxy:ports-add <app> <scheme>:<host-port>:<container-port> [<scheme>:<host-port>:<container-port>...] # Set proxy port mappings for app
proxy:ports-clear <app> # Clear all proxy port mappings for app
proxy:ports-remove <app> <host-port> [<host-port>|<scheme>:<host-port>:<container-port>...] # Unset proxy port mappings for app
proxy:report [<app>] [<flag>] # Displays a proxy report for one or more apps
proxy:set <app> <proxy-type> # Set proxy type for app
```
In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into the proxy plugin. Dokku 0.6.0 introduced the ability to map host ports to specific container ports. In the future this will allow other proxy software - such as HAProxy or Caddy - to be used in place of nginx.
## Usage
### Container network interface binding
> New as of 0.5.0
By default, the deployed docker container running your app's web process will bind to the internal docker network interface (i.e. `docker inspect --format '{{ .NetworkSettings.IPAddress }}' $CONTAINER_ID`). This behavior can be modified per app by disabling the proxy (i.e. `dokku proxy:disable <app>`). In this case, the container will bind to an external interface (i.e. `0.0.0.0`) and your app container will be directly accessible by other hosts on your network.
> If a proxy is disabled, Dokku will bind your container's port to a random port on the host for every deploy, e.g. `0.0.0.0:32771->5000/tcp`.
By way of example, in the default case, each container is bound to the docker interface:
```shell
docker ps
```
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b88d8aec3d1 dokku/node-js-app:latest "/bin/bash -c '/star About a minute ago Up About a minute node-js-app.web.1
```
As such, the container's IP address will be an internal IP, and thus it is only accessible on the host itself:
```
docker inspect --format '{{ .NetworkSettings.IPAddress }}' node-js-app.web.1
```
```
172.17.0.6
```
However, you can disable the internal proxying via the `proxy:disable` command so that it will listen on the host's IP address:
```shell
dokku proxy:disable node-js-app
# container bound to all interfaces
docker ps
```
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6499edb0edb dokku/node-js-app:latest "/bin/bash -c '/star About a minute ago Up About a minute 0.0.0.0:49153->5000/tcp node-js-app.web.1
```
### Displaying proxy reports about an app
> New as of 0.8.1
You can get a report about the app's proxy status using the `proxy:report` command:
```shell
dokku proxy:report
```
```
=====> node-js-app proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000 https:443:5000
=====> python-sample proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000
=====> ruby-sample proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000
```
You can run the command for a specific app also.
```shell
dokku proxy:report node-js-app
```
```
=====> node-js-app proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000 https:443:5000
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku proxy:report node-js-app --proxy-type
```
### Proxy port mapping
> New as of 0.6.0
You can now configure `host -> container` port mappings with the `proxy:ports-*` commands. This mapping is currently supported by the built-in nginx-vhosts plugin.
To inspect the port mapping for a given application, use the `proxy:ports` command:
```shell
dokku proxy:ports node-js-app
```
```
-----> Port mappings for node-js-app
-----> scheme host port container port
http 80 5000
```
The above application is listening on the host's port `80`, which we can test via curl:
```shell
curl http://node-js-app.dokku.me
```
```
Hello World!
```
There are cases where we may wish for the service to be listening on more than one port, such as port 8080. Normally, this would not be possible:
```shell
curl http://node-js-app.dokku.me:8080
```
```
curl: (7) Failed to connect to node-js-app.dokku.me port 8080: Connection refused
```
However, we can use the `proxy:ports-add` command to add a second external port mapping - `8080` - to our application's port `5000`.
```shell
dokku proxy:ports-add node-js-app http:8080:5000
```
```
-----> Setting config vars
DOKKU_PROXY_PORT_MAP: http:80:5000 http:8080:5000
-----> Configuring node-js-app.dokku.me...(using built-in template)
-----> Creating http nginx.conf
-----> Running nginx-pre-reload
Reloading nginx
```
We can now test that port 80 still responds properly:
```shell
curl http://node-js-app.dokku.me
```
```
Hello World!
```
And our new listening port of `8080` also works:
```shell
curl http://node-js-app.dokku.me:8080
```
```
Hello World!
```
You can also remove a port mapping that is no longer necessary:
```shell
dokku proxy:ports-remove node-js-app http:80:5000
```
By default, buildpack apps and dockerfile apps **without** explicitly exposed ports (i.e. using the `EXPOSE` directive) will be configured with a listener on port `80` (and additionally a listener on 443 if ssl is enabled) that will proxy to the application container on port `5000`. Dockerfile apps **with** explicitly exposed ports will be configured with a listener on each exposed port and will proxy to that same port of the deployed application container.
> Note: This default behavior **will not** be automatically changed on subsequent pushes and must be manipulated with the `proxy:ports-*` syntax detailed above.
#### Proxy Port Scheme
The proxy port scheme is as follows:
- `SCHEME:HOST_PORT:CONTAINER_PORT`
The scheme metadata can be used by proxy implementations in order to properly handle proxying of requests. For example, the built-in `nginx-vhosts` proxy implementation supports both the `http` and `https` schemes.
Developers of proxy implementations are encouraged to use whatever schemes make the most sense, and ignore configurations which they do not support. For instance, a `udp` proxy implementation can safely ignore `http` and `https` port mappings.
To change the proxy implementation in use for an application, use the `proxy:set` command:
```shell
# no validation will be performed against
# the specified proxy implementation
dokku proxy:set node-js-app nginx
```

View File

@@ -0,0 +1,55 @@
# Docker Local Scheduler
> Subcommands new as of 0.12.12
```
scheduler-docker-local:report [<app>] [<flag>] # Displays a scheduler-docker-local report for one or more apps
scheduler-docker-local:set <app> <key> (<value>) # Set or clear a scheduler-docker-local property for an app
```
> New as of 0.12.0
Dokku natively includes functionality to manage application lifecycles for a single server using the `scheduler-docker-local` plugin. It is the default scheduler, but as with all schedulers, it is set on a per-application basis. The scheduler can currently be overridden by running the following command:
```shell
dokku config:set node-js-app DOCKER_SCHEDULER=docker-local
```
As it is the default, unsetting the `DOCKER_SCHEDULER` config variable is also a valid way to reset the scheduler.
```shell
dokku config:unset node-js-app DOCKER_SCHEDULER
```
## Usage
### Disabling chown of persistent storage
The `scheduler-docker-local` plugin will ensure your storage mounts are owned by either `herokuishuser` or the overridden value you have set in `DOKKU_APP_USER`. You may disable this by running the following `scheduler-docker-local:set` command for your application:
```shell
dokku scheduler-docker-local:set node-js-app disable-chown true
```
Once set, you may re-enable it by setting a blank value for `disable-chown`:
```shell
dokku scheduler-docker-local:set node-js-app disable-chown
```
## Implemented Triggers
This plugin implements various functionality through `plugn` triggers to integrate with Docker for running apps on a single server. The following functionality is supported by the `scheduler-docker-local` plugin.
- `check-deploy`
- `core-post-deploy`
- `post-delete`
- `pre-deploy`
- `pre-restore`
- `scheduler-deploy`
- `scheduler-docker-cleanup`
- `scheduler-logs-failed`
- `scheduler-run`
- `scheduler-stop`
- `scheduler-tags-create`
- `scheduler-tags-destroy`

View File

@@ -0,0 +1,13 @@
# 0.10.0 Migration Guide
## PCI Compliance
By default, Dokku will ship a PCI Compliant nginx configuration. For developers whose users are on older browsers or mobile devices, you may need to ship a custom `nginx.conf.sigil` to enable ciphers for older browsers.
See the [nginx customization](/docs/configuration/nginx/#customizing-the-nginx-configuration) docs for more details.
## Nginx Error Pages
We now ship with nicer error pages by default. You are free to customize your Dokku installation via a custom `nginx.conf.sigil` to change what error pages are displayed in different circumstances.
See the [nginx customization](/docs/configuration/nginx/#customizing-the-nginx-configuration) docs for more details.

View File

@@ -8,10 +8,10 @@
- A detailed list of template variables can be found [here](/docs/configuration/nginx.md#available-template-variables)
- A custom nginx-vhosts template must be named `nginx.conf.sigil`
- The default path for this custom template is the root of your repo (i.e. `/app` in the container or `WORKDIR` if defined in a dockerfile app)
- Dokku no longer looks for this file in `/home/dokku/myapp` on the Dokku server
- Dokku no longer looks for this file in `/home/dokku/node-js-app` on the Dokku server
- Check out an example template [here](/docs/configuration/nginx.md)
- Support for server-wide SSL certs have been dropped in favor of using the `certs` plugin
- `dokku certs:add myapp < certs.tar`
- `dokku certs:add node-js-app < certs.tar`
- All domains for an SSL-enabled app will be redirected to https by default
- This can be overridden with a custom template
- Replaced "magic" `NO_VHOST` variable with `domains:enable/disable`
@@ -22,4 +22,4 @@
- Dockerfiles with `EXPOSE` clauses will get [all **tcp** ports proxied by default](/docs/deployment/methods/dockerfiles.md#exposed-ports)
- Note that nginx will proxy the same port numbers to listen publicly
- UDP ports can be exposed by disabling the [nginx proxy](/docs/advanced-usage/proxy-management.md) with `dokku proxy:disable myapp`
- UDP ports can be exposed by disabling the [nginx proxy](/docs/advanced-usage/proxy-management.md) with `dokku proxy:disable node-js-app`

View File

@@ -0,0 +1,19 @@
# 0.8.0 Migration Guide
## Domain Management
You can now set global and app domains via `domains:set` and `domains:set-global`. See the [domains documentation](/docs/configuration/domains/) for more details.
## Plugin Uninstallation
A new `uninstall` plugin trigger was introduced. This functionality may be in use for newer plugins, so be aware that older Dokku versions may require manual cleanup.
See the [uninstall trigger documentation](/docs/development/plugin-triggers/#uninstall) for implementation instructions.
## Deployment Tasks
Should a pre or post deployment task fail, we now fail the entire deploy.
## Nginx HTTP2 Support
Due to bugs in Nginx, the minimum version for HTTP2 is now 1.11.5.

View File

@@ -0,0 +1,12 @@
# 0.9.0 Migration Guide
## Golang Migration
There is an ongoing migration to rewrite Dokku in Golang. The reasons are beyond the scope of this document, but this may impact any patches you have for Dokku. As of 0.9.0, only the `repo` plugin is in Golang.
The following shall remain true, regardless of the state of our rewrite:
- You will be able to write custom plugins in any language.
- You will be able to enable or disable core plugins.
- `plugn` will continue to be used for executing plugin triggers.
- We will provide bash wrappers that can be sourced to execute core functionality that is implemented in golang.

View File

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

View File

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

View File

@@ -1,5 +1,6 @@
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 62.5%;
font-weight: 400;
padding-bottom: 40px;
color: #5a5a5a;
@@ -19,7 +20,7 @@ h1 {
}
.header .heading {
color: #fff;
font-size: 23px;
font-size: 2.4em;
margin: 7px 0 0 0;
padding: 0 0 0 1em;
}
@@ -34,28 +35,37 @@ h1 {
background-size: contain;
background-repeat: no-repeat;
}
.header .nav-item a {
font-size: 1.6em;
}
.header .navbar-brand a {
background-image: url(https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/dokku.png);
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/dokku.png);
text-indent: 40px;
}
.blurb {
color: #424242;
background-color: #ededed;
background-image: url(https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/gplaypattern.png);
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/gplaypattern.png);
padding: 45px 0;
text-align: center;
}
.blurb h2 {
font-size: 3.5em;
}
.blurb p {
font-size: 17px;
font-size: 1.9em;
font-weight: 300;
margin: 18px 0;
text-align: center;
}
.blurb .btn-lg {
font-size: 2.2em;
}
.quickstart-code {
display: block;
line-height: 1.3em;
margin: 45px auto;
max-width: 750px;
max-width: 860px;
padding: 0;
}
.quickstart-code .title {
@@ -65,6 +75,7 @@ h1 {
box-shadow: 0 3px 0 rgba(0, 0, 0, 0.5);
color: #444;
display: block;
font-size: 1.6em;
font-weight: 400;
margin: 0 20px;
padding: 3px 0;
@@ -103,6 +114,7 @@ h1 {
border-top: 1px solid #bcbcbc;
box-shadow: 0 5px 30px rgba(0, 0, 0, 0.3);
display: none;
font-size: 1.4em;
font-family: Menlo, Consolas, "Courier New", Courier, "Liberation Mono", monospace;
margin: 0 20px;
padding: 20px;
@@ -136,9 +148,10 @@ h1 {
}
.alternate-instructions {
display: block;
font-size: 1.6em;
line-height: 1.3em;
margin: 45px auto;
max-width: 750px;
max-width: 860px;
padding: 0;
text-align: center;
}
@@ -164,12 +177,14 @@ h1 {
.featurette img {
width: 400px;
}
.slack-channel {
.slack-channel,
.sponsors {
background-color: #EEF1F7;
font-size: 16px;
font-size: 1.6em;
font-weight: 300;
margin-bottom: 2.5em;
padding: 2.5em 0;
padding-top: 2.5em;
padding-bottom: 2.5em;
text-align: center
}
.slack-channel .inline-container {
@@ -185,31 +200,38 @@ h1 {
.slack-button img {
height: 1em;
}
.team-members img {
-moz-box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
.sponsors {
background-color: #272822;
color: #FCFCFC;
}
.sponsors a {
color: #f0ad4e;
}
.sponsors .backer img,
.sponsors .sponsor img {
-webkit-border-radius: 3px;
-webkit-box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
border-radius: 3px;
border: 8px solid white;
box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
display: block;
height: 200px;
border: 8px solid gray;
margin: 20px auto 20px auto;
max-width: 192px;
}
.team-members .fund-link {
.sponsors .backer img {
-webkit-border-radius: 50%;
border-radius: 50%;
border: 0;
}
.sponsors img:hover {
-moz-box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
-webkit-box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
box-shadow: 0px 0px 32px 0px rgba(0,0,0,0.75);
}
.sponsors .fund-link {
display: block;
font-size: 80%;
font-size: .8em;
}
.team-member {
min-height: 320px;
}
.team-member-image img:last-child { display: none }
.team-member-image:hover img:first-child { display: none; }
.team-member-image:hover img:last-child { display: inline-block; }
.list-group-item {
border: none;
font-size: 14px;
font-size: 1.1em;
font-weight: normal;
padding: .2rem .5rem;
color: #157577;
@@ -230,7 +252,7 @@ a.list-group-item {
text-transform: uppercase;
}
.table-of-contents {
font-size: 0.8em;
font-size: 1.2em;
padding: 1em;
margin: 0 0 0.5em 0.5em;
}
@@ -245,6 +267,7 @@ a.list-group-item {
-webkit-font-smoothing: antialiased;
box-sizing: border-box;
color: rgb(71, 74, 84);
font-size: 1.6em;
font-weight: normal;
height: 20px;
line-height: 1.5;
@@ -253,26 +276,26 @@ a.list-group-item {
.markdown-body h1 {
border-bottom: 1px solid #dfdfdf;
color: #444;
font-size: 24px;
font-size: 1.6em;
padding-bottom: 1em;
margin-top: 0;
text-rendering: optimizelegibility;
}
.markdown-body h2 {
font-size: 17px;
font-size: 1.3em;
font-weight: 700;
color: #555;
margin-top: 2em;
text-transform: uppercase;
}
.markdown-body h3 {
font-size: 15px;
font-size: 1.2em;
font-weight: 700;
color: #555;
margin: 1em 0;
}
.markdown-body h4 {
font-size: 14px;
font-size: 1.1em;
font-weight: 700;
color: #555;
margin: 1em 0;
@@ -294,7 +317,7 @@ a.list-group-item {
right: 0;
width: auto;
height: auto;
font-size: 0.9em;
font-size: 1.2em;
border-radius: 0 0 0 5px;
padding: 0 0.5em;
text-shadow: none;
@@ -318,7 +341,6 @@ code {
padding-top: 0.2em;
padding-bottom: 0.2em;
margin: 0;
font-size: 85%;
background-color: #fff;
background-color: rgba(0, 0, 0, 0.06);
color: #333;
@@ -366,6 +388,11 @@ blockquote {
border-left: 4px solid #ef5b58;
background-color: #f9ad76;
}
.warning {
border-left: 4px solid #cd2512;
background-color: #d1675f;
color: white;
}
.fa:before {
-webkit-font-smoothing: antialiased
}
@@ -414,10 +441,9 @@ blockquote {
font-weight: 700;
text-transform: uppercase;
margin: 0;
font-size: 14px;
font-size: 1.3em;
}
.git-improve {
font-size: 20px;
vertical-align: -2px;
padding-left: 8px;
}
@@ -432,7 +458,6 @@ blockquote {
.icon-improve {
color: #bdbdb5;
padding: 2px 9px 0 10px;
font-size: 14px;
}
a .fa {
display: inline-block;
@@ -583,7 +608,7 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
background-image: -ms-linear-gradient(-45deg, rgba(0, 0, 0, 0.04) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, 0.04) 50%, rgba(0, 0, 0, 0.04) 75%, transparent 75%, transparent);
background-image: linear-gradient(135deg, rgba(0, 0, 0, 0.04) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, 0.04) 50%, rgba(0, 0, 0, 0.04) 75%, transparent 75%, transparent);
font-family: "Roboto", Corbel, Avenir, "Lucida Grande", "Lucida Sans", sans-serif;
font-size: 14px;
font-size: 1.6em;
text-align: center;
background-color: #ffe761;
}
@@ -609,14 +634,11 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
.col-md-offset-right-2 {
margin-right: 20.666667%;
}
.quickstart-code shell {
font-size: 14px;
}
.quickstart-code {
line-height: 22px;
}
.featurette-heading {
font-size: 50px;
font-size: 5em;
}
}
@media (min-width: 992px) {

View File

@@ -7,6 +7,10 @@
"0.7.2",
"0.8.2",
"0.9.4",
"0.10.2"
"0.10.5",
"0.11.6",
"0.12.13",
"0.13.4",
"0.14.3"
]
}

View File

@@ -44,7 +44,7 @@ The following plugins are available and provided by Dokku maintainers. Where not
## Community plugins
Note: The following plugins have been supplied by our community and may not have been tested by Dokku maintainers.
> Warning: The following plugins have been supplied by our community and may not have been tested by Dokku maintainers.
[256dpi]: https://github.com/256dpi
[abossard]: https://github.com/dudagroup
@@ -89,6 +89,7 @@ Note: The following plugins have been supplied by our community and may not have
[Kloadut]: https://github.com/Kloadut
[krisrang]: https://github.com/krisrang
[luxifer]: https://github.com/luxifer
[m0rth1um]: https://github.com/m0rth1um
[Maciej Łebkowski]: https://github.com/mlebkowski
[matto1990]: https://github.com/matto1990
[mbreit]: https://github.com/mbreit
@@ -96,9 +97,11 @@ Note: The following plugins have been supplied by our community and may not have
[michaelshobbs]: https://github.com/michaelshobbs
[mikecsh]: https://github.com/mikecsh
[mikexstudios]: https://github.com/mikexstudios
[mimischi]: https://github.com/mimischi
[mixxorz]: https://github.com/mixxorz
[mlebkowski]: https://github.com/mlebkowski
[motin]: https://github.com/motin
[mrname]: https://github.com/mrname
[musicglue]: https://github.com/musicglue
[neam]: https://github.com/neam
[nickcharlton]: https://github.com/nickcharlton
@@ -122,6 +125,7 @@ Note: The following plugins have been supplied by our community and may not have
[wmluke]: https://github.com/wmluke
[Zenedith]: https://github.com/Zenedith
[fteychene]: https://github.com/fteychene
[sarendsen]: https://github.com/sarendsen
### Datastores
@@ -151,6 +155,7 @@ Note: The following plugins have been supplied by our community and may not have
| [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 |
| [ElasticMQ (SQS compatible)](https://github.com/cu12/dokku-elasticmq) | [cu12][] | 0.5.0+ |
| [VerneMQ (MQTT Broker)](https://github.com/SpinifexGroup/dokku-vernemq) | [mrname][] | 0.4.0+ |
#### Other
@@ -173,9 +178,9 @@ Note: The following plugins have been supplied by our community and may not have
| [Docker Direct](https://github.com/josegonzalez/dokku-docker-direct) | [josegonzalez][] | 0.4.0+ |
| [Dokku Clone](https://github.com/crisward/dokku-clone) | [crisward][] | 0.4.0+ |
| [Dokku Copy App Config Files](https://github.com/josegonzalez/dokku-supply-config) | [josegonzalez][] | 0.4.0+ |
| [Dockerfile custom path](https://github.com/mimischi/dokku-dockerfile) | [mimischi][] | 0.8.0+ |
| [Dokku Registry](https://github.com/agco-adm/dokku-registry)<sup>1</sup> | [agco-adm][] | 0.4.0+ |
| [Dokku Require](https://github.com/crisward/dokku-require)<sup>2</sup> | [crisward][] | 0.4.0+ |
| [git rev-parse HEAD in env](https://github.com/dokku-community/dokku-git-rev) | [cjblomqvist][] | 0.4.0+ |
| [Global Certificates](https://github.com/josegonzalez/dokku-global-cert) | [josegonzalez][] | 0.5.0+ |
| [Graduate (Environment Management)](https://github.com/glassechidna/dokku-graduate) | [Benjamin-Dobell][] | 0.4.0+ |
| [Haproxy tcp load balancer](https://github.com/256dpi/dokku-haproxy) | [256dpi][] | 0.4.0+ |
@@ -214,7 +219,9 @@ Note: The following plugins have been supplied by our community and may not have
| [Chef cookbook](https://github.com/nickcharlton/dokku-cookbook) | [nickcharlton][] | |
| [Docker auto persist volumes](https://github.com/Flink/dokku-docker-auto-volumes) | [Flink][] | 0.4.0+ |
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
| [Limit (Resource management)](https://github.com/sarendsen/dokku-limit) | [sarendsen][] | 0.9.0+ |
| [Logspout](https://github.com/michaelshobbs/dokku-logspout) | [michaelshobbs][] | 0.4.0+ |
| [Syslog](https://github.com/michaelshobbs/dokku-syslog) | [michaelshobbs][] | 0.10.4+ |
| [Long Timeout](https://github.com/investtools/dokku-long-timeout-plugin) | [investtools][] | 0.4.0+ |
| [Monit](https://github.com/cjblomqvist/dokku-monit) | [cjblomqvist][] | 0.3.x |
| [Monorepo](https://github.com/iamale/dokku-monorepo) | [iamale][] | 0.4.0+ |
@@ -222,6 +229,7 @@ Note: The following plugins have been supplied by our community and may not have
| [Node](https://github.com/pnegahdar/dokku-node) | [pnegahdar][] | 0.3.x |
| [Rollbar](https://github.com/iloveitaly/dokku-rollbar) | [iloveitaly][] | 0.5.0+ |
| [Slack Notifications](https://github.com/ribot/dokku-slack) | [ribot][] | 0.4.0+ |
| [Telegram Notifications](https://github.com/m0rth1um/dokku-telegram) | [m0rth1um][] | 0.4.0+ |
| [Tor](https://github.com/michaelshobbs/dokku-tor) | [michaelshobbs][] | 0.4.0+ |
| [User ACL](https://github.com/dokku-community/dokku-acl) | [Maciej Łebkowski][] | 0.4.0+ |
| [Webhooks](https://github.com/nickstenning/dokku-webhooks) | [nickstenning][] | 0.3.x |
@@ -241,6 +249,7 @@ The following plugins have been removed as their functionality is now in Dokku C
| [Docker Options](https://github.com/dyson/dokku-docker-options) | [dyson][] | v0.3.17 (docker-options plugin) |
| [Dokku Name](https://github.com/alex-sherwin/dokku-name) | [alex-sherwin][] | v0.4.2 (named containers plugin) |
| [Events Logger](https://github.com/alessio/dokku-events) | [alessio][] | v0.3.21 (events plugin) |
| [git rev-parse HEAD in env](https://github.com/dokku-community/dokku-git-rev) | [cjblomqvist][] | v0.12.0 (enhanced core git plugin) |
| [Host Port binding](https://github.com/stuartpb/dokku-bind-port) | [stuartpb][] | v0.3.17 (docker-options plugin) |
| [Link Containers](https://github.com/rlaneve/dokku-link) | [rlaneve][] | v0.3.17 (docker-options plugin) |
| [List Containers](https://github.com/josegonzalez/dokku-list) | [josegonzalez][] | v0.3.14 (ps plugin) |

View File

@@ -0,0 +1,106 @@
# Deploying with Gitlab CI
Gitlab-CI can be used to automatically deploy a Dokku application using the [ilyasemenov/gitlab-ci-git-push image](https://github.com/IlyaSemenov/gitlab-ci-git-push) docker image.
## Prerequisites
Make sure you have a Gitlab account and a Dokku project hosted on Gitlab. This method works whether if you are using buildpacks or Dockerfile.
Make sure you have set up an app on the remote machine following [these instructions](http://dokku.viewdocs.io/dokku/deployment/application-deployment/) and can successfully deploy to it from the local machine.
## Deploy automatically to production
### Add a secret variable
Browse to the repository in question and visit the following path: `the Gitlab project > Settings > CI/CD.`
Click on `Secret variables > Expand` and fill in the blanks.
- Key: `SSH_PRIVATE_KEY`
- Value: paste in an SSH private key registered in Dokku:
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
- Environment scope: `production` (This make sure that `SSH_PRIVATE_KEY` is not available on merge requests or tests)
- Protected: Do not check this checkbox unless you know what you are doing
### Add CI script
Create a file named `.gitlab-ci.yml` at the root directory of the repository with the following contents:
```yaml
stages:
- deploy
variables:
APP_NAME: node-js-app
deploy:
image: ilyasemenov/gitlab-ci-git-push
stage: deploy
environment:
name: production
url: https://$APP_NAME.dokku.me/
only:
- master
script:
- git-push ssh://dokku@dokku.me:22/$APP_NAME
```
You will need to modify the `APP_NAME` variable to the correct value for your application name.
Running `git push origin master` will now trigger a gitlab-ci pipeline that will automatically deploy your application to your Dokku server. Go to your project on Gitlab and visit "Project > Pipelines" to see the deployment log.
## Review Applications
One useful feature of gitlab is to be able to create review applications for non-production branches. This allows teams to review changes _before_ they are pushed to production. First, recreate the `SSH_PRIVATE_KEY` secret - do not delete the existing secret - but scoped to the `review/*` environment. This will allow non-production gitlab environments access to the secret.
Next, we'll need to create the `review_app` gitlab job in our `.gitlab-ci.yaml`.
```yaml
review_app:
image: ilyasemenov/gitlab-ci-git-push
stage: deploy
environment:
name: review/$CI_ENVIRONMENT_SLUG
url: https://$CI_ENVIRONMENT_SLUG.dokku.me/
on_stop: stop_review_app
only:
- branches
except:
- master
script:
- mkdir -p ~/.ssh && echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
- ssh-keyscan -H 22 "dokku.me" >> ~/.ssh/known_hosts
- ssh -t dokku@dokku.me -- apps:clone --ignore-existing --skip-deploy "$APP_NAME" "$CI_ENVIRONMENT_SLUG"
- git-push ssh://dokku@dokku.me:22/$CI_ENVIRONMENT_SLUG
```
The first two lines ensure that Gitlab can talk to the Dokku server. Next, we take advantage of the `apps:clone` command, and clone the existing application and all of it's configuration to a new location. If the new application already exists, the third line of the `script` step will be ignored. We also ignore the first deploy script to speed up the cloning process. Finally, the fourth line of the `script` step will deploy the code as normal.
The above only runs for non-master branches, and will _also_ trigger an `on_stop` job called `stop_review_app`. When the branch is deleted or the code is merged, the `stop_review_app` job will be triggered.
```yaml
stop_review_app:
image: ilyasemenov/gitlab-ci-git-push
stage: deploy
environment:
name: review/$CI_ENVIRONMENT_SLUG
action: stop
when: manual
script:
- mkdir -p ~/.ssh && echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
- ssh-keyscan -H 22 "dokku.me" >> ~/.ssh/known_hosts
- ssh -t dokku@dokku.me -- --force apps:destroy "$CI_ENVIRONMENT_SLUG"
```
The `stop_review_app` step will delete the temporary application, cleaning up now unused server resources.
Going further, the following modifications can be done:
- Notify via chat whenever a review application is created/destroyed.
- Push to a separate, staging server as opposed to a production server.
- Clone a "staging" application so that review applications do not affect production datasets.

View File

@@ -0,0 +1,78 @@
# Run Dokku on External Volume
In order to leverage cloud-provider facilities like _attachable volumes_, (_a.k.a. block storage_)
the following is an easy tutorial to achieve Dokku runs on them.
> Warning: If the block storage is not available and attached on boot it is possible that containers will not correctly start. Please keep this in mind when considering moving Dokku and/or Docker to network attached storage.
## Tutorial
The following is intended to be executed on the dokku host machine as `root`.
Say, _for instance_, that our volume is mapped into the systems as `/dev/vdb1`.
Stop docker daemon
```shell
systemctl stop docker
```
Prepare the filesystem:
```shell
mkfs -t ext4 /dev/vdb1
mkdir /mnt/volume
mount /dev/vdb1 /mnt/volume
```
Move the old data directories:
```shell
mv /home/dokku /home/dokku.OLD
mv /var/lib/docker /var/lib/docker.OLD
mv /var/lib/dokku /var/lib/dokku.OLD
```
Move the data on the volume
```shell
mkdir /mnt/volume/home/
mkdir /mnt/volume/var/lib/
mv /home/dokku.OLD /mnt/volume/home/dokku
mv /var/lib/dokku.OLD /mnt/volume/var/lib/dokku
mv /var/lib/docker.OLD /mnt/volume/var/lib/docker
```
Prepare the mountpoints
```shell
mkdir /home/dokku
mkdir /var/lib/dokku
mkdir /var/lib/docker
chown dokku:dokku /home/dokku # respect the original ownership
chmod 711 /var/lib/docker # respect the original permissions
```
Mount bind
```shell
mount -o bind /mnt/volume/home/dokku /home/dokku
mount -o bind /mnt/volume/var/lib/dokku /var/lib/dokku
mount -o bind /mnt/volume/var/lib/docker /var/lib/docker
```
Start docker daemon
```shell
systemctl start docker
```
At this point all should be working fine, please check it out.
Then, let the changes be reboot-persistent
```shell
echo '/dev/vdb1 /mnt/volume ext4 defaults 0 2' | sudo tee -a /etc/fstab
echo '/mnt/volume/home/dokku /home/dokku none defaults,bind 0 0' | sudo tee -a /etc/fstab
echo '/mnt/volume/var/lib/dokku /var/lib/dokku none defaults,bind 0 0' | sudo tee -a /etc/fstab
echo '/mnt/volume/var/lib/docker /var/lib/docker none defaults,bind 0 0' | sudo tee -a /etc/fstab
```

View File

@@ -15,7 +15,7 @@ domains:set <app> <domain> [<domain> ...] # Set domains for app
domains:set-global <domain> [<domain> ...] # Set global domain names
```
> Adding a domain before deploying an application will result in port mappings being set. This may cause issues for applications that use non-standard ports, as those will not be automatically detected. Please refer to the [proxy documentation](/docs/advanced-usage/proxy-management.md) for information as to how to reconfigure the mappings.
> Adding a domain before deploying an application will result in port mappings being set. This may cause issues for applications that use non-standard ports, as those will not be automatically detected. Please refer to the [proxy documentation](/docs/networking/proxy-management.md) for information as to how to reconfigure the mappings.
## Customizing hostnames
@@ -25,9 +25,9 @@ Applications typically have the following structure for their hostname:
scheme://subdomain.domain.tld
```
The `subdomain` is inferred from the pushed application name, while the `domain.tld` is set during initial configuration and stored in the `$DOKKU_ROOT/VHOST` file. It can then be modified with `dokku domains:add-global` and `dokku domains:remove-global`. This value is used as a default TLD for all applications on a host.
The `subdomain` is inferred from the pushed application name, while the `domain.tld` is set during initial dokku configuration. It can then be modified with `dokku domains:add-global` and `dokku domains:remove-global`. This value is used as a default TLD for all applications on a host.
If a FQDN such as `other.tld` is used as the application name, the default `$DOKKU_ROOT/VHOST` will be ignored and the resulting vhost URL for that application will be `other.tld`. The exception to this rule being that if the FQDN has the same ending as the default vhost (such as `subdomain.domain.tld`), then the entire FQDN will be treated as a subdomain. The application will therefore be deployed at `subdomain.domain.tld.domain.tld`.
If a FQDN such as `other.tld` is used as the application name, the global virtualhost will be ignored and the resulting vhost URL for that application will be `other.tld`. The exception to this rule being that if the FQDN has the same ending as the default vhost (such as `subdomain.domain.tld`), then the entire FQDN will be treated as a subdomain. The application will therefore be deployed at `subdomain.domain.tld.domain.tld`.
You can optionally override this in a plugin by implementing the `nginx-hostname` plugin trigger. For example, you can reverse the subdomain with the following sample `nginx-hostname` plugin trigger:
@@ -48,31 +48,31 @@ If the `nginx-hostname` plugin has no output, the normal hostname algorithm will
If desired, it is possible to disable vhosts with the domains plugin.
```shell
dokku domains:disable myapp
dokku domains:disable node-js-app
```
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. You may change this port by setting `DOKKU_NGINX_PORT` and/or `DOKKU_NGINX_SSL_PORT` (for services configured to use SSL.)
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. You may change this port by setting `DOKKU_PROXY_PORT` and/or `DOKKU_PROXY_SSL_PORT` (for services configured to use SSL.)
The domains plugin allows you to specify custom domains for applications. This plugin is aware of any ssl certificates that are imported via `certs:add`. Be aware that disabling domains (with `domains:disable`) will override any custom domains.
```shell
# where `myapp` is the name of your app
# where `node-js-app` is the name of your app
# add a domain to an app
dokku domains:add myapp example.com
dokku domains:add node-js-app dokku.me
# list custom domains for app
dokku domains myapp
dokku domains node-js-app
# clear all custom domains for app
dokku domains:clear myapp
dokku domains:clear node-js-app
# remove a custom domain from app
dokku domains:remove myapp example.com
dokku domains:remove node-js-app dokku.me
# set all custom domains for app
dokku domains:set myapp example.com example.org
dokku domains:set node-js-app dokku.me dokku.org
```
## Displaying domains reports about an app
@@ -88,19 +88,19 @@ dokku domains:report
```
=====> node-js-app domains information
Domains app enabled: true
Domains app vhosts: ruby-sample.example.org
Domains app vhosts: node-js-sample.dokku.org
Domains global enabled: true
Domains global vhosts: example.org
Domains global vhosts: dokku.org
=====> python-sample domains information
Domains app enabled: true
Domains app vhosts: ruby-sample.example.org
Domains app vhosts: python-sample.dokku.org
Domains global enabled: true
Domains global vhosts: example.org
Domains global vhosts: dokku.org
=====> ruby-sample domains information
Domains app enabled: true
Domains app vhosts: ruby-sample.example.org
Domains app vhosts: ruby-sample.dokku.org
Domains global enabled: true
Domains global vhosts: example.org
Domains global vhosts: dokku.org
```
You can run the command for a specific app also.
@@ -112,9 +112,9 @@ dokku domains:report node-js-app
```
=====> node-js-app domains information
Domains app enabled: true
Domains app vhosts: node-js-app.example.org
Domains app vhosts: node-js-app.dokku.org
Domains global enabled: true
Domains global vhosts: example.org
Domains global vhosts: dokku.org
```
You can pass flags which will output only the value of the specific information you want. For example:
@@ -131,13 +131,29 @@ Create the file at `/etc/nginx/conf.d/00-default-vhost.conf`:
```nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 410;
log_not_found off;
listen 80 default_server;
server_name _;
access_log off;
return 410;
}
# To handle HTTPS requests, you can uncomment the following section.
#
# Please note that in order to let this work as expected, you need a valid
# SSL certificate for any domains being served. Browsers will show SSL
# errors in all other cases.
#
# Note that the key and certificate files in the below example need to
# be copied into /etc/nginx/ssl/ folder.
#
# server {
# listen 443 ssl;
# server_name _;
# ssl_certificate /etc/nginx/ssl/cert.crt;
# ssl_certificate_key /etc/nginx/ssl/cert.key;
# access_log off;
# return 410;
# }
```
Make sure to reload nginx after creating this file by running `service nginx reload`.

View File

@@ -5,13 +5,17 @@ Typically an application will require some configuration to run properly. Dokku
The `config` plugin provides the following commands to manage your variables:
```
config (<app>|--global) Display all global or app-specific config vars
config:get (<app>|--global) KEY Display a global or app-specific config value
config:set (<app>|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars
config:unset (<app>|--global) KEY1 [KEY2 ...] Unset one or more config vars
config (<app>|--global) Pretty-print an app or global environment
config:get (<app>|--global) KEY Display a global or app-specific config value
config:set [--encoded] [--no-restart] (<app>|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars
config:unset [--no-restart] (<app>|--global) KEY1 [KEY2 ...] Unset one or more config vars
config:export (<app>|--global) [--envfile] Export a global or app environment
config:keys (<app>|--global) [--merged] Show keys set in environment
config:bundle (<app>|--global) [--merged] Bundle environment into tarfile
```
> For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available *only* during runtime, as noted in [this issue](https://github.com/dokku/dokku/issues/1860).
The variables are available both at run time and during the application build/compilation step for buildpack-based deploys. For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available *only* during runtime, as noted in [this issue](https://github.com/dokku/dokku/issues/1860).
Environment variables are available both at run time and during the application build/compilation step for buildpack-based deploys.
For buildpack deploys, Dokku will create a `/app/.env` file that can be used for legacy buildpacks. Note that this is *not* updated when `config:set` or `config:unset` is called, and is only written during a `deploy` or `ps:rebuild`. Developers are encouraged to instead read from the application environment directly, as the proper values will be available then.
@@ -23,10 +27,15 @@ You can set multiple environment variables at once:
dokku config:set node-js-app ENV=prod COMPILE_ASSETS=1
```
When setting variables with whitespaces, you need to escape them:
> Note: Whitespace and special characters get tricky. If you are using dokku locally you don't need to do any special escaping. If you are using dokku over ssh you will need to backslash-escape spaces:
```shell
dokku config:set node-js-app KEY="VAL\ WITH\ SPACES"
```
Dokku can also read base64 encoded values. That's the easiest way to set a value with newlines or spaces. To set a value with newlines you need to base64 encode it first and pass the `--encoded` flag:
```shell
dokku config:set node-js-app KEY=\"VAL\ WITH\ SPACES\"
dokku config:set --encoded node-js-app KEY="$(base64 ~/.ssh/id_rsa)"
```
When setting or unsetting environment variables, you may wish to avoid an application restart. This is useful when developing plugins or when setting multiple environment variables in a scripted manner. To do so, use the `--no-restart` flag:
@@ -35,23 +44,24 @@ When setting or unsetting environment variables, you may wish to avoid an applic
dokku config:set --no-restart node-js-app ENV=prod
```
If you wish to have the variables output in an `eval`-compatible form, you can use the `--export` flag:
If you wish to have the variables output in an `eval`-compatible form, you can use the `config:export` command
```shell
dokku config node-js-app --export
dokku config:export node-js-app
# outputs variables in the form:
#
# export ENV='prod'
# export COMPILE_ASSETS='1'
# source in all the node-js-app app environment variables
eval $(dokku config node-js-app --export)
eval $(dokku config:export node-js-app)
```
You can also output the variables in a single-line for usage in command-line utilities with the `--shell` flag:
You can control the format of the exported variables with the `--format` flag.
`--format=shell` will output the variables in a single-line for usage in command-line utilities:
```shell
dokku config node-js-app --shell
dokku config:export --format shell node-js-app
# outputs variables in the form:
#
@@ -85,6 +95,7 @@ The following list config variables have special meaning and can be set in a var
| `DOKKU_TRACE` | none | `dokku trace on` <br /> `dokku trace false` <br /> `--trace` flag | Turn on very verbose debugging. |
| `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | |
| `DOKKU_APP_RESTORE` | `1` | `dokku config:set` <br /> `dokku ps:stop` | |
| `DOKKU_APP_SHELL` | `/bin/bash` | `dokku config:set` | Allows users to change the default shell used by Dokku for `dokku enter` and execution of deployment tasks. |
| `DOKKU_APP_TYPE` | `herokuish` | Auto-detected by using buildpacks or dockerfile | |
| `DOKKU_CHECKS_DISABLED` | none | `dokku checks:disable` | |
| `DOKKU_CHECKS_ENABLED` | none | `dokku checks:enable` | |
@@ -93,19 +104,22 @@ The following list config variables have special meaning and can be set in a var
| `DOKKU_CHECKS_TIMEOUT` | `30` | `dokku config:set` | Wait this many seconds for each response before marking it as a failure.
| `DOKKU_CHECKS_ATTEMPTS` | `5` | `dokku config:set` | Number of retries for to run for a specific check before marking it as a failure
| `DOKKU_DEFAULT_CHECKS_WAIT` | `10` | `dokku config:set` | If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running. |
| `DOKKU_DEPLOY_BRANCH` | `master` | `dokku config:set` | Branch to deploy by default. |
| `DOKKU_DISABLE_PROXY` | none | `dokku proxy:disable` <br /> `dokku proxy:enable` | Disables the proxy in front of your application, resulting in publicly routing the docker container. |
| `DOKKU_DISABLE_ANSI_PREFIX_REMOVAL` | none | `dokku config:set` <br /> `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Disables removal of the ANSI prefix during deploys. Can be used in cases where the client deployer does not understand ansi escape codes. |
| `DOKKU_DISABLE_APP_AUTOCREATION` | none | `dokku config:set` | Disables automatic creation of a non-existent app on deploy. |
| `DOKKU_DOCKER_STOP_TIMEOUT` | `10` | `dokku config:set` | Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands _also_ respect this value. If not specified, the docker defaults for the [docker stop command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.|
| `DOKKU_DOCKERFILE_CMD` | dockerfile cmd | `dokku config:set` | |
| `DOKKU_DOCKERFILE_CACHE_BUILD` | none | `dokku config:set` | |
| `DOKKU_DOCKERFILE_ENTRYPOINT` | dockerfile entrypoint | `dokku config:set` | |
| `DOKKU_DOCKERFILE_PORTS` | dockerfile ports | `dokku config:set` | |
| `DOKKU_DOCKERFILE_START_CMD` | none | `dokku config:set` | |
| `DOKKU_NGINX_PORT` | automatically assigned | `dokku config:set` | |
| `DOKKU_NGINX_SSL_PORT` | automatically assigned | `dokku config:set` | |
| `DOKKU_PROXY_PORT` | automatically assigned | `dokku config:set` | |
| `DOKKU_PROXY_SSL_PORT` | automatically assigned | `dokku config:set` | |
| `DOKKU_PROXY_PORT_MAP` | automatically assigned | `dokku proxy:ports-add` <br /> `dokku proxy:ports-remove`, `dokku proxy:ports-clear` | |
| `DOKKU_SKIP_ALL_CHECKS` | none | `dokku config:set` | |
| `DOKKU_SKIP_CLEANUP` | | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | When a deploy is triggered, if this is set to a non-empty value, then old docker containers and images will not be removed. |
| `DOKKU_SKIP_DEFAULT_CHECKS` | | `dokku config:set` | |
| `DOKKU_SKIP_DEPLOY` | | `dokku config:set` | |
| `DOKKU_SYSTEM_GROUP` | `dokku` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | System group to chown files as. |
| `DOKKU_SYSTEM_USER` | `dokku` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | System user to chown files as. |
| `DOKKU_WAIT_TO_RETIRE` | `60` | `dokku config:set` | After a successful deploy, the grace period given to old containers before they are stopped/terminated. This is useful for ensuring completion of long-running http connections. |

View File

@@ -6,6 +6,67 @@ Dokku uses nginx as its server for routing requests to specific applications. By
nginx:access-logs <app> [-t] # Show the nginx access logs for an application (-t follows)
nginx:build-config <app> # (Re)builds nginx config for given app
nginx:error-logs <app> [-t] # Show the nginx error logs for an application (-t follows)
nginx:validate [<app>] [--clean] # Validates and optionally cleans up invalid nginx configurations
```
## Checking access logs
You may check nginx access logs via the `nginx:access-logs` command. This assumes that app access logs are being stored in `/var/log/nginx/$APP-access.log`, as is the default in the generated `nginx.conf`.
```shell
dokku nginx:access-logs node-js-app
```
You may also follow the logs by specifying the `-t` flag.
```shell
dokku nginx:access-logs node-js-app -t
```
## Checking error logs
You may check nginx error logs via the `nginx:access-logs` command. This assumes that app error logs are being stored in `/var/log/nginx/$APP-error.log`, as is the default in the generated `nginx.conf`.
```shell
dokku nginx:error-logs node-js-app
```
You may also follow the logs by specifying the `-t` flag.
```shell
dokku nginx:error-logs node-js-app -t
```
## Regenerating nginx config
In certain cases, your app nginx configs may drift from the correct config for your app. You may regenerate the config at any point via the `nginx:build-config` command. This may fail if there are no current web listeners for your app.
```shell
dokku nginx:build-config node-js-app
```
## Validating nginx configs
It may be desired to validate an nginx config outside of the deployment process. To do so, run the `nginx:validate` command. With no arguments, this will validate all app nginx configs, one at a time. A minimal wrapper nginx config is generated for each app's nginx config, upon which `nginx -t` will be run.
```shell
dokku nginx:validate
```
As app nginx configs are actually executed within a shared context, it is possible for an individual config to be invalid when being validated standalone but _also_ be valid within the global server context. As such, the exit code for the `nginx:validate` command is the exit code of `nginx -t` against the server's real nginx config.
The `nginx:validate` command also takes an optional `--clean` flag. If specified, invalid nginx configs will be removed.
> Warning: Invalid app nginx config's will be removed _even if_ the config is valid in the global server context.
```shell
dokku nginx:validate --clean
```
The `--clean` flag may also be specified for a given app:
```shell
dokku nginx:validate node-js-app --clean
```
## Customizing the nginx configuration
@@ -30,8 +91,8 @@ Dokku uses a templating library by the name of [sigil](https://github.com/glider
{{ .APP_SSL_PATH }} Path to SSL certificate and key
{{ .DOKKU_ROOT }} Global Dokku root directory (ex: app dir would be `{{ .DOKKU_ROOT }}/{{ .APP }}`)
{{ .DOKKU_APP_LISTENERS }} List of IP:PORT pairs of app containers
{{ .NGINX_PORT }} Non-SSL nginx listener port (same as `DOKKU_NGINX_PORT` config var)
{{ .NGINX_SSL_PORT }} SSL nginx listener port (same as `DOKKU_NGINX_SSL_PORT` config var)
{{ .PROXY_PORT }} Non-SSL nginx listener port (same as `DOKKU_PROXY_PORT` config var)
{{ .PROXY_SSL_PORT }} SSL nginx listener port (same as `DOKKU_PROXY_SSL_PORT` config var)
{{ .NOSSL_SERVER_NAME }} List of non-SSL VHOSTS
{{ .PROXY_PORT_MAP }} List of port mappings (same as `DOKKU_PROXY_PORT_MAP` config var)
{{ .PROXY_UPSTREAM_PORTS }} List of configured upstream ports (derived from `DOKKU_PROXY_PORT_MAP` config var)
@@ -42,165 +103,48 @@ Dokku uses a templating library by the name of [sigil](https://github.com/glider
> Note: Application config variables are available for use in custom templates. To do so, use the form of `{{ var "FOO" }}` to access a variable named `FOO`.
### Example Custom Template
Use case: add an `X-Served-By` header to requests
```go
server {
listen [::]:{{ .NGINX_PORT }};
listen {{ .NGINX_PORT }};
server_name {{ .NOSSL_SERVER_NAME }};
access_log /var/log/nginx/{{ .APP }}-access.log;
error_log /var/log/nginx/{{ .APP }}-error.log;
# set a custom header for requests
add_header X-Served-By www-ec2-01;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
gzip_vary on;
gzip_comp_level 6;
location / {
proxy_pass http://{{ .APP }};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Request-Start $msec;
}
include {{ .DOKKU_ROOT }}/{{ .APP }}/nginx.conf.d/*.conf;
}
upstream {{ .APP }} {
{{ range .DOKKU_APP_LISTENERS | split " " }}
server {{ . }};
{{ end }}
}
```
### Example HTTP to HTTPS Custom Template
Use case: a simple dockerfile app that includes `EXPOSE 80`
```go
server {
listen [::]:80;
listen 80;
server_name {{ .NOSSL_SERVER_NAME }};
access_log /var/log/nginx/{{ .APP }}-access.log;
error_log /var/log/nginx/{{ .APP }}-error.log;
return 301 https://$host:443$request_uri;
}
server {
listen [::]:443 ssl spdy;
listen 443 ssl spdy;
{{ if .NOSSL_SERVER_NAME }}server_name {{ .NOSSL_SERVER_NAME }}; {{ end }}
{{ if .SSL_SERVER_NAME }}server_name {{ .SSL_SERVER_NAME }}; {{ end }}
access_log /var/log/nginx/{{ .APP }}-access.log;
error_log /var/log/nginx/{{ .APP }}-error.log;
ssl_certificate {{ .APP_SSL_PATH }}/server.crt;
ssl_certificate_key {{ .APP_SSL_PATH }}/server.key;
keepalive_timeout 70;
add_header Alternate-Protocol 443:npn-spdy/2;
location / {
proxy_pass http://{{ .APP }};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Request-Start $msec;
}
include {{ .DOKKU_ROOT }}/{{ .APP }}/nginx.conf.d/*.conf;
}
upstream {{ .APP }} {
{{ range .DOKKU_APP_LISTENERS | split " " }}
server {{ . }};
{{ end }}
}
```
### Example using new proxy port mapping
```go
{{ range $port_map := .PROXY_PORT_MAP | split " " }}
{{ $port_map_list := $port_map | split ":" }}
{{ $scheme := index $port_map_list 0 }}
{{ $listen_port := index $port_map_list 1 }}
{{ $upstream_port := index $port_map_list 2 }}
server {
listen [::]:{{ $listen_port }};
listen {{ $listen_port }};
server_name {{ $.NOSSL_SERVER_NAME }};
access_log /var/log/nginx/{{ $.APP }}-access.log;
error_log /var/log/nginx/{{ $.APP }}-error.log;
location / {
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
gzip_vary on;
gzip_comp_level 6;
proxy_pass http://{{ $.APP }}-{{ $upstream_port }};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Request-Start $msec;
}
include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf;
}
{{ range $upstream_port := $.PROXY_UPSTREAM_PORTS | split " " }}
upstream {{ $.APP }}-{{ $upstream_port }} {
{{ range $listeners := $.DOKKU_APP_LISTENERS | split " " }}
{{ $listener_list := $listeners | split ":" }}
{{ $listener_ip := index $listener_list 0 }}
{{ $listener_port := index $listener_list 1 }}
server {{ $listener_ip }}:{{ $listener_port }};{{ end }}
}
{{ end }}
```
### Customizing via configuration files included by the default templates
The default nginx.conf template will include everything from your apps `nginx.conf.d/` subdirectory in the main `server {}` block (see above):
```go
```
include {{ .DOKKU_ROOT }}/{{ .APP }}/nginx.conf.d/*.conf;
```
That means you can put additional configuration in separate files, for example to limit the uploaded body size to 50 megabytes, do
```shell
mkdir /home/dokku/myapp/nginx.conf.d/
echo 'client_max_body_size 50M;' > /home/dokku/myapp/nginx.conf.d/upload.conf
chown dokku:dokku /home/dokku/myapp/nginx.conf.d/upload.conf
mkdir /home/dokku/node-js-app/nginx.conf.d/
echo 'client_max_body_size 50m;' > /home/dokku/node-js-app/nginx.conf.d/upload.conf
chown dokku:dokku /home/dokku/node-js-app/nginx.conf.d/upload.conf
service nginx reload
```
The example above uses additional configuration files directly on the Dokku host. Unlike the `nginx.conf.sigil` file, these additional files will not be copied over from your application repo, and thus need to be placed in the `/home/dokku/myapp/nginx.conf.d/` directory manually.
The example above uses additional configuration files directly on the Dokku host. Unlike the `nginx.conf.sigil` file, these additional files will not be copied over from your application repo, and thus need to be placed in the `/home/dokku/node-js-app/nginx.conf.d/` directory manually.
For PHP Buildpack users, you will also need to provide a `Procfile` and an accompanying `nginx.conf` file to customize the nginx config *within* the container. The following are example contents for your `Procfile`
web: vendor/bin/heroku-php-nginx -C nginx.conf -i php.ini php/
Your `nginx.conf` file - not to be confused with Dokku's `nginx.conf.sigil` - would also need to be configured as shown in this example:
client_max_body_size 50m;
location / {
index index.php;
try_files $uri $uri/ /index.php$is_args$args;
}
Please adjust the `Procfile` and `nginx.conf` file as appropriate.
## Custom Error Pages
By default, Dokku provides custom error pages for the following three categories of errors:
- 4xx: For all non-404 errors with a 4xx response code.
- 404: For "404 Not Found" errors.
- 5xx: For all 5xx error responses
These are provided as an alternative to the generic Nginx error page, are shared for _all_ applications, and their contents are located on disk at `/var/lib/dokku/data/nginx-vhosts/dokku-errors`. To customize them for a specific app, create a custom `nginx.conf.sigil` as described above and change the paths to point elsewhere.
## Domains plugin

View File

@@ -97,11 +97,11 @@ dokku certs:report node-js-sample
=====> node-js-sample ssl information
Ssl dir: /home/dokku/node-js-sample/tls
Ssl enabled: true
Ssl hostnames: *.example.org example.org
Ssl hostnames: *.dokku.org dokku.org
Ssl expires at: Oct 5 23:59:59 2019 GMT
Ssl issuer: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO RSA Domain Validation Secure Server CA
Ssl starts at: Oct 5 00:00:00 2016 GMT
Ssl subject: OU=Domain Control Validated; OU=PositiveSSL Wildcard; CN=*.example.org
Ssl subject: OU=Domain Control Validated; OU=PositiveSSL Wildcard; CN=*.dokku.org
Ssl verified: self signed.
```
@@ -117,6 +117,10 @@ The [HSTS header](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security)
Beware that if you enable the header and a subsequent deploy of your application results in an HTTP deploy (for whatever reason), the way the header works means that a browser will not attempt to request the HTTP version of your site if the HTTPS version fails.
## HTTP/2 support
Certain versions of nginx have bugs that prevent [HTTP/2](https://nginx.org/en/docs/http/ngx_http_v2_module.html) from properly responding to all clients, thus causing applications to be unavailable. For HTTP/2 to be enabled in your applications' nginx configs, you need to have installed nginx 1.11.5 or higher. See [issue 2435](https://github.com/dokku/dokku/issues/2435) for more details.
## Running behind a load balancer
Your application has access to the HTTP headers `X-Forwarded-Proto`, `X-Forwarded-Port` and `X-Forwarded-For`. These headers indicate the protocol of the original request (HTTP or HTTPS), the port number, and the IP address of the client making the request, respectively. The default configuration is for Nginx to set these headers.
@@ -125,8 +129,8 @@ If your server runs behind an HTTP/S load balancer, then Nginx will see all requ
```go
server {
listen [::]:{{ .NGINX_PORT }};
listen {{ .NGINX_PORT }};
listen [::]:{{ .PROXY_PORT }};
listen {{ .PROXY_PORT }};
server_name {{ .NOSSL_SERVER_NAME }};
access_log /var/log/nginx/{{ .APP }}-access.log;
error_log /var/log/nginx/{{ .APP }}-error.log;
@@ -162,4 +166,4 @@ This could result in security issue, for example, if your application looks at t
### SSL Port Exposure
When your app is served from port `80` then the `/home/dokku/APP/nginx.conf` file will automatically be updated to instruct nginx to respond to ssl on port 443 as a new cert is added. If your app uses a non-standard port (perhaps you have a dockerfile deploy exposing port `99999`) you may need to manually expose an ssl port via `dokku proxy:ports-add <APP> https:443:99999`.
When your app is served from port `80` then the `/home/dokku/APP/nginx.conf` file will automatically be updated to instruct nginx to respond to ssl on port 443 as a new cert is added. If your app uses a non-standard port (perhaps you have a dockerfile deploy exposing port `99999`) you may need to manually expose an ssl port via `dokku proxy:ports-add <APP> https:443:99999`.

View File

@@ -1,5 +1,8 @@
# Deploying to Dokku
> Note: This document uses the hostname `dokku.me` in commands. For your server please
> substitute your server's hostname instead.
## Deploy tutorial
Once Dokku has been configured with at least one user, applications can be deployed via a `git push` command. To quickly see Dokku deployment in action, you can use the Heroku Ruby on Rails example app.
@@ -15,7 +18,7 @@ git clone git@github.com:heroku/ruby-rails-sample.git
Create the application on the Dokku host. You will need to ssh onto the host to run this command.
```shell
# on your Dokku host
# on the Dokku host
dokku apps:create ruby-rails-sample
```
@@ -24,7 +27,7 @@ dokku apps:create ruby-rails-sample
When you create a new app, Dokku by default *does not* provide any datastores such as MySQL or PostgreSQL. You will need to install plugins to handle that, but fortunately [Dokku has official plugins](/docs/community/plugins.md#official-plugins-beta) for common datastores. Our sample app requires a PostgreSQL service:
```shell
# on your Dokku host
# on the Dokku host
# install the postgres plugin
# plugin installation requires root, hence the user change
sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
@@ -37,10 +40,10 @@ dokku postgres:create rails-database
### Linking backing services to applications
Once the service creation is complete, set the `POSTGRES_URL` environment variable by linking the service.
Once the service creation is complete, set the `DATABASE_URL` environment variable by linking the service.
```shell
# on your Dokku host
# on the Dokku host
# each official datastore offers a `link` method to link a service to any application
dokku postgres:link rails-database ruby-rails-sample
```
@@ -59,6 +62,14 @@ git remote add dokku dokku@dokku.me:ruby-rails-sample
git push dokku master
```
> Note: Some tools may not support the short-upstream syntax referenced above, and you may need to prefix
> the upstream with the scheme `ssh://` like so: `ssh://dokku@dokku.me:ruby-rails-sample`
> Please see the [Git](https://git-scm.com/docs/git-clone#_git_urls_a_id_urls_a) documentation for more details.
> Note: Your private key should be registered with ssh-agent in local development. If you get a
> permission denied error when pushing you can register your private key by running
> `ssh-add -k ~/<your private key>`.
```
Counting objects: 231, done.
Delta compression using up to 8 threads.
@@ -89,30 +100,12 @@ When the deploy finishes, the application's URL will be shown as seen above.
Dokku supports deploying applications via [Heroku buildpacks](https://devcenter.heroku.com/articles/buildpacks) with [Herokuish](https://github.com/gliderlabs/herokuish#buildpacks) or using a project's [dockerfile](https://docs.docker.com/reference/builder/).
### Deploying non-master branch
Dokku only supports deploying from its master branch, so if you'd like to deploy a different local branch use: ```git push dokku <local branch>:master```
An alternative is to use the `DOKKU_DEPLOY_BRANCH` application config value to specify a branch that should be deployed. The implicit default is master, and this can be modified both at the app and global level:
```shell
# on your Dokku host
# set it globally
dokku config:set --global DOKKU_DEPLOY_BRANCH=some-branch
# override for a specific app
dokku config:set ruby-rails-sample DOKKU_DEPLOY_BRANCH=some-branch
```
You can also support pushing multiple branches using the [receive-branch](/docs/development/plugin-triggers.md#receive-branch) plugin trigger in a custom plugin.
### Skipping deployment
If you only want to rebuild and tag a container, you can skip the deployment phase by setting `$DOKKU_SKIP_DEPLOY` to `true` by running:
``` shell
# on your Dokku host
# on the Dokku host
dokku config:set ruby-rails-sample DOKKU_SKIP_DEPLOY=true
```
@@ -121,7 +114,7 @@ dokku config:set ruby-rails-sample DOKKU_SKIP_DEPLOY=true
If you need to re-deploy (or restart) your app:
```shell
# on your Dokku host
# on the Dokku host
dokku ps:rebuild ruby-rails-sample
```
@@ -132,7 +125,7 @@ See the [process scaling documentation](/docs/deployment/process-management.md)
Dokku uses git locally (i.e. not a docker image) to build its own copy of your app repo, including submodules. This is done as the `dokku` user. Therefore, in order to deploy private git submodules, you'll need to drop your deploy key in `/home/dokku/.ssh/` and potentially add github.com (or your VCS host key) into `/home/dokku/.ssh/known_hosts`. The following test should help confirm you've done it correctly.
```shell
# on your Dokku host
# on the Dokku host
su - dokku
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
ssh -T git@github.com
@@ -198,23 +191,27 @@ See the [user management documentation](/docs/deployment/user-management.md).
See the [nginx documentation](/docs/configuration/nginx.md#default-site).
## Deploying non-master branch
See the [git documentation](/docs/deployment/methods/git.md#changing-the-deploy-branch).
## Dockerfile deployment
See the [dockerfile documentation](/docs/deployment/methods/dockerfiles.md).
## Specifying a custom buildpack
See the [buildpack documentation](/docs/deployment/methods/buildpacks.md).
## Image tagging
See the [image tagging documentation](/docs/deployment/methods/images.md).
## Specifying a custom buildpack
See the [buildpack documentation](/docs/deployment/methods/buildpacks.md).
## Removing a deployed app
See the [application management documentation](/docs/deployment/application-management.md#removing-a-deployed-app).
### Renaming a deployed app
## Renaming a deployed app
See the [application management documentation](/docs/deployment/application-management.md#renaming-a-deployed-app).

View File

@@ -6,9 +6,13 @@
apps:clone <old-app> <new-app> # Clones an app
apps:create <app> # Create a new app
apps:destroy <app> # Permanently destroy an app
apps:exists <app> # Checks if an app exists
apps:list # List your apps
apps:lock <app> # Locks an app for deployment
apps:locked <app> # Checks if an app is locked for deployment
apps:rename <old-app> <new-app> # Rename an app
apps:report [<app>] [<flag>] # Display report about an app
apps:unlock <app> # Unlocks an app for deployment
```
## Usage
@@ -40,6 +44,20 @@ node-js-app
python-app
```
### Checking if an application exists
For CI/CD pipelines, it may be useful to see if an application exists before creating a "review" application for a specific branch. You can do so via the `apps:exists` command:
```shell
dokku apps:exists node-js-app
```
```
App does not exist
```
The `apps:exists` command will return non-zero if the application does not exist, and zero if it does.
### Manually creating an application
A common pattern for deploying applications to Dokku is to configure an application before deploying it. You can do so via the `apps:create` command:
@@ -119,7 +137,7 @@ This will copy all of your app's contents into a new app directory with the name
### Cloning an existing app
> New as of 0.8.1
> New as of 0.11.5
You can clone an existing app using the `apps:clone` command. Note that the application *must* have been deployed at least once, or cloning will not complete successfully:
@@ -131,9 +149,9 @@ dokku apps:clone node-js-app io-js-app
Cloning node-js-app to io-js-app... done
```
This will copy all of your app's contents into a new app directory with the name of your choice and then rebuild the new version of the app and deploy it. All of your config variables, including database urls, will be preserved.
This will copy all of your app's contents into a new app directory with the name of your choice and then rebuild the new version of the app and deploy it. All of your config variables, including database urls, will be preserved. Custom domains and SSL certificates will not be copied to the new app.
> Warning: If you have exposed specific ports via docker-options, added generic domains, or performed anything that cannot be done against multiple applications, `apps:clone` may result in errors.
> Warning: If you have exposed specific ports via docker-options, or performed anything that cannot be done against multiple applications, `apps:clone` may result in errors.
By default, Dokku will deploy this new application, though you can skip the deploy by using the `--skip-deploy` flag:
@@ -141,6 +159,60 @@ By default, Dokku will deploy this new application, though you can skip the depl
dokku apps:clone --skip-deploy node-js-app io-js-app
```
Finally, if the application already exists, you may wish to ignore errors resulting from attempting to clone over it. To do so, you can use the `--ignore-existing` flag. A warning will be emitted, but the command will return 0.
```shell
dokku apps:clone --ignore-existing node-js-app io-js-app
```
### Locking app deploys
> New as of 0.11.6
If you wish to disable deploying for a period of time, this can be done via deploy locks. Normally, deploy locks exist only for the duration of a deploy so as to avoid deploys from colliding, but a deploy lock can be created by running the `apps:lock` command.
```shell
dokku apps:lock node-js-app
```
```
-----> Deploy lock created
```
### Unlocking app deploys
> New as of 0.11.6
In some cases, it may be necessary to remove an existing deploy lock. This can be performed via the `apps:unlock` command.
> Warning: Removing the deploy lock _will not_ stop in progress deploys. At this time, in progress deploys will need to be manually terminated by someone with server access.
```shell
dokku apps:unlock node-js-app
```
```
! A deploy may be in progress.
! Removing the app lock will not stop in progress deploys.
-----> Deploy lock removed.
```
### Checking lock status
> New as of 0.13.0
In some cases, you may wish to inspect the state of an app lock. To do so, you can issue an `apps:lock` command. This will exit non-zero if there is no app lock in place.
```shell
dokku apps:locked node-js-app
```
```
Deploy lock does not exist
```
### Displaying reports about an app
> New as of 0.8.1
@@ -154,16 +226,16 @@ dokku apps:report
```
=====> node-js-app
App dir: /home/dokku/node-js-app
Git sha: dbddc3f
App cid: 7b18489c98be
Status: running
Git sha: dbddc3f
Deploy source: git
Locked: false
=====> python-sample
not deployed
=====> ruby-sample
App dir: /home/dokku/ruby-sample
Git sha: a2d477c
App cid: 78a44d71012a
Status: running
Deploy source: git
Locked: false
```
You can run the command for a specific app also.
@@ -175,9 +247,9 @@ dokku apps:report node-js-app
```
=====> node-js-app
App dir: /home/dokku/node-js-app
Git sha: dbddc3f
App cid: 7b18489c98be
Status: running
Git sha: dbddc3f
Deploy source: git
Locked: false
```
You can pass flags which will output only the value of the specific information you want. For example:

View File

@@ -1,19 +1,21 @@
# Log Management
```
logs <app> # display recent log output
logs <app> [-h] [-t] [-n num] [-q] [-p process] # Display recent log output
logs:failed [<app>] # Shows the last failed deploy logs
```
## Usage
### Application Logs
You can easily get logs of an application using the `logs` command:
### App Logs
You can easily get logs of an app using the `logs` command:
```shell
dokku logs node-js-app
```
## Behavioral modifiers
#### Behavioral modifiers
Dokku also supports certain command-line arguments that augment the `log` command's behavior.
@@ -26,8 +28,25 @@ Dokku also supports certain command-line arguments that augment the `log` comman
You can use these modifiers as follows:
```shell
dokku logs node-js-app -t -p web
```
will show logs continually from the web process.
### Failed Deploy Logs
> Warning: The default `docker-local` scheduler will "store" these until the next deploy or until the old containers are garbage collected - whichever runs first. If you require the logs beyond this point in time, please ship the logs to a centralized log server.
In some cases, it may be useful to retrieve the logs from a previously failed deploy.
You can retrieve these logs by using the `logs:failed` command
```shell
dokku logs:failed node-js-app
```
You can also retrieve the failed logs for each app:
```shell
dokku logs:failed node-js-app
```

View File

@@ -7,6 +7,14 @@ Dokku normally defaults to using [heroku buildpacks](https://devcenter.heroku.co
- See the [environment variable documentation](/docs/configuration/environment-variables.md) for more details.
- Create a `.buildpacks` file in the root of your repository.
## Switching from Dockerfile deployments
If an application was previously deployed via Dockerfile, the following commands should be run before a buildpack deploy will succeed:
```shell
dokku config:unset --no-restart node-js-app DOKKU_DOCKERFILE_CMD DOKKU_DOCKERFILE_ENTRYPOINT DOKKU_PROXY_PORT_MAP
```
## 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.
@@ -86,7 +94,7 @@ Certain buildpacks may time out in retrieving dependencies via curl. This can ha
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_TIMEOUT=1200
dokku config:set --global CURL_CONNECT_TIMEOUT=180
```

View File

@@ -11,17 +11,13 @@ To use a dockerfile for deployment, commit a valid `Dockerfile` to the root of y
- The application has a `BUILDPACK_URL` environment variable set via the `dokku config:set` command or in a committed `.env` file. In this case, Dokku will use your specified buildpack.
- The application has a `.buildpacks` file in the root of the repository. In this case, Dokku will use your specified buildpack(s).
## Exposed ports
## Switching from Buildpack deployments
> Changed as of 0.5.0
If an application was previously deployed via Buildpacks, the following commands should be run before a Dockerfile deploy will succeed:
Dokku will extract all tcp ports exposed using the `EXPOSE` directive (one port per line) and setup nginx to proxy the same port numbers to listen publicly. If you would like to change the exposed port, you should do so within your `Dockerfile` and app.
> Note: Nginx does not support proxying UDP. UDP ports can be exposed by disabling the nginx proxy with `dokku proxy:disable myapp`
If you do not explicitly `EXPOSE` a port in your `Dockerfile`, Dokku will configure the nginx proxy to listen on port 80 (and 443 for TLS) and forward traffic to your app listening on port 5000 inside the container. Just like buildpack apps, you can also use the `$PORT` environment variable in your app to maintain portability.
When ports are exposed through the default nginx proxy, they are proxied externally as HTTP ports. At this time, in no case do we proxy plain TCP or UDP ports. If you would like to investigate alternative proxy methods, please refer to our [proxy management documentation](/docs/advanced-usage/proxy-management.md).
```shell
dokku config:unset --no-restart node-js-app DOKKU_PROXY_PORT_MAP
```
## Build-time Configuration Variables
@@ -63,7 +59,6 @@ ENV NODE_ENV ${NODE_ENV}
RUN echo $NODE_ENV
```
## Customizing the run command
By default no arguments are passed to `docker run` when deploying the container and the `CMD` or `ENTRYPOINT` defined in the `Dockerfile` are executed. You can take advantage of docker ability of overriding the `CMD` or passing parameters to your `ENTRYPOINT` setting `$DOKKU_DOCKERFILE_START_CMD`. Let's say for example you are deploying a base nodejs image, with the following `ENTRYPOINT`:
@@ -113,3 +108,7 @@ a worker container for this app, you can run `dokku ps:scale worker=1` and a new
started by running `docker run bin/run-worker.sh` (the actual `docker run` commands are a bit more
complex, but this is the basic idea). If you use an `ENTRYPOINT` in your `Dockerfile`, the lines
in your `Procfile` will be passed as arguments to the `ENTRYPOINT` script instead of being executed.
## Exposed ports
See the [port management documentation](/docs/networking/port-management.md).

View File

@@ -0,0 +1,78 @@
# GIT Deployment
> Subcommands new as of 0.12.0
```
git:initialize <app> # Initialize a git repository for an app
git:report [<app>] [<flag>] # Displays a git report for one or more apps
git:set <app> <key> (<value>) # Set or clear a git property for an app
```
GIT-based deployment has been the traditional method of deploying applications in Dokku. As of v0.12.0, Dokku introduces a few ways to customize the experience of deploying via `git push`. A GIT-based deployment currently supports building applications via both [Buildpack](/docs/deployment/methods/buildpacks.md) and [Dockerfile](/docs/deployment/methods/dockerfiles.md).
## Usage
### Initializing an Application
When an application is created via `git push`, Dokku will create the proper `pre-receive` hook in order to execute the build pipeline. In certain cases - such as when fronting deploys with the [`git-http-backend`](https://git-scm.com/docs/git-http-backend) - this may not be correctly created. As an alternative, the `git:initialize` command can be used to trigger this creation:
```shell
# on the Dokku host
# overrides any existing pre-receive hook
dokku git:initialize node-js-app
```
In order for the above command to succeed, the application _must_ already exist.
> Warning: If the pre-receive hook was customized in any way, this will overwrite that hook with the current defaults for Dokku.
### Changing the Deploy Branch
By default, Dokku will deploy code pushed to the `master` branch. In order to quickly deploy a different local branch, the following GIT command can be used:
```shell
# on the local machine
# where `SOME_BRANCH_NAME` is the name of the branch
git push dokku SOME_BRANCH_NAME:master
```
In `0.12.0`, the correct way to change the deploy branch is to use the `git:set` Dokku command.
```shell
# on the Dokku host
# override for all applications
dokku git:set --global deploy-branch SOME_BRANCH_NAME
# override for a specific app
# where `SOME_BRANCH_NAME` is the name of the branch
dokku git:set node-js-app deploy-branch SOME_BRANCH_NAME
```
Pushing multiple branches can also be supported by creating a [receive-branch](/docs/development/plugin-triggers.md#receive-branch) plugin trigger in a custom plugin.
### Configuring the GIT_REV Environment Variable
> New as of 0.12.0
Application deployments will include a special `GIT_REV` environment variable containing the current deployment sha being deployed. For rebuilds, this sha will remain the same.
To configure the name of the `GIT_REV` environment variable, run the `git:set` command as follows:
```shell
# on the Dokku host
# override for a specific app
dokku git:set node-js-app rev-env-var DOKKU_GIT_REV
```
This behavior can be disabled entirely on a per-app basis by setting the `rev-env-var` value to an empty string:
```shell
# on the Dokku host
# override for a specific app
dokku git:set node-js-app rev-env-var ""
```

View File

@@ -20,6 +20,10 @@ The Dokku tags plugin allows you to add docker image tags to the currently deplo
## Usage
### Exposed ports
See the [port management documentation](/docs/networking/port-management.md).
### Listing tags for an application
For example, you can list all tags for a given application:
@@ -61,7 +65,9 @@ dokku/node-js-app v1 936a42f25901 About a minute ago
### Deploying an image tag
Finally, you can also deploy a local image using the `tags:deploy` command.
Finally, you can also deploy a local image using the `tags:deploy` command. When specifying a tag that is not `latest`, the released image will be retagged as the `latest` image tag for the app.
> Warning: For images based on herokuish, using the `tags:deploy` command will reset environment variables written into the image, causing a retag to occur. This will - on average - add two extra layers to your deployed image. Note that this does not affect dockerfile-based images, which are the majority of images deployed via the `tags` command.
```shell
dokku tags:deploy node-js-app v1
@@ -124,9 +130,6 @@ You can alternatively add image pulled from a docker Registry and deploy app fro
dokku tags:deploy test-app v12
```
> Note: When deploying an image, we will use `docker inspect` to extract the `ExposedPorts` configuration and if defined, use that to populate `DOKKU_DOCKERFILE_PORTS`. If this behavior is not desired, you can override that configuration variable with the `config:set` command.
> Example: `dokku config:set test-app DOKKU_DOCKERFILE_PORTS="5984/tcp 80/tcp"`
### Deploying an image from CI
To ensure your builds are always reproducible, it's considered bad practice to store build
@@ -160,7 +163,7 @@ docker build -t dokku/test-app:v12 .
# copy the image to the dokku host
docker save dokku/test-app:v12 | bzip2 | ssh my.dokku.host "bunzip2 | docker load"
# tag and deploy the image
ssh my.dokku.host "dokku tags:create test-app previous; dokku tags:deploy test-app v12 && dokku tags:create test-app latest"
ssh my.dokku.host "dokku tags:create test-app previous; dokku tags:deploy test-app v12"
```
## Related articles

View File

@@ -5,7 +5,7 @@ Sometimes you need to either inspect running containers or run a one-off command
## Run a command in an app environment
```
run <app> <cmd> # Run a command in the environment of an application
run <app> <cmd> # Run a command in a new container using the current application image
```
The `run` command can be used to run a one-off process for a specific command. This will start a new container and run the desired command within that container. Note that this container will be stay around even after command completes. The container will be the same container as was used to start the currently deployed application.
@@ -140,7 +140,7 @@ The following is a sample cronfile that you can use for your applications:
```cron
# server cron jobs
MAILTO="mail@example.com"
MAILTO="mail@dokku.me"
PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash

View File

@@ -4,6 +4,7 @@
```
ps <app> # List processes running in app container(s)
ps:inspect <app> # Displays a sanitized version of docker inspect for an app
ps:rebuild <app> # Rebuild an app from source
ps:rebuildall # Rebuild all apps from source
ps:report [<app>] [<flag>] # Displays a process report for one or more apps
@@ -13,7 +14,9 @@ ps:restartall # Restart all deployed app contai
ps:scale <app> <proc>=<count> [<proc>=<count>] # Get/Set how many instances of a given process to run
ps:set-restart-policy <app> <policy> # Sets app restart-policy
ps:start <app> # Start app container(s)
ps:startall # Start all deployed app containers
ps:stop <app> # Stop app container(s)
ps:stopall # Stop all app container(s)
```
By default, Dokku will only start a single `web` process - if defined - though process scaling can be managed by the `ps` plugin or [via a custom `DOKKU_SCALE` file](/docs/deployment/process-management.md#manually-managing-process-scaling).
@@ -30,6 +33,18 @@ To find out if your application's containers are running the commands you expect
dokku ps node-js-app
```
### Inspecting app containers
> New as of 0.13.0
A common administrative task to perform is calling `docker inspect` on the containers that are running for an application. This can be an error-prone task to perform, and may also reveal sensitive environment variables if not done correctly. Dokku provides a wrapper around this command via the `ps:inspect` command:
```shell
dokku ps:inspect node-js-app
```
This command will gather all the running container IDs for your application and call `docker inspect`, sanitizing the output data so it can be copy-pasted elsewhere safely.
### Rebuilding applications
There are some Dokku commands which will not automatically rebuild an application's environment, or which can be told to skip a rebuild. For instance, you may wish to run multiple `config:set` commands without a restart so as to speed up configuration. In these cases, you can ultimately trigger an application rebuild using `ps:rebuild`
@@ -93,12 +108,18 @@ dokku ps:scale node-js-app
### Stopping applications
Deployed applications can be stopped using the `ps:stop` command. This turns all running containers for an application, and will result in a `502 Bad Gateway` response for the default nginx proxy implementation.
Deployed applications can be stopped using the `ps:stop` command. This turns off all running containers for an application, and will result in a `502 Bad Gateway` response for the default nginx proxy implementation.
```shell
dokku ps:stop node-js-app
```
You may also stop all applications at once:
```shell
dokku ps:stopall
```
### Starting applications
All stopped containers can be started using the `ps:start` command. This is similar to running `ps:restart`, except no action will be taken if the application containers are running.
@@ -107,6 +128,16 @@ All stopped containers can be started using the `ps:start` command. This is simi
dokku ps:start node-js-app
```
### Starting all applications
In some cases, it may be necessary to start all applications from scratch - eg. if all Docker containers have been manually stopped. This can be executed via the `ps:startall` command, which supports parallelism in the same manner `ps:rebuildall`, `ps:restartall`, and `ps:stopall` do.
Be aware that no action will be taken if the application containers are running.
```shell
dokku ps:startall
```
## Restart Policies
> New as of 0.7.0
@@ -115,7 +146,7 @@ By default, Dokku will automatically restart containers that exit with a non-zer
### Showing the current restart policy
THe `ps:restart-policy` command will show the currently configured restart policy for an application. The default policy is `on-failure:10`
The `ps:restart-policy` command will show the currently configured restart policy for an application. The default policy is `on-failure:10`
```shell
dokku ps:restart-policy node-js-app

View File

@@ -46,24 +46,17 @@ dokku ssh-keys:add KEY_NAME path/to/id_rsa.pub
b7:76:27:4f:30:90:21:ae:d4:1e:70:20:35:3f:06:d6
```
`KEY_NAME` is the username prefer to use to refer to this particular key. Including the word `admin` in the name will grant the user privileges to add additional keys remotely.
`KEY_NAME` is the name you want to use to refer to this particular key. Including the word `admin` in the name will grant the user privileges to add additional keys remotely.
> `KEY_NAME` is a unique name which is used to identify public keys. Attempting to re-use a key name will result in an error. The ssh (git) user is *always* `dokku`, as this is the system user that the `dokku` binary uses to perform all it's actions.
Admin users and root can also add keys remotely:
```shell
cat ~/.ssh/id_rsa.pub | ssh dokku@dokku.me ssh-keys:add KEY_NAME
```
If you are using an ssh user other than `dokku`, then you'll also need to specify the `dokku` bin:
Admin users and root can add keys remotely by specifying the `dokku` bin on their `ssh` command:
```shell
cat ~/.ssh/id_rsa.pub | ssh root@dokku.me dokku ssh-keys:add KEY_NAME
```
Finally, if you are using the vagrant installation, you can also use the `make vagrant-acl-add` target to add your public key to Dokku (it will use your host username as the `USER`):
If you are using the vagrant installation, you can also use the `make vagrant-acl-add` target to add your public key to Dokku (it will use your host username as the `USER`):
```shell
cat ~/.ssh/id_rsa.pub | make vagrant-acl-add

View File

@@ -15,6 +15,14 @@ By default, Dokku will wait `10` seconds after starting each container before as
You may both create user-defined checks for web processes using a `CHECKS` file, as well as customize any and all parts of this experience using the checks plugin.
> Web checks are performed via `curl` on Dokku host. Some application code - such
> as the Django framework - checks for specific hostnames or header values, these
> checks will fail. To avoid this:
>
> - Remove such checks from your code: Modify your application to remove the hostname check completely
> - Allow checks from all hostnames: Modify your application to accept a dynamically provided hostname
> - Specify the domain within the check: See below for further documentation
## Configuring Check Settings using the `config` plugin
There are certain settings that can be configured via environment variables:
@@ -137,15 +145,15 @@ The `CHECKS` file can contain multiple checks:
To check an application that supports multiple hostnames, use relative URLs that include the hostname:
```
//admin.example.com Admin Dashboard
//static.example.com/logo.png
//admin.dokku.me Admin Dashboard
//static.dokku.me/logo.png
```
You can also specify the protocol to explicitly check HTTPS requests:
```
https://admin.example.com Admin Dashboard
https://static.example.com/logo.png
https://admin.dokku.me Admin Dashboard
https://static.dokku.me/logo.png
```
While a full url may be used in order to invoke checks, if you are using relative urls, the port *must* be omitted.
@@ -278,7 +286,7 @@ git push dokku master
```
-----> Cleaning up...
-----> Building myapp from herokuish...
-----> Building node-js-app from herokuish...
-----> Adding BUILD_ENV to build environment...
-----> Ruby app detected
-----> Compiling Ruby/Rails
@@ -288,8 +296,8 @@ git push dokku master
-----> Discovering process types
Procfile declares types -> web
-----> Releasing myapp...
-----> Deploying myapp...
-----> Releasing node-js-app...
-----> Deploying node-js-app...
-----> Running pre-flight checks
-----> Attempt 1/6 Waiting for 10 seconds ...
CHECKS expected result:
@@ -307,7 +315,7 @@ curl: (7) Failed to connect to 172.17.0.155 port 5000: Connection refused
CHECKS expected result:
http://localhost/check.txt => "simple_check"
-----> All checks successful!
=====> myapp container output:
=====> node-js-app container output:
=> Booting Thin
=> Rails 4.2.0 application starting in production on http://0.0.0.0:5000
=> Run `rails server -h` for more startup options
@@ -315,15 +323,15 @@ curl: (7) Failed to connect to 172.17.0.155 port 5000: Connection refused
Thin web server (v1.6.3 codename Protein Powder)
Maximum connections set to 1024
Listening on 0.0.0.0:5000, CTRL+C to stop
=====> end myapp container output
=====> end node-js-app container output
-----> Running post-deploy
-----> Configuring myapp.dokku.example.com...
-----> Configuring myapp.dokku.me...
-----> Creating http nginx.conf
-----> Running nginx-pre-reload
Reloading nginx
-----> Shutting down old container in 60 seconds
=====> Application deployed:
http://myapp.dokku.example.com
http://myapp.dokku.me
```
## Example: Failing Rails Deployment
@@ -352,7 +360,7 @@ git push dokku master
```
-----> Cleaning up...
-----> Building myapp from herokuish...
-----> Building node-js-app from herokuish...
-----> Adding BUILD_ENV to build environment...
-----> Ruby app detected
-----> Compiling Ruby/Rails
@@ -362,8 +370,8 @@ git push dokku master
Discovering process types
Procfile declares types -> web
Releasing myapp...
Deploying myapp...
Releasing node-js-app...
Deploying node-js-app...
Running pre-flight checks
-----> Attempt 1/6 Waiting for 10 seconds ...
CHECKS expected result:
@@ -402,7 +410,7 @@ curl: (22) The requested URL returned error: 500 Internal Server Error
curl: (22) The requested URL returned error: 500 Internal Server Error
Could not start due to 1 failed checks.
! Check attempt 6/6 failed.
=====> myapp container output:
=====> node-js-app container output:
=> Booting Thin
=> Rails 4.2.0 application starting in production on http://0.0.0.0:5000
=> Run `rails server -h` for more startup options
@@ -423,9 +431,9 @@ Could not start due to 1 failed checks.
vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/postgresql_adapter.rb:242:in `initialize'
vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/postgresql_adapter.rb:44:in `new'
vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/postgresql_adapter.rb:44:in `postgresql_connection
=====> end myapp container output
=====> end node-js-app container output
/usr/bin/dokku: line 49: 23409 Killed dokku deploy "$APP"
To dokku@dokku.example.com:myapp
To dokku@dokku.me:myapp
! [remote rejected] dokku -> master (pre-receive hook declined)
error: failed to push some refs to 'dokku@dokku.example.com:myapp'
error: failed to push some refs to 'dokku@dokku.me:myapp'
```

File diff suppressed because it is too large Load Diff

View File

@@ -4,60 +4,22 @@ Dokku is released in intervals *at most* three weeks apart, though may be releas
To propose a release, the following tasks need to be performed:
- Update all blockquote references of `not yet released and only available in master` to point to release version.
- The installable version must be changed in the `contrib/dokku-installer.py` file.
- The installable version must be changed in the `debian/control` file.
- The installable version must be changed in the `docs/home.html` file
- The installable version must be changed in the `docs/installation.md` file.
- The installable version must be changed in the `docs/template.html` file.
- The installable version must be changed in the `README.md` file.
- The embedded css should be cleared in the `docs/template.html` file.
- The versioned links should be updated in the `docs/assets/favicons/browserconfig.xml` file.
- The versioned links should be updated in the `docs/assets/favicons/manifest.json` file.
- The versioned links should be updated in the `docs/assets/style.css` file.
- The versioned links should be updated in the `docs/home.html` file.
- The versioned links should be updated in the `docs/template.html` file.
- The versioned links should be updated or added to the `docs/assets/versions.json` file.
- A list of changes must be made in the `HISTORY.md`.
- A tag must be created locally with your release version
- Debian and RPM packages *must* be created via `vagrant up build`
- The packages should be uploaded to packagecloud.io
- All changes are pushed to master and the tag should be turned into a release which will contain the changelog.
- ArchLinux package description *must* be updated via `vagrant up build-arch` (needs to be done after the tag is pushed to GitHub, because it is based on that)
```shell
export PACKAGECLOUD_TOKEN=SOME_TOKEN
# supports major/minor/patch/betafish
contrib/release-dokku
```
> If you are a maintainer and need the PACKAGECLOUD_TOKEN in order to make a release, please contact @josegonzalez to get this information.
As well, the ArchLinux package description *must* be updated via `vagrant up build-arch` (needs to be done after the tag is pushed to GitHub, because it is based on that)
## Versioning
Dokku follows semver standards. As we are not yet at a stable release, breaking changes will require *only* a minor release, while all other changes only require a patch release. Once we hit stable, breaking changes will require a major release.
Tags should be created via the following method:
```shell
git tag v0.9.9
```
At the moment, tags need not be signed, though that may change in the future.
## Debian and RPM packages
The `build` target in the Dokku `Vagrantfile` creates debian and rpm packages for Dokku at a point in time. The version will be based upon the latest local tag - you may create your own, internal tags/releases if that is so desired.
Debian package information is held in the `debian` directory of the Dokku project.
For the public project, releases should be pushed to packagecloud.io *after* a tag is created but *before* said tag is pushed to github. The following may be the release workflow:
```shell
git tag v0.9.9
vagrant up build
export PACKAGECLOUD_TOKEN=SOME_TOKEN
package_cloud push dokku/dokku/ubuntu/trusty dokku_0.9.9_amd64.deb
package_cloud push dokku/dokku/el/7 dokku-0.9.9-1.x86_64.rpm
```
If new versions of other packages were created, these should also be pushed at this time.
> If you are a maintainer and need the PACKAGECLOUD_TOKEN in order to make a release, please contact @josegonzalez to get this information.
## ArchLinux Packages
ArchLinux packages are not really build, because all that is needed for an Arch User Repo (AUR) package is the description of how to build the package. To make this process as easy as possible there is a vagrant box called `build-arch` that updates the version of this build description (a file called `PKGBUILD`), then runs some helper scripts to fill all additional information and does test if the package could be build. Then only those changes need to be pushed to the AUR repo and an updated version of the package is ready for usage for our ArchLinux users. For detailed information see the section below.
@@ -67,7 +29,7 @@ The workflow looks like this:
```shell
# having dokku-arch in ../dokku-arch
vagrant up build-arch
# wait for "==> build-arch: ==> Finished making: dokku 0.10.2-2 (Mon Feb 22 23:20:37 CET 2016)"
# wait for "==> build-arch: ==> Finished making: dokku 0.14.3-2 (Mon Feb 22 23:20:37 CET 2016)"
cd ../dokku-arch
git add PKGBUILD .SRCINFO
git commit -m 'Update to dokku 0.9.9'
@@ -76,29 +38,7 @@ git push aur master
> If you are a maintainer and need access to the AUR repositories in order to make a release, please contact @morrisjobke or @josegonzalez to get this co-maintainership.
## Changelog format
The `HISTORY.md` should be added to based on the changes made since the previous release. This can be done by reviewing all merged pull requests to the master branch on github. The format is as follows:
```
## 0.9.9
Some description concerning major changes in this release, or potential incompatibilities.
### New Features
- #SOME_ID: @pull-request-creator Description
### Bug Fixes
- #SOME_ID: @pull-request-creator Description
### Docs Changes
- #SOME_ID: @pull-request-creator Description
```
## Detailed information for ArchLinux packages
### Detailed information for ArchLinux packages
All of the information to build the ArchLinux package is in the AUR git repository (see [dokku AUR page](https://aur.archlinux.org/packages/dokku/)). The release of a AUR package only consists of pushing the package information into the AUR git repo. Then users could use that information to build the package on their machines.

View File

@@ -46,3 +46,39 @@ make deploy-test-nodejs-express
```
For a full list of test make targets check out `tests.mk` in the root of the Dokku repository.
## Executing a single test suite
When working on a particular plugin, it may be useful to run _only_ a particular test suite. This can be done by specifying the test suite path:
```shell
bats tests/unit/10_apps.bats
```
It is also possible to target multiple test suites at a time.
```shell
bats tests/unit/10_apps.bats tests/unit/10_certs.bats
```
## Executing a single test
In order to increase testing velocity, a wrapper script around bats is available that can be used to run a single testcase within a suite.
Tests within a suite may be listed by specifying the suite as a parameter to the `tests/bats-exec-test-single` script.
```shell
tests/bats-exec-test-single tests/unit/10_apps.bats
```
A single test can be specified as a second parameter. The test is selected by fuzzy-match, and only the first match is executed.
```shell
tests/bats-exec-test-single tests/unit/10_apps.bats clone
```
Some special characters are translated in the test listing - specifically the characters `( ) :` - while others are not. The fuzzy matching happens on the test names listed when no second character is invoked, so executing a test with a more specific name will work as expected.
```shell
tests/bats-exec-test-single tests/unit/10_apps.bats clone_-2d-2dskip-2ddeploy
```

View File

@@ -44,21 +44,25 @@ cd dokku
sudo BUILD_STACK=true STACK_URL=https://github.com/gliderlabs/herokuish.git make install
```
## Configuring
## Skipping herokuish installation
The `herokuish` package is recommended but not required if not using Heroku Buildpacks for deployment. Debian-based OS users can run the bootstrap installer via `sudo DOKKU_NO_INSTALL_RECOMMENDS=true bash bootstrap.sh` to skip the dependency. Please note that this will _also_ skip installation of other recommended dependencies.
## Configuring an unattended installation
Once Dokku is installed, if you are not using the web-installer, you'll want to configure a the virtualhost setup as well as the push user. If you do not, your installation will be considered incomplete and you will not be able to deploy applications.
For Debian, unattended installation is described [Debian installation guide](/docs/getting-started/install/debian.md).
*You should also stop and disable the `dokku-installer` service to remove public access to adding SSH keys.*
Set up a domain and a wildcard domain pointing to that host. Make sure `/home/dokku/VHOST` is set to this domain. By default it's set to whatever hostname the host has. This file is only created if the hostname can be resolved by dig (`dig +short $(hostname -f)`). Otherwise you have to create the file manually and set it to your preferred domain. If this file still is not present when you push your app, Dokku will publish the app with a port number (i.e. `http://example.com:49154` - note the missing subdomain).
Set up a domain using your preferred vendor and a wildcard domain pointing to the host running dokku. You can manage this global domain using the [domains plugin](/docs/configuration/domains.md).
Follow the [user management documentation](/docs/deployment/user-management.md) in order to add users to Dokku, or to give other Unix accounts access to Dokku.
That's it!
Follow the [user management documentation](/docs/deployment/user-management.md) in order to add ssh keys for users to Dokku, or to give other Unix accounts access to Dokku.
## VMs with less than 1GB of memory
Having less than 1GB of system memory available for Dokku and its containers, for example Digital Ocean's small 512MB machines, might result in unexpected errors, such as **! [remote rejected] master -> master (pre-receive hook declined)** during installation of NPM dependencies (https://github.com/npm/npm/issues/3867).
Having less than 1GB of system memory available for Dokku and its containers may result in unexpected errors, such as **! [remote rejected] master -> master (pre-receive hook declined)** during installation of NPM dependencies (https://github.com/npm/npm/issues/3867).
To work around this issue, it might suffice to augment the linux swap file size to a maximum of twice the physical memory size.
@@ -76,4 +80,5 @@ free
echo "/var/swap.img none swap sw 0 0" >> /etc/fstab
```
Reference: https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps
[Reference](https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps)

View File

@@ -2,10 +2,10 @@
- If you don't already have one [generate an SSH key pair](https://help.github.com/articles/generating-ssh-keys/).
- Go to the [Dokku on azure deployment page](https://github.com/azure/azure-quickstart-templates/tree/master/dokku-vm) and click **Deploy to Azure**.
- Go to the [Dokku on Azure deployment page](https://github.com/azure/azure-quickstart-templates/tree/master/dokku-vm) and click **Deploy to Azure**.
- You'll be prompted to enter a few parameters, including a unique storage account name and a unique name for the sub-domain used for your public IP address. For the `sshKeyData` parameter, copy and paste the contents of the **public** key file you just created. After a few minutes the Dokku instance will be deployed.
- You'll be prompted to enter a few parameters, including a unique storage account name and a unique name for the sub-domain used for your public IP address. For the `sshKeyData` parameter, copy and paste the contents of the *public* key file you just created. After a few minutes the Dokku instance will be deployed.
- In your browser of choice, navigate to `http://[[dnsNameForPublicIP]].[[location]].cloudapp.azure.com`. Where `[[dnsNameForPublicIP]]` and `[[location]]` are template parameters you used to deploy the template.
- In your browser of choice, navigate to `http://[dnsNameForPublicIP].[location].cloudapp.azure.com`. Where `[dnsNameForPublicIP]` and `[location]` are template parameters you used to deploy the template.
- Finish your Dokku setup like you normally would by creating a **new** public/private key pair for your deployments using `ssh-keygen` (don't use the same one as you created in the first step). You should select 'Use Virtual Host Naming' and set the `Hostname` to a **public dns name** that you own such as one you would purchase from [namecheap](http://namecheap.com). Alternatively thanks to [xip.io]( http://xip.io/) you can just use yourAzurePublicIP.xip.io for free. For example, if your public IP is `44.44.44.44` then you would set it to `44.44.44.44.xip.io`.
- Finish your Dokku setup like you normally would by creating a *new* public/private key pair for your deployments using `ssh-keygen` (don't use the same one as you created in the first step). You should select **Use Virtual Host Naming** and set the **Hostname** to a *public DNS name* that you own such as one you would purchase from [Namecheap](http://namecheap.com). Alternatively thanks to [xip.io](http://xip.io/) you can just use `[yourAzurePublicIP].xip.io` for free. For example, if your public IP is `44.44.44.44` then you would set it to `44.44.44.44.xip.io`.

View File

@@ -1,6 +1,6 @@
# Debian Package Installation Notes
As of 0.3.18, Dokku defaults to being installed via debian package. While certain hosts may require extra work to get running, you may optionally wish to automate the installation of Dokku without the use of our `bootstrap.sh` bash script. The following are the steps run by said script:
As of 0.3.18, Dokku defaults to being installed via Debian package. While certain hosts may require extra work to get running, you may optionally wish to automate the installation of Dokku without the use of our `bootstrap.sh` Bash script. The following are the steps run by said script:
```shell
# install prerequisites
@@ -11,8 +11,10 @@ sudo apt-get install -qq -y apt-transport-https
wget -nv -O - https://get.docker.com/ | sh
# install dokku
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
wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
OS_ID="$(lsb_release -cs 2> /dev/null || echo "trusty")"
echo "trusty utopic vivid wily xenial yakkety zesty artful bionic" | grep -q "$OS_ID" || OS_ID="trusty"
echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ ${OS_ID} main" | sudo tee /etc/apt/sources.list.d/dokku.list
sudo apt-get update -qq > /dev/null
sudo apt-get install -qq -y dokku
sudo dokku plugin:install-dependencies --core
@@ -20,7 +22,7 @@ sudo dokku plugin:install-dependencies --core
## Unattended installation
In case you want to perform an unattended installation of dokku, this is made possible through [debconf](https://en.wikipedia.org/wiki/Debconf_%28software_package%29), which allows you to configure a package before installing it.
In case you want to perform an unattended installation of Dokku, this is made possible through [debconf](https://en.wikipedia.org/wiki/Debconf_%28software_package%29), which allows you to configure a package before installing it.
You can set any of the below options through the `debconf-set-selections` command, for example to enable vhost-based deployments:
@@ -35,7 +37,8 @@ After setting the desired options, proceed with the installation as described ab
| Name | Type | Default | Description |
| ------------------ | ------- | --------------------- | ------------------------------------------------------------------------ |
| dokku/web_config | boolean | true | Use web-based config for below options |
| dokku/vhost_enable | boolean | false | Use vhost-based deployments (e.g. <app>.dokku.me) |
| dokku/vhost_enable | boolean | false | Use vhost-based deployments (e.g. `[yourapp].dokku.me`) |
| dokku/hostname | string | dokku.me | Hostname, used as vhost domain and for showing app URL after deploy |
| dokku/skip_key_file| boolean | false | Don't check for the existence of the dokku/key_file. Warning: This setting this to true, will require you to manually add an SSH key later on. |
| dokku/skip_key_file| boolean | false | Don't check for the existence of the dokku/key_file. Warning: Setting this to true, will require you to manually add an SSH key later on. |
| dokku/key_file | string | /root/.ssh/id_rsa.pub | Path on disk to an SSH key to add to the Dokku user (Will be ignored on `dpkg-reconfigure`) |
| dokku/nginx_enable | boolean | true | Enable nginx-vhosts plugin |

View File

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

View File

@@ -5,9 +5,9 @@ Dreamhost (or any other OpenStack-compatible cloud with minimal
changes).
A new server instance can be created on DreamHost Cloud from the command line
using openstack client or from the web UI and with the same command
use a cloud-init script to install Dokku. Install the [openstack
cli](https://help.dreamhost.com/hc/en-us/articles/216185658-How-to-Install-the-OpenStack-command-line-clients),
using OpenStack client or from the web UI and with the same command
use a cloud-init script to install Dokku. Install the [OpenStack
CLI](https://help.dreamhost.com/hc/en-us/articles/216185658-How-to-Install-the-OpenStack-command-line-clients),
download the [DreamHost Cloud credentials
file](https://iad2.dreamcompute.com/project/access_and_security/api_access/openrc/)
before proceeding and make sure your public SSH key is added to the
@@ -17,10 +17,10 @@ cloud.
source openrc.sh # Set the environment variables for DreamHost Cloud
```
This allows openstack client to connect to DreamHost API endpoints.
This allows OpenStack client to connect to DreamHost API endpoints.
The command below creates a new server instance named `my-dokku-instance`
based on Ubuntu 14.04, with 2GB RAM and 1CPU (the flavor called
`supersonic`), opening network port access to http and ssh (the
`supersonic`), opening network port access to HTTP and SSH (the
`default` security group), and the name of the chosen SSH key. This
key will be automatically added to the new server in the
`authorized_keys` for the default SSH user (`ubuntu`), and it will

View File

@@ -4,7 +4,7 @@
>**Warning:** Web installer is not available on CentOS. You will need to configure [SSH keys](/docs/deployment/user-management.md#adding-ssh-keys) and [virtual hosts](/docs/configuration/domains.md#customizing-hostnames) using dokku command line interface.
Dokku defaults to being installed via RPM package on CentOS 7. While certain hosts may require extra work to get running, you may optionally wish to automate the installation of Dokku without the use of our `bootstrap.sh` bash script. The following are the steps run by said script:
Dokku defaults to being installed via RPM package on CentOS 7. While certain hosts may require extra work to get running, you may optionally wish to automate the installation of Dokku without the use of our `bootstrap.sh` Bash script. The following are the steps run by said script:
```shell
# Install docker

View File

@@ -23,7 +23,7 @@
# for most users
vagrant up
# windows users must instead use the following
# windows users must instead use the following in an elevated command prompt
vagrant up dokku-windows
```
@@ -34,11 +34,10 @@
Port 22
```
> For users that have customized the IP address of their VM - either in a custom `Vagrantfile` or via the `DOKKU_IP` environment variable - and are not using `10.0.0.2` for the Vagrant IP, you'll need to instead use the output of `vagrant ssh-config dokku` for your ~/.ssh/config entry.
> For users that have customized the IP address of their VM - either in a custom `Vagrantfile` or via the `DOKKU_IP` environment variable - and are not using `10.0.0.2` for the Vagrant IP, you'll need to instead use the output of `vagrant ssh-config dokku` for your `~/.ssh/config` entry.
- Copy your SSH key via `cat ~/.ssh/id_rsa.pub | pbcopy` and paste it into the dokku-installer at http://dokku.me . Change the `Hostname` field on the Dokku Setup screen to your domain and then check the box that says `Use virtualhost naming`. Then click *Finish Setup* to install your key. You'll be directed to application deployment instructions from here.
- Copy your SSH key via `cat ~/.ssh/id_rsa.pub | pbcopy` and paste it into the dokku-installer at http://dokku.me . Change the `Hostname` field on the Dokku Setup screen to your domain and then check the box that says **Use virtualhost naming**. Then click **Finish Setup** to install your key. You'll be directed to application deployment instructions from here.
Please note, the `dokku.me` domain is setup to point to `10.0.0.2` along with all subdomains (ie yourapp.dokku.me). If you change the `DOKKU_IP` in your vagrant setup you'll need to update your `/etc/hosts` file to point your reconfigured ip address.
Please note, the `dokku.me` domain is setup to point to `10.0.0.2` along with all subdomains (i.e. `yourapp.dokku.me`). If you change the `DOKKU_IP` in your Vagrant setup you'll need to update your `/etc/hosts` file to point your reconfigured ip address.
You are now ready to deploy an app or install plugins.

View File

@@ -17,26 +17,31 @@ Dokku is designed for usage on a fresh VM installation, and should install all n
#### 1. Install dokku
To install the latest stable version of dokku, you can run the following shell commands:
To install the latest stable version of Dokku, you can run the following shell commands:
```shell
# for debian systems, installs Dokku via apt-get
wget https://raw.githubusercontent.com/dokku/dokku/v0.10.2/bootstrap.sh;
sudo DOKKU_TAG=v0.10.2 bash bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/v0.14.3/bootstrap.sh;
sudo DOKKU_TAG=v0.14.3 bash bootstrap.sh
```
The installation process takes about 5-10 minutes, depending upon internet connection speed.
If you're using Debian 8 or Ubuntu 14.04, make sure your package manager is configured to install a sufficiently recent version of nginx<sup>[3]</sup>, otherwise, the installation may fail due to "unmet dependencies" relating nginx.
#### 2. Setup SSH key and Virtualhost Settings
Once the installation is complete, you can open a browser to setup your SSH key and virtualhost settings. Open your browser of choice and navigate to the host's IP address - or the domain you assigned to that IP previously - and configure Dokku via the web admin.
>**Warning:** If you don't complete setup via the web installer (even if you set up SSH keys and virtual hosts otherwise) your Dokku installation will remain vulnerable to anyone finding the setup page and inserting their key.
Alternatively, instructions to skip the web installer with an unattended installation are available in the [advanced install guide](/docs/getting-started/advanced-installation/#configuring).
>**Warning:** Web installer is not available on CentOS and Arch Linux. You will need to configure [SSH keys](/docs/deployment/user-management.md#adding-ssh-keys) and [virtual hosts](/docs/configuration/domains.md#customizing-hostnames) using dokku command line interface.
> **Warning:** If you don't complete setup via the web installer (even if you set up SSH keys and virtual hosts otherwise) your Dokku installation will remain vulnerable to anyone finding the setup page and inserting their key. You can check if it is still running via `ps auxf | grep dokku-installer`, and it may be stopped via your server's init system - usually either `service dokku-installer stop` or `stop dokku-installer`.
> **Warning:** Web installer is not available on CentOS and Arch Linux. You will need to configure [SSH keys](/docs/deployment/user-management.md#adding-ssh-keys) and [virtual hosts](/docs/configuration/domains.md#customizing-hostnames) using dokku command line interface - see unattended installation linked above.
#### 3. Deploy your first application
Once you save your settings, the web admin will self-terminate and you should be able to run or deploy to the Dokku installation.
Once you save your settings, the web admin will self-terminate and you should be able to run or [deploy to the Dokku installation](/docs/deployment/application-deployment.md).
### Installing via other methods
@@ -57,3 +62,4 @@ As well, you may wish to customize your installation in some other fashion. or e
- <sup>[1]: To check whether your system has an fqdn set, run `sudo hostname -f`</sup>
- <sup>[2]: If your system has less than 1GB of memory, you can use [this workaround](/docs/getting-started/advanced-installation.md#vms-with-less-than-1gb-of-memory).</sup>
- <sup>[3]: nginx >= 1.8.0 can be installed via the [nginx repositories](https://www.nginx.com/resources/admin-guide/installing-nginx-open-source/), or by adding [this PPA](https://launchpad.net/~nginx/+archive/ubuntu/stable) if you're using Ubuntu. nginx >= 1.11.5 is necessary for HTTP/2 support</sup>

View File

@@ -146,10 +146,10 @@ 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), set the following environment variables:
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: 90 seconds, total maximum time for operation: 600 seconds), set the following environment variables:
```shell
dokku config:set --global CURL_TIMEOUT=600
dokku config:set --global CURL_TIMEOUT=1200
dokku config:set --global CURL_CONNECT_TIMEOUT=180
```

View File

@@ -36,7 +36,7 @@ All applications should be stopped, and all docker containers and images deleted
```shell
# stop all applications
dokku --quiet apps | xargs dokku ps:stop
dokku ps:stopall
# cleanup containers and images
dokku cleanup

View File

@@ -2,6 +2,27 @@
If your version of Dokku is pre 0.3.0 (check with `dokku version`), we recommend [a fresh install](/docs/getting-started/installation.md) on a new server.
## Security Updates
For any security related updates, please follow our [twitter account](https://twitter.com/dokku). As Dokku does not run any daemons, the security risk introduced by our software is minimal.
Your operating system may occasionally provide security updates. We recommend setting unattended upgrades for your operating system. Here are some helpful links:
- [Arch Linux System Maintenance](https://wiki.archlinux.org/index.php/System_maintenance)
- [Centos Automatic Security Updates](https://serversforhackers.com/c/automatic-security-updates-centos)
- [Debian Unattended Upgrades](https://wiki.debian.org/UnattendedUpgrades)
- [Ubuntu Unattended Upgrades](https://help.ubuntu.com/community/AutomaticSecurityUpdates)
Docker releases updates periodically to their engine. We recommend reading their release notes and upgrading accordingly. Please see the [Docker documentation](https://docs.docker.com/) for more details.
Finally, we provide a helpful binary called `dokku-update`. This is a recommended package that:
- Can be installed separately, so upgrading Dokku will not affect the running of this package.
- Automates many of the upgrade instructions for you.
- Provides a clean way for us to further enhance the upgrade process in the future.
When installing from source, this is available from `contrib/dokku-update`, and is also available on Debian and RPM-based systems from our package repositories under the name `dokku-update`.
## Migration Guides
Before upgrading, check the migration guides to get comfortable with new features and prepare your deployment to be upgraded.
@@ -18,14 +39,38 @@ Before upgrading, check the migration guides to get comfortable with new feature
- [0.7 Migration Guide](/docs/appendices/0.7.0-migration-guide.md)
### 0.8 Migration Guide
- [0.8 Migration Guide](/docs/appendices/0.8.0-migration-guide.md)
### 0.9 Migration Guide
- [0.9 Migration Guide](/docs/appendices/0.9.0-migration-guide.md)
### 0.10 Migration Guide
- [0.10 Migration Guide](/docs/appendices/0.10.0-migration-guide.md)
## Upgrade Instructions
If Dokku was installed via `apt-get install dokku` or `bootstrap.sh` (most common), upgrade with:
```shell
# update your local apt cache
sudo apt-get update
dokku --quiet apps | xargs -L1 dokku ps:stop # stops each running app
# stop each running app
# for 0.11.4 and newer versions, use
dokku ps:stopall
# for versions between 0.8.1 and 0.11.3, use
dokku --quiet apps:list | xargs -L1 dokku ps:stop
# for versions versions older than 0.8.1, use
dokku --quiet apps | xargs -L1 dokku ps:stop
# update dokku and its dependencies
sudo apt-get install -qq -y dokku herokuish sshcommand plugn
# rebuild all of your applications
dokku ps:rebuildall # rebuilds all applications
```

View File

@@ -10,32 +10,61 @@
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/style.css" rel="stylesheet">
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
<style>
.sponsors {
background-color: #272822;
color: #FCFCFC;
}
.sponsors a {
color: #f0ad4e;
}
.sponsors .backer img,
.sponsors .sponsor img {
-webkit-border-radius: 3px;
border-radius: 3px;
border: 8px solid gray;
margin: 20px auto 20px auto;
max-width: 192px;
}
.sponsors .backer img {
-webkit-border-radius: 50%;
border-radius: 50%;
border: 0;
}
.sponsors img:hover {
-moz-box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
-webkit-box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
box-shadow: 0px 0px 32px 0px rgba(0,0,0,0.75);
}
.sponsors .fund-link {
display: block;
font-size: .8em;
}
</style>
</head>
<body>
@@ -98,12 +127,12 @@
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.10.2/bootstrap.sh</span>
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.14.3/bootstrap.sh</span>
</p>
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">sudo DOKKU_TAG=v0.10.2 bash bootstrap.sh</span>
<span class="command">sudo DOKKU_TAG=v0.14.3 bash bootstrap.sh</span>
</p>
<p class="line">
<span class="output">&nbsp;# go to your server's IP and follow the web installer</span>
@@ -125,7 +154,7 @@
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">wget -nv -O - https://packagecloud.io/gpg.key | apt-key add -</span>
<span class="command">wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -</span>
</p>
<p class="line">
<span class="path"></span>
@@ -135,7 +164,17 @@
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">echo "deb $SOURCE trusty main" | tee /etc/apt/sources.list.d/dokku.list</span>
<span class="command">export OS_ID="$(lsb_release -cs 2> /dev/null || echo "trusty")"</span>
</p>
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">echo "utopicvividwilyxenialyakketyzestyartfulbionic" | grep -q "$OS_ID" || OS_ID="trusty"</span>
</p>
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">echo "deb $SOURCE $OS_ID main" | tee /etc/apt/sources.list.d/dokku.list</span>
</p>
<p class="line">
<span class="path"></span>
@@ -173,8 +212,8 @@
</div>
<div class="alternate-instructions">
<p>Hate <code>curl | bash</code>? See our official <a href="https://github.com/Azure/azure-quickstart-templates/tree/master/dokku-vm" target="_blank">Azure</a>, <a href="https://www.digitalocean.com/features/one-click-apps/dokku/" target="_blank">DigitalOcean</a>, and <a href="/{{NAME}}~{{REF}}/getting-started/install/dreamhost/">DreamHost Cloud</a> instructions.<p>
<p>Still no love? <a href="https://github.com/dokku/dokku/blob/master/CONTRIBUTING.md" target="_blank">Contributions welcome</a>!</a>
<p>Hate <code>curl | bash</code>? See our official <a href="https://github.com/Azure/azure-quickstart-templates/tree/master/dokku-vm" target="_blank">Azure</a>, <a href="https://www.digitalocean.com/features/one-click-apps/dokku/" target="_blank">DigitalOcean</a>, and <a href="/{{NAME}}~{{REF}}/getting-started/install/dreamhost/">DreamHost Cloud</a> instructions.</p>
<p>Still no love? <a href="https://github.com/dokku/dokku/blob/master/CONTRIBUTING.md" target="_blank">Contributions welcome</a>!</a></p>
</div>
</div>
@@ -226,64 +265,54 @@
</div>
</div>
<div class="container-fluid slack-channel team-members">
<h3>Meet the core team</h3>
<div class="container-fluid slack-channel sponsors">
<h3>Sponsor Dokku</h3>
<div class="row">
<div class="team-member col-md-offset-0 col-md-4 col-sm-offset-2 col-sm-4 col-xs-offset-3 col-xs-6">
<div class="team-member-image">
<img src="./assets/team/progrium-hidden.jpg" alt="Jeff Lindsay">
<img src="./assets/team/progrium.jpg" alt="Jeff Lindsay">
</div>
Jeff Lindsay
<a class="fund-link" href="https://www.patreon.com/progrium">Sponsor people they sponsor</a>
</div>
<div class="team-member col-md-offset-0 col-md-4 col-sm-offset-0 col-sm-4 col-xs-offset-3 col-xs-6">
<div class="team-member-image">
<img src="./assets/team/josegonzalez-hidden.jpg" alt="Morris Jobke">
<img src="./assets/team/josegonzalez.jpg" alt="Morris Jobke">
</div>
Jose Diaz-Gonzalez
<a class="fund-link" href="http://www.amazon.com/registry/wishlist/36RYHSXCFYDTG/">Buy him something nice</a>
</div>
<div class="team-member col-md-offset-0 col-md-4 col-sm-offset-2 col-sm-4 col-xs-offset-3 col-xs-6">
<div class="team-member-image">
<img src="./assets/team/u2mejc-hidden.jpg" alt="Justin Clark">
<img src="./assets/team/u2mejc.jpg" alt="Justin Clark">
</div>
Justin Clark
<a class="fund-link" href="http://smile.amazon.com/registry/wishlist/3SCPXMNI2EIYV">Feed his dog greenie treats!</a>
</div>
<div class="team-member col-md-offset-0 col-md-4 col-sm-offset-0 col-sm-4 col-xs-offset-3 col-xs-6">
<div class="team-member-image">
<img src="./assets/team/flink-hidden.jpg" alt="Loïc Guitaut">
<img src="./assets/team/flink.jpg" alt="Loïc Guitaut">
</div>
Loïc Guitaut
<a class="fund-link" href="https://www.amazon.com/gp/registry/wishlist/23NWY5AVAGGGO/">Build out his star wars collection</a>
</div>
<div class="team-member col-md-offset-0 col-md-4 col-sm-offset-2 col-sm-4 col-xs-offset-3 col-xs-6">
<div class="team-member-image">
<img src="./assets/team/michaelshobbs-hidden.jpg" alt="Michael Hobbs">
<img src="./assets/team/michaelshobbs.jpg" alt="Michael Hobbs">
</div>
Michael Hobbs
<a class="fund-link" href="https://gratipay.com/~michaelshobbs/">Fund on gratipay</a>
</div>
<div class="team-member col-md-offset-0 col-md-4 col-sm-offset-0 col-sm-4 col-xs-offset-3 col-xs-6">
<div class="team-member-image">
<img src="./assets/team/morrisjobke-hidden.jpg" alt="Morris Jobke">
<img src="./assets/team/morrisjobke.jpg" alt="Morris Jobke">
</div>
Morris Jobke
<a class="fund-link" href="">Get him an ebook</a>
<div class="col-md-12">
<p>Here are a few of our sponsors and backers. Join them and <a href="https://opencollective.com/dokku#sponsor" target="_blank">become a sponsor</a> on OpenCollective!</p>
<p class="sponsor">
<a href="https://opencollective.com/dokku/sponsor/0/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/0/avatar.svg" style="max-width: 192px"></a>
<a href="https://opencollective.com/dokku/sponsor/1/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/1/avatar.svg" style="max-width: 192px"></a>
<a href="https://opencollective.com/dokku/sponsor/2/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/2/avatar.svg" style="max-width: 192px"></a>
<a href="https://opencollective.com/dokku/sponsor/3/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/3/avatar.svg" style="max-width: 192px"></a>
</p>
<p class="backer">
<a href="https://opencollective.com/dokku/backer/0/website" target="_blank"><img src="https://opencollective.com/dokku/backer/0/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/1/website" target="_blank"><img src="https://opencollective.com/dokku/backer/1/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/2/website" target="_blank"><img src="https://opencollective.com/dokku/backer/2/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/3/website" target="_blank"><img src="https://opencollective.com/dokku/backer/3/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/4/website" target="_blank"><img src="https://opencollective.com/dokku/backer/4/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/5/website" target="_blank"><img src="https://opencollective.com/dokku/backer/5/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/6/website" target="_blank"><img src="https://opencollective.com/dokku/backer/6/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/7/website" target="_blank"><img src="https://opencollective.com/dokku/backer/7/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/8/website" target="_blank"><img src="https://opencollective.com/dokku/backer/8/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/9/website" target="_blank"><img src="https://opencollective.com/dokku/backer/9/avatar.svg"></a>
</p>
<p class="backer">
<a href="https://opencollective.com/dokku/backer/10/website" target="_blank"><img src="https://opencollective.com/dokku/backer/10/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/11/website" target="_blank"><img src="https://opencollective.com/dokku/backer/11/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/12/website" target="_blank"><img src="https://opencollective.com/dokku/backer/12/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/13/website" target="_blank"><img src="https://opencollective.com/dokku/backer/13/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/14/website" target="_blank"><img src="https://opencollective.com/dokku/backer/14/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/15/website" target="_blank"><img src="https://opencollective.com/dokku/backer/15/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/16/website" target="_blank"><img src="https://opencollective.com/dokku/backer/16/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/17/website" target="_blank"><img src="https://opencollective.com/dokku/backer/17/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/18/website" target="_blank"><img src="https://opencollective.com/dokku/backer/18/avatar.svg"></a>
<a href="https://opencollective.com/dokku/backer/19/website" target="_blank"><img src="https://opencollective.com/dokku/backer/19/avatar.svg"></a>
</p>
<p>You can also <a href="https://www.patreon.com/dokku" target="_blank">back us anonymously</a> on Patreon.</p>
</div>
</div>
</div>
<div class="container">
<footer>
<p>&copy; 2013-2017 Dokku</p>
<p>&copy; 2013-2019 Dokku</p>
</footer>
</div>
<script>

View File

@@ -24,20 +24,19 @@ Please remember that DNS relies heavily on _caching_. Changes you make to DNS c
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
For the examples, we will use the domain name `example.tld` and the IP address `127.0.0.1`.
Dokku uses DNS to differentiate between apps on your dokku-powered server. If you are using the domain `example.tld`, and you have two apps `myapp1` and `myapp2`, Dokku will make them available at `myapp1.example.tld` and `myapp2.example.tld`.
Dokku uses DNS to differentiate between apps on your dokku-powered server. If you are using the domain `example.tld`, and you have two apps `node-js-app1` and `node-js-app2`, Dokku will make them available at `node-js-app1.example.tld` and `node-js-app2.example.tld`.
To get started, you need to know the IP address of your Dokku server. Connect to it and run `ifconfig` or `ip addr` to see the IP address.
Now you have to make a decision about your domain. Do you want everything and anything at `example.tld` to go to your Dokku server, or would you rather use a 'sub domain' for your Dokku server?
In other words, do you want your applications on your Dokku server accessible via `myapp.example.tld` or via `myapp.myserver.example.tld`?
In other words, do you want your applications on your Dokku server accessible via `node-js-app.example.tld` or via `node-js-app.myserver.example.tld`?
#### Using a sub-domain (myapp.myserver.example.tld)
#### Using a sub-domain (node-js-app.myserver.example.tld)
Using a sub-domain is easy. When you set up your server, you probably gave it a name like `myserver.example.tld`.
@@ -72,11 +71,11 @@ If they all return your IP address, you have set DNS up properly for dokku. You
Proceed with the setup instructions in the [installation documentation](/docs/getting-started/installation.md)
#### Using the root of your domain (myapp.example.tld)
#### Using the root of your domain (node-js-app.example.tld)
This section is a work in progress. It is incomplete.
Using the 'root' of your domain is nearly identical to the previous example.
* hostname is under `example.tld`, still needs `A` record
* Need to modify `/home/dokku/HOSTNAME` and `/home/dokku/VHOST`
* hostname is under `example.tld`, still needs `A` record.
* Update your global domain using the [domains plugin](docs/configuration/domains.md).

124
docs/networking/network.md Normal file
View File

@@ -0,0 +1,124 @@
# Network Management
> New as of 0.11.0
```
network:report [<app>] [<flag>] # Displays a network report for one or more apps
network:rebuild <app> # Rebuilds network settings for an app
network:rebuildall # Rebuild network settings for all apps
network:set <app> <key> (<value>) # Set or clear a network property for an app
```
The Network plugin allows developers to abstract the concept of container network management, allowing developers to both change what networks a given container is attached to as well as rebuild the configuration on the fly.
## Usage
### Rebuilding network settings
There are cases where you may need to rebuild the network configuration for an app, such as on app boot or container restart. In these cases, you can use the `network:rebuild` command:
```shell
dokku network:rebuild node-js-app
```
> This command will exit a non-zero number that depends on the number of containers for which configuration could not be built
### Rebuilding all network settings
In some cases, a docker upgrade may reset container IPs or Ports. In both cases, you can quickly rewrite those files by using the `network:rebuildall` command:
```shell
dokku network:rebuildall
```
> This command will exit a non-zero number that depends on the number of containers for which configuration could not be built
### Container network interface binding
> This functionality does not control the `--network` docker flag. Please use the [docker-options plugin](docs/advanced-usage/docker-options.md) to manage this flag.
By default, an application will only bind to the internal interface. This behavior can be modified per app by changing the `bind-all-interfaces` network property.
```shell
# bind to the default docker interface (`docker0`) with a random internal ip
# this is the default behavior
dokku network:set node-js-app bind-all-interfaces false
# bind to all interfaces (`0.0.0.0`) on a random port for each upstream port
# this will make the app container directly accessible by other hosts on your network
# ports are randomized for every deploy, e.g. `0.0.0.0:32771->5000/tcp`.
dokku network:set node-js-app bind-all-interfaces true
```
By way of example, in the default case, each container is bound to the docker interface:
```shell
docker ps
```
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b88d8aec3d1 dokku/node-js-app:latest "/bin/bash -c '/star About a minute ago Up About a minute node-js-app.web.1
```
As such, the container's IP address will be an internal IP, and thus it is only accessible on the host itself:
```
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' node-js-app.web.1
```
```
172.17.0.6
```
However, you can disable the internal proxying via the `network:set` command so that it will listen on the host's IP address:
```shell
dokku network:set node-js-app bind-all-interfaces true
# container bound to all interfaces
docker ps
```
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6499edb0edb dokku/node-js-app:latest "/bin/bash -c '/star About a minute ago Up About a minute 0.0.0.0:49153->5000/tcp node-js-app.web.1
```
### Displaying network reports about an app
You can get a report about the app's network status using the `network:report` command:
```shell
dokku network:report
```
```
=====> node-js-app network information
Network bind all interfaces: false
Network listeners: 172.17.0.1:5000
=====> python-sample network information
Network bind all interfaces: false
Network listeners: 172.17.0.2:5000
=====> ruby-sample network information
Network bind all interfaces: true
Network listeners:
```
You can run the command for a specific app also.
```shell
dokku network:report node-js-app
```
```
=====> node-js-app network information
Network bind all interfaces: false
Network listeners: 172.17.0.1:5000
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku network:report node-js-app --network-bind-all-interfaces
```

View File

@@ -0,0 +1,178 @@
# Port Management
> New as of 0.5.0, Enhanced in 0.6.0
```
proxy:ports <app> # List proxy port mappings for app
proxy:ports-set <app> <scheme>:<host-port>:<container-port> [<scheme>:<host-port>:<container-port>...] # Set proxy port mappings for app
proxy:ports-add <app> <scheme>:<host-port>:<container-port> [<scheme>:<host-port>:<container-port>...] # Add proxy port mappings for app
proxy:ports-clear <app> # Clear all proxy port mappings for app
proxy:ports-remove <app> <host-port> [<host-port>|<scheme>:<host-port>:<container-port>...] # Unset proxy port mappings for app
```
In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into the proxy plugin. Dokku 0.6.0 introduced the ability to map host ports to specific container ports. In the future this will allow other proxy software - such as HAProxy or Caddy - to be used in place of nginx.
## Usage
### Proxy port mapping
> New as of 0.6.0
You can now configure `host -> container` port mappings with the `proxy:ports-*` commands. This mapping is currently supported by the built-in nginx-vhosts plugin.
To inspect the port mapping for a given application, use the `proxy:ports` command:
```shell
dokku proxy:ports node-js-app
```
```
-----> Port mappings for node-js-app
-----> scheme host port container port
http 80 5000
```
The above application is listening on the host's port `80`, which we can test via curl:
```shell
curl http://node-js-app.dokku.me
```
```
Hello World!
```
There are cases where we may wish for the service to be listening on more than one port, such as port 8080. Normally, this would not be possible:
```shell
curl http://node-js-app.dokku.me:8080
```
```
curl: (7) Failed to connect to node-js-app.dokku.me port 8080: Connection refused
```
However, we can use the `proxy:ports-add` command to add a second external port mapping - `8080` - to our application's port `5000`.
```shell
dokku proxy:ports-add node-js-app http:8080:5000
```
```
-----> Setting config vars
DOKKU_PROXY_PORT_MAP: http:80:5000 http:8080:5000
-----> Configuring node-js-app.dokku.me...(using built-in template)
-----> Creating http nginx.conf
-----> Running nginx-pre-reload
Reloading nginx
```
We can now test that port 80 still responds properly:
```shell
curl http://node-js-app.dokku.me
```
```
Hello World!
```
And our new listening port of `8080` also works:
```shell
curl http://node-js-app.dokku.me:8080
```
```
Hello World!
```
Port mappings can also be force set using the `proxy:ports-set` command.
```shell
dokku proxy:ports-set node-js-app http:8080:5000
```
```
-----> Setting config vars
DOKKU_PROXY_PORT_MAP: http:80:5000 http:8080:5000
-----> Configuring node-js-app.dokku.me...(using built-in template)
-----> Creating http nginx.conf
-----> Running nginx-pre-reload
Reloading nginx
```
A port mapping can be removed using the `proxy:ports-remove` command if it no longer necessary:
```shell
dokku proxy:ports-remove node-js-app http:80:5000
```
By default, buildpack apps and dockerfile apps **without** explicitly exposed ports (i.e. using the `EXPOSE` directive) will be configured with a listener on port `80` (and additionally a listener on 443 if ssl is enabled) that will proxy to the application container on port `5000`. Dockerfile apps **with** explicitly exposed ports will be configured with a listener on each exposed port and will proxy to that same port of the deployed application container.
> Note: This default behavior **will not** be automatically changed on subsequent pushes and must be manipulated with the `proxy:ports-*` syntax detailed above.
## Port management by Deployment Method
> Warning: If you set a proxy port map but _do not have a global domain set_, Dokku will reset that map upon first deployment.
### Buildpacks
For buildpack deployments, your application *must* respect the `PORT` environment variable. We will typically set this to port `5000`, but this is not guaranteed. If you do not respect the `PORT` environment variable, your containers may start but your services will not be accessible outside of that container.
### Dockerfile
> Changed as of 0.5.0
Dokku's default proxy implementation - nginx - only supports HTTP request proxying. At this time, we do not support proxying plain TCP or UDP ports. UDP ports can be exposed by disabling the nginx proxy with `dokku proxy:disable myapp`. If you would like to investigate alternative proxy methods, please refer to our [proxy management documentation](/docs/advanced-usage/proxy-management.md).
#### Applications using EXPOSE
Dokku will extract all tcp ports exposed using the `EXPOSE` directive (one port per line) and setup nginx to proxy the same port numbers to listen publicly. If you would like to change the exposed port, you should do so within your `Dockerfile`.
For example, if the Dokku installation is configured with the domain `dokku.me` and an application named `node-js-app` is deployed with following Dockerfile:
```
FROM ubuntu:14.04
EXPOSE 1234
RUN python -m SimpleHTTPServer 1234
```
The application would be exposed to the user at `node-js-app.dokku.me:1234`. If this is not desired, the following application configuration may be applied:
```shell
# add a port mapping to port 80
dokku proxy:ports-add node-js-app http:80:1234
# remove the incorrect port mapping
dokku proxy:ports-remove node-js-app http:1234:1234
```
#### Applications not using EXPOSE
Any application that does not use an `EXPOSE` directive will result in Dokku defaulting to port `5000`. This behavior mimics the behavior of a Buildpack deploy. If your application _does not_ support the `PORT` environment variable, then you will either need to:
- modify your application to support the `PORT` environment variable.
- switch to using an `EXPOSE` directive in your Dockerfile.
#### Switching between `EXPOSE` usage modes
When switching between `EXPOSE` usage modes, it is important to reset your port management. The following two commands can be used to reset your state and redeploy your application.
```shell
# assuming your application is called `node-js-app`
dokku config:unset --no-restart node-js-app DOKKU_DOCKERFILE_PORTS PORT
dokku proxy:ports-clear node-js-app
```
### Docker Image
When deploying an image, we will use `docker inspect` to extract the `ExposedPorts` configuration and if defined, use that to populate port mapping. If this behavior is not desired, you can override that configuration variable with the following commands.
```shell
# assuming your application is called `node-js-app`
dokku config:set node-js-app DOKKU_DOCKERFILE_PORTS="1234/tcp 80/tcp"
dokku proxy:ports-clear node-js-app
```
All other port-related behavior is the same as when deploying via Dockerfile.

View File

@@ -0,0 +1,86 @@
# Proxy Management
> New as of 0.5.0, Enhanced in 0.6.0
```
proxy:disable <app> # Disable proxy for app
proxy:enable <app> # Enable proxy for app
proxy:report [<app>] [<flag>] # Displays a proxy report for one or more apps
proxy:set <app> <proxy-type> # Set proxy type for app
```
In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into the proxy plugin. Dokku 0.6.0 introduced the ability to map host ports to specific container ports. In the future this will allow other proxy software - such as HAProxy or Caddy - to be used in place of nginx.
## Usage
### Container network interface binding
> Changed as of 0.11.0
From Dokku versions `0.5.0` until `0.11.0`, enabling or disabling an application's proxy would **also** control whether or not the application was bound to all interfaces - e.g. `0.0.0.0`. As of `0.11.0`, this is now controlled by the network plugin. Please see the [network documentation](/docs/networking/network.md#container-network-interface-binding) for more information.
### Displaying proxy reports about an app
> New as of 0.8.1
You can get a report about the app's proxy status using the `proxy:report` command:
```shell
dokku proxy:report
```
```
=====> node-js-app proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000 https:443:5000
=====> python-sample proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000
=====> ruby-sample proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000
```
You can run the command for a specific app also.
```shell
dokku proxy:report node-js-app
```
```
=====> node-js-app proxy information
Proxy enabled: true
Proxy type: nginx
Proxy port map: http:80:5000 https:443:5000
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku proxy:report node-js-app --proxy-type
```
#### Proxy Port Scheme
The proxy port scheme is as follows:
- `SCHEME:HOST_PORT:CONTAINER_PORT`
The scheme metadata can be used by proxy implementations in order to properly handle proxying of requests. For example, the built-in `nginx-vhosts` proxy implementation supports both the `http` and `https` schemes.
Developers of proxy implementations are encouraged to use whatever schemes make the most sense, and ignore configurations which they do not support. For instance, a `udp` proxy implementation can safely ignore `http` and `https` port mappings.
To change the proxy implementation in use for an application, use the `proxy:set` command:
```shell
# no validation will be performed against
# the specified proxy implementation
dokku proxy:set node-js-app nginx
```
### Proxy port mapping
See the [port management documentation](/docs/networking/port-management.md).

View File

@@ -9,26 +9,26 @@
<meta name="author" content="">
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<script>
@@ -42,7 +42,7 @@
</script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.rawgit.com/dokku/dokku/v0.10.2/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.14.3/docs/assets/style.css" rel="stylesheet">
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
<style>
@@ -131,16 +131,23 @@
<a href="/{{NAME}}/deployment/methods/buildpacks/" class="list-group-item">Buildpack Deployment</a>
<a href="/{{NAME}}/deployment/methods/dockerfiles/" class="list-group-item">Dockerfile Deployment</a>
<a href="/{{NAME}}/deployment/methods/images/" class="list-group-item">Docker Image Deployment</a>
<a href="/{{NAME}}/deployment/methods/git/" class="list-group-item">Git Deployment</a>
<a href="/{{NAME}}/deployment/methods/tar/" class="list-group-item">Tarfile Deployment</a>
<a href="#" class="list-group-item disabled">Configuration</a>
<a href="/{{NAME}}/configuration/environment-variables/" class="list-group-item">Environment Variables</a>
<a href="/{{NAME}}/configuration/dns/" class="list-group-item">DNS Configuration</a>
<a href="/{{NAME}}/configuration/domains/" class="list-group-item">Domain Configuration</a>
<a href="/{{NAME}}/configuration/nginx/" class="list-group-item">Nginx Configuration</a>
<a href="/{{NAME}}/configuration/ssl/" class="list-group-item">SSL Configuration</a>
<a href="#" class="list-group-item disabled">Network Management</a>
<a href="/{{NAME}}/networking/dns/" class="list-group-item">DNS Configuration</a>
<a href="/{{NAME}}/networking/network/" class="list-group-item">Network Management</a>
<a href="/{{NAME}}/networking/port-management/" class="list-group-item">Port Management</a>
<a href="/{{NAME}}/networking/proxy-management/" class="list-group-item">Proxy Management</a>
<a href="#" class="list-group-item disabled">Advanced Usage</a>
<a href="/{{NAME}}/advanced-usage/backup-recovery/" class="list-group-item">Backup and Recovery</a>
@@ -149,13 +156,11 @@
<a href="/{{NAME}}/advanced-usage/event-logs/" class="list-group-item">Event Logs</a>
<a href="/{{NAME}}/advanced-usage/persistent-storage/" class="list-group-item">Persistent Storage</a>
<a href="/{{NAME}}/advanced-usage/plugin-management/" class="list-group-item">Plugin Management</a>
<a href="/{{NAME}}/advanced-usage/proxy-management/" class="list-group-item">Proxy and Port Management</a>
<a href="/{{NAME}}/advanced-usage/repository-management/" class="list-group-item">Repository Management</a>
<a href="#" class="list-group-item disabled">Community Contributions</a>
<a href="#" class="list-group-item disabled">Schedulers</a>
<a href="/{{NAME}}/community/clients/" class="list-group-item">Clients</a>
<a href="/{{NAME}}/community/plugins/" class="list-group-item">Plugins</a>
<a href="/{{NAME}}/advanced-usage/schedulers/docker-local/" class="list-group-item">Docker Local</a>
<a href="#" class="list-group-item disabled">Development</a>
@@ -163,6 +168,14 @@
<a href="/{{NAME}}/development/plugin-triggers/" class="list-group-item">Plugin Triggers</a>
<a href="/{{NAME}}/development/testing/" class="list-group-item">Running Tests</a>
<a href="/{{NAME}}/development/release-process/" class="list-group-item">Release Process</a>
<a href="#" class="list-group-item disabled">Community Contributions</a>
<a href="/{{NAME}}/community/clients/" class="list-group-item">Clients</a>
<a href="/{{NAME}}/community/plugins/" class="list-group-item">Plugins</a>
<a href="#" class="list-group-item disabled">Community Tutorials</a>
<a href="/{{NAME}}/community/tutorials/deploying-with-gitlab-ci/" class="list-group-item">Deploying with Gitlab CI</a>
<a href="/{{NAME}}/community/tutorials/run-on-external-volume/" class="list-group-item">Run on External Volume</a>
</div>
</div>
</div>
@@ -370,7 +383,10 @@
}
Array.prototype.forEach.call(blockquotes, function (el, i) {
if (el.innerHTML.toLowerCase().indexOf('new as of') !== -1) {
if (el.innerHTML.toLowerCase().indexOf('warning') !== -1) {
addClass(el, 'warning');
el.innerHTML = el.innerHTML.replace('Warning', '<strong>Warning</strong>')
} else if (el.innerHTML.toLowerCase().indexOf('new as of') !== -1) {
addClass(el, 'new-as-of');
} else if (el.innerHTML.toLowerCase().indexOf('not yet released') !== -1) {
addClass(el, 'not-yet-released');

View File

@@ -15,16 +15,19 @@
"deployment/images": "deployment/methods/images/",
"configuration-management": "configuration/environment-variables/",
"deployment/ssl-configuration": "configuration/ssl/",
"dns": "configuration/dns/",
"nginx": "configuration/nginx/",
"dns": "networking/dns/",
"configuration/dns": "networking/dns/",
"proxy": "networking/proxy-management/",
"advanced-usage/proxy-management": "networking/proxy-management/",
"backup-recovery": "advanced-usage/backup-recovery/",
"deployment-tasks": "advanced-usage/deployment-tasks/",
"deployment/deployment-tasks": "advanced-usage/deployment-tasks/",
"docker-options": "advanced-usage/docker-options/",
"dokku-events-logs": "advanced-usage/event-logs/",
"dokku-storage": "advanced-usage/persistent-storage/",
"proxy": "advanced-usage/proxy-management/",
"plugins": "community/plugins/"
}

93
dokku
View File

@@ -2,14 +2,39 @@
set -eo pipefail
shopt -s nullglob
if [[ -r /etc/default/dokku ]]; then
# shellcheck disable=SC1091
source /etc/default/dokku
fi
export DOKKU_ROOT=${DOKKU_ROOT:=~dokku}
[[ -f $DOKKU_ROOT/dokkurc ]] && source "$DOKKU_ROOT/dokkurc"
[[ -d $DOKKU_ROOT/.dokkurc ]] && for f in $DOKKU_ROOT/.dokkurc/*; do source "$f"; done
if [[ -f "$DOKKU_ROOT/dokkurc" ]]; then
if [[ -r $DOKKU_ROOT/dokkurc ]]; then
source "$DOKKU_ROOT/dokkurc"
else
echo "Unable to read $DOKKU_ROOT/dokkurc for sourcing" 1>&2
exit 1
fi
fi
if [[ -d $DOKKU_ROOT/.dokkurc ]]; then
for f in $DOKKU_ROOT/.dokkurc/*; do
if [[ -r "$f" ]]; then
source "$f"
else
echo "Unable to read $f for sourcing" 1>&2
exit 1
fi
done
fi
[[ $DOKKU_TRACE ]] && set -x
export DOKKU_HOST_ROOT=${DOKKU_HOST_ROOT:=$DOKKU_ROOT}
export DOKKU_DISTRO
# shellcheck disable=SC1091
DOKKU_DISTRO=$(. /etc/os-release > /dev/null 2>&1 || true ; echo "$ID")
DOKKU_DISTRO=$(
. /etc/os-release >/dev/null 2>&1 || true
echo "$ID"
)
export DOKKU_IMAGE=${DOKKU_IMAGE:="gliderlabs/herokuish"}
export DOKKU_LIB_ROOT=${DOKKU_LIB_PATH:="/var/lib/dokku"}
@@ -20,6 +45,8 @@ export PLUGIN_ENABLED_PATH=${PLUGIN_ENABLED_PATH:="$PLUGIN_PATH/enabled"}
export PLUGIN_CORE_PATH=${PLUGIN_CORE_PATH:="$DOKKU_LIB_ROOT/core-plugins"}
export PLUGIN_CORE_AVAILABLE_PATH=${PLUGIN_CORE_AVAILABLE_PATH:="$PLUGIN_CORE_PATH/available"}
export PLUGIN_CORE_ENABLED_PATH=${PLUGIN_CORE_ENABLED_PATH:="$PLUGIN_CORE_PATH/enabled"}
export DOKKU_SYSTEM_GROUP=${DOKKU_SYSTEM_GROUP:="dokku"}
export DOKKU_SYSTEM_USER=${DOKKU_SYSTEM_USER:="dokku"}
export DOKKU_API_VERSION=1
export DOKKU_NOT_IMPLEMENTED_EXIT=10
@@ -79,7 +106,7 @@ if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; then
fi
fi
if ! dokku_auth "$@" ; then
if ! dokku_auth "$@"; then
dokku_log_fail "Access denied"
exit 1
fi
@@ -88,25 +115,26 @@ execute_dokku_cmd() {
declare desc="executes dokku sub-commands"
local PLUGIN_NAME="$1"
local PLUGIN_CMD=$PLUGIN_NAME
local implemented=0; local script
local implemented=0
local script
local argv=("$@")
case "$PLUGIN_NAME" in
events|events:*)
events | events:*)
local PLUGIN_NAME=${PLUGIN_NAME/events/20_events}
;;
nginx|nginx:*)
nginx | nginx:*)
local PLUGIN_NAME=${PLUGIN_NAME/nginx/nginx-vhosts}
;;
deploy|delete|ls|run|cleanup)
deploy | delete | ls | run | cleanup)
local PLUGIN_NAME="00_dokku-standard"
;;
trace|url|urls|report|version)
trace | url | urls | report | version)
local PLUGIN_NAME="00_dokku-standard"
;;
esac
if [[ "$(readlink -f "$PLUGIN_ENABLED_PATH/${PLUGIN_NAME%%:*}")" == *core-plugins* ]] ; then
if [[ "$(readlink -f "$PLUGIN_ENABLED_PATH/${PLUGIN_NAME%%:*}")" == *core-plugins* ]]; then
[[ ${argv[0]} == "$PLUGIN_CMD" ]] && shift 1
if [[ ! -z $DOKKU_APP_NAME ]]; then
if [[ "$PLUGIN_CMD" == config* ]] && [[ ${argv[1]} == "--no-restart" ]]; then
@@ -125,14 +153,17 @@ execute_dokku_cmd() {
elif [[ -x $PLUGIN_ENABLED_PATH/$PLUGIN_NAME/subcommands/$PLUGIN_CMD ]]; then
"$PLUGIN_ENABLED_PATH/$PLUGIN_NAME/subcommands/$PLUGIN_CMD" "$@"
implemented=1
elif [[ -x $PLUGIN_ENABLED_PATH/${PLUGIN_NAME%%:*}/subcommands/${1#*:} ]]; then
elif [[ -x $PLUGIN_ENABLED_PATH/${PLUGIN_NAME%%:*}/subcommands/${1#*:} ]] && [[ -n "${1#*:}" ]]; then
"$PLUGIN_ENABLED_PATH/${PLUGIN_NAME%%:*}/subcommands/${1#*:}" "$@"
implemented=1
fi
if [[ $implemented -eq 0 ]];then
if [[ $implemented -eq 0 ]]; then
for script in $PLUGIN_ENABLED_PATH/*/commands; do
set +e; $script "$@" ; exit_code=$? ; set -e
set +e
$script "$@"
exit_code=$?
set -e
if [[ "$exit_code" -eq "$DOKKU_NOT_IMPLEMENTED_EXIT" ]]; then
continue
fi
@@ -151,50 +182,50 @@ execute_dokku_cmd() {
}
case "$1" in
help|'')
help | '')
export LC_ALL=C # so sort will respect non alpha characters
ALL_PLUGIN_COMMANDS=$(find -L "$PLUGIN_PATH/enabled" -name commands 2> /dev/null || true)
ALL_PLUGIN_COMMANDS=$(find -L "$PLUGIN_PATH/enabled" -name commands 2>/dev/null || true)
# build list of core plugin command files
for plugin_command in $ALL_PLUGIN_COMMANDS;do
for plugin_command in $ALL_PLUGIN_COMMANDS; do
if [[ "$(readlink -f "$plugin_command")" == *core-plugins* ]]; then
CORE_PLUGIN_COMMANDS+="$plugin_command "
fi
done
# build list of non-core plugin command files
for plugin_command in $ALL_PLUGIN_COMMANDS;do
for plugin_command in $ALL_PLUGIN_COMMANDS; do
if [[ "$(readlink -f "$plugin_command")" != *core-plugins* ]]; then
COMMUNITY_PLUGIN_COMMANDS+="$plugin_command "
fi
done
# New lines are blank echos for readability
echo "Usage: dokku [--quiet|--trace|--rm-container|--rm|--force] COMMAND <app> [command-specific-options]"
echo ""
echo "Primary help options, type \"dokku COMMAND:help\" for more details, or dokku help --all to see all commands."
echo ""
echo "Commands:"
echo ""
dokku_log_quiet "Usage: dokku [--quiet|--trace|--rm-container|--rm|--force] COMMAND <app> [command-specific-options]"
dokku_log_quiet ""
dokku_log_quiet "Primary help options, type \"dokku COMMAND:help\" for more details, or dokku help --all to see all commands."
dokku_log_quiet ""
dokku_log_quiet "Commands:"
dokku_log_quiet ""
if [[ "$2" == "--all" ]] ; then
if [[ "$2" == "--all" ]]; then
for core_plugin_command in $CORE_PLUGIN_COMMANDS; do
$core_plugin_command help
done | sort | column -c2 -t -s,
echo ""
echo "Community plugin commands:"
echo ""
dokku_log_quiet ""
dokku_log_quiet "Community plugin commands:"
dokku_log_quiet ""
for community_plugin_command in $COMMUNITY_PLUGIN_COMMANDS; do
$community_plugin_command help
done | sort | column -c2 -t -s,
else
for core_plugin_command in $CORE_PLUGIN_COMMANDS; do
$core_plugin_command help
# When done, sort, sed cuts arugments out of strings and colum make it pretty
# When done, sort, sed cuts arugments out of strings and colum make it pretty
done | sort | sed -e '/^.*:/d' -e 's/\s[\[\<\-\(].*,/,/' | column -c2 -t -s,
if [[ -n "$COMMUNITY_PLUGIN_COMMANDS" ]]; then
echo ""
echo "Community plugin commands:"
echo ""
dokku_log_quiet ""
dokku_log_quiet "Community plugin commands:"
dokku_log_quiet ""
for community_plugin_command in $COMMUNITY_PLUGIN_COMMANDS; do
$community_plugin_command help
done | sort | column -c2 -t -s,

View File

@@ -1,15 +1,15 @@
#!/usr/bin/env bash
[[ " help help:help ls:help run:help trace:help url:help urls:help version:help " == *" $1 "* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
[[ " help help:help run:help trace:help url:help urls:help version:help " == *" $1 "* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
case "$1" in
help|ls:help|run:help|trace:help|url:help|urls:help|version:help)
help | run:help | trace:help | url:help | urls:help | version:help)
[[ $(echo "$1" | sed '/.*:help/!d') ]] && help_topic="${1%\:help}"
help_content_func () {
help_content_func() {
declare desc="return standard plugin help content"
cat<<help_content
ls , Pretty listing of deployed applications and containers
run <app> <cmd>, Run a command in the environment of an application
cat <<help_content
run <app> <cmd>, Run a command in a new container using the current application image
trace [on/off], Enable dokku tracing
url <app>, Show the first URL for an application (compatibility)
urls <app>, Show all URLs for an application
@@ -18,10 +18,10 @@ case "$1" in
help_content
}
if [[ $help_topic ]] ; then
help_content_func | sed "/^\s*$help_topic\s/!d" | sort | sed '/^.*:/d' | column -c2 -t -s,
if [[ $help_topic ]]; then
help_content_func | sed "/^\s*$help_topic\s/!d" | sort | sed '/^.*:/d' | column -c2 -t -s,
else
help_content_func
help_content_func
fi
;;

View File

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

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_AVAILABLE_PATH/config/functions"
app_user_docker_args() {

View File

@@ -1,82 +0,0 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
get_phase_script() {
declare desc="extracts app.json from app image and returns the appropriate json key/value"
local IMAGE="$1"; local PHASE_SCRIPT_KEY="$2"
local GET_PHASE_SCRIPT_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku_get_phase_script.XXXX")
local APP_JSON_FILE="$GET_PHASE_SCRIPT_TMP_WORK_DIR/app.json"
trap 'rm -rf "$GET_PHASE_SCRIPT_TMP_WORK_DIR" > /dev/null' RETURN INT TERM
copy_from_image "$IMAGE" "app.json" "$GET_PHASE_SCRIPT_TMP_WORK_DIR" 2>/dev/null || true
if [[ -f "$APP_JSON_FILE" ]];then
local VALUE=$(get_json_value "scripts.dokku.${PHASE_SCRIPT_KEY}" < "$APP_JSON_FILE")
else
return 0
fi
echo "$VALUE"
}
execute_script() {
declare desc="executes appropriate phase script key from app.json"
local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG")
local PHASE_SCRIPT_KEY="$3"
local SCRIPT_CMD=$(get_phase_script "$IMAGE" "$PHASE_SCRIPT_KEY" 2>/dev/null)
if [[ -n "$SCRIPT_CMD" ]];then
dokku_log_info1 "Running '$SCRIPT_CMD' in app container"
local COMMAND
COMMAND="set -eo pipefail; [[ \$DOKKU_TRACE ]] && set -x ; "
COMMAND+=" if [[ -d '/app' ]]; then "
COMMAND+=" export HOME=/app ; "
COMMAND+=" cd \$HOME ; "
COMMAND+=" fi ; "
COMMAND+=" if [[ -d '/app/.profile.d' ]]; then "
COMMAND+=" for file in /app/.profile.d/*; do source \$file; done ; "
COMMAND+=" fi ; "
COMMAND+=" if [[ -d '/cache' ]]; then "
COMMAND+=" echo restoring installation cache... ; "
COMMAND+=" rm -rf /tmp/cache ; "
COMMAND+=" ln -sf /cache /tmp/cache ; "
COMMAND+=" fi ; "
COMMAND+=" $SCRIPT_CMD || exit 1;"
COMMAND+=" if [[ -d '/cache' ]]; then "
COMMAND+=" echo removing installation cache... ; "
COMMAND+=" rm -f /tmp/cache ; "
COMMAND+=" fi "
local CACHE_DIR="$DOKKU_ROOT/$APP/cache"
[[ -d $CACHE_DIR ]] || mkdir -p "$CACHE_DIR"
local DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG")
# strip --restart args from DOCKER_ARGS
local DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<< "$DOCKER_ARGS")
# shellcheck disable=SC2086
local id=$(docker run "$DOKKU_GLOBAL_RUN_ARGS" -e DOKKU_TRACE="$DOKKU_TRACE" --label=dokku_phase_script="${PHASE_SCRIPT_KEY}" -d -v "$CACHE_DIR:/cache" $DOCKER_ARGS "$IMAGE" /bin/bash -c "$COMMAND")
if test "$(docker wait "$id")" -eq 0; then
dokku_container_log_verbose_quiet "$id"
if [[ "$PHASE_SCRIPT_KEY" != "postdeploy" ]];then
if ! is_image_herokuish_based "$IMAGE"; then
local DOKKU_DOCKERFILE_ENTRYPOINT=$(config_get "$APP" DOKKU_DOCKERFILE_ENTRYPOINT)
local DOKKU_DOCKERFILE_CMD=$(config_get "$APP" DOKKU_DOCKERFILE_CMD)
[[ -z "$DOKKU_DOCKERFILE_ENTRYPOINT" ]] && DOKKU_DOCKERFILE_ENTRYPOINT="$(get_entrypoint_from_image "$IMAGE")"
[[ -z "$DOKKU_DOCKERFILE_CMD" ]] && DOKKU_DOCKERFILE_CMD="$(get_cmd_from_image "$IMAGE")"
[[ -n "$DOKKU_DOCKERFILE_ENTRYPOINT" ]] && local DOCKER_COMMIT_ENTRYPOINT_CHANGE_ARG="--change='$DOKKU_DOCKERFILE_ENTRYPOINT'"
[[ -n "$DOKKU_DOCKERFILE_CMD" ]] && local DOCKER_COMMIT_CMD_CHANGE_ARG="--change='$DOKKU_DOCKERFILE_CMD'"
local DOCKER_COMMIT_ARGS="$DOCKER_COMMIT_ENTRYPOINT_CHANGE_ARG $DOCKER_COMMIT_CMD_CHANGE_ARG"
fi
# shellcheck disable=SC2086
eval docker commit $DOCKER_COMMIT_ARGS "$id" "$IMAGE" > /dev/null
fi
else
dokku_container_log_verbose_quiet "$id"
dokku_log_fail "execution of '$SCRIPT_CMD' failed!"
fi
fi
}

View File

@@ -1,20 +1,21 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
if [[ ! -f "$DOKKU_ROOT/HOSTNAME" ]]; then
hostname -f > "$DOKKU_ROOT/HOSTNAME"
if [[ ! -f "$DOKKU_ROOT/HOSTNAME" ]]; then
hostname -f >"$DOKKU_ROOT/HOSTNAME"
fi
if [[ ! -f "$DOKKU_ROOT/VHOST" ]]; then
[[ $(dig +short "$(< "$DOKKU_ROOT/HOSTNAME")") ]] && cp "$DOKKU_ROOT/HOSTNAME" "$DOKKU_ROOT/VHOST"
if [[ ! -f "$DOKKU_ROOT/VHOST" ]]; then
[[ $(dig +short "$(<"$DOKKU_ROOT/HOSTNAME")") ]] && cp "$DOKKU_ROOT/HOSTNAME" "$DOKKU_ROOT/VHOST"
fi
dokku_path=$(which dokku)
dokku_path="$(which dokku)"
# temporary hack for https://github.com/dokku/dokku/issues/82
# redeploys all apps after a reboot
if [[ $(/sbin/init --version 2> /dev/null) =~ upstart ]]; then
cat<<EOF > /etc/init/dokku-redeploy.conf
if [[ $(/sbin/init --version 2>/dev/null) =~ upstart ]]; then
cat <<EOF >/etc/init/dokku-redeploy.conf
description "Dokku app redeploy service"
start on filesystem and started docker
@@ -26,8 +27,8 @@ end script
EOF
fi
if [[ $(systemctl 2> /dev/null) =~ -\.mount ]]; then
cat<<EOF > /etc/systemd/system/dokku-redeploy.service
if [[ $(systemctl 2>/dev/null) =~ -\.mount ]]; then
cat <<EOF >/etc/systemd/system/dokku-redeploy.service
[Unit]
Description=Dokku app redeploy service
Requires=docker.service
@@ -39,15 +40,15 @@ User=dokku
ExecStart=$dokku_path ps:restore
[Install]
WantedBy=multi-user.target
WantedBy=docker.service
EOF
if command -v systemctl &>/dev/null; then
systemctl enable dokku-redeploy
systemctl --quiet reenable dokku-redeploy
fi
fi
mkdir -p /etc/update-motd.d
cat<<EOF > /etc/update-motd.d/99-dokku
cat <<EOF >/etc/update-motd.d/99-dokku
#!/bin/sh
if [ ! -f "/home/dokku/HOSTNAME" ]; then
@@ -63,6 +64,6 @@ chmod +x /etc/update-motd.d/99-dokku
chown dokku:dokku "$DOKKU_ROOT/HOSTNAME"
if [[ -f "$DOKKU_ROOT/VHOST" ]]; then
if [[ -f "$DOKKU_ROOT/VHOST" ]]; then
chown dokku:dokku "$DOKKU_ROOT/VHOST"
fi

View File

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

View File

@@ -1,15 +0,0 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/00_dokku-standard/exec-app-json-scripts"
exec_app_json_scripts() {
declare desc="core app.json scripts execution"
local trigger="post-deploy app_json_scripts"
local APP="$1"; local IMAGE_TAG="$4"; local PHASE_SCRIPT_KEY="postdeploy"
dokku_log_info1 "Attempting to run scripts.dokku.$PHASE_SCRIPT_KEY from app.json (if defined)"
execute_script "$APP" "$IMAGE_TAG" "$PHASE_SCRIPT_KEY"
}
exec_app_json_scripts "$@"

View File

@@ -1,40 +0,0 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/00_dokku-standard/exec-app-json-scripts"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
exec_app_json_scripts() {
declare desc="core app.json scripts execution"
local trigger="pre-deploy app_json_scripts"
local APP="$1"; local IMAGE_TAG="$2"; local PHASE_SCRIPT_KEY="predeploy"
dokku_log_info1 "Attempting to run scripts.dokku.$PHASE_SCRIPT_KEY from app.json (if defined)"
execute_script "$APP" "$IMAGE_TAG" "$PHASE_SCRIPT_KEY"
}
app_user_pre_deploy_trigger() {
local desc="app user pre-deploy trigger"
local APP="$1"; local IMAGE_TAG="$2"; local IMAGE; local DOCKER_ARGS
local DOKKU_APP_TYPE DOKKU_APP_USER APP_PATHS CONTAINER_PATHS
IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
DOKKU_APP_TYPE=$(config_get "$APP" DOKKU_APP_TYPE || true)
DOKKU_APP_USER=$(config_get "$APP" DOKKU_APP_USER || true)
DOKKU_APP_USER=${DOKKU_APP_USER:="herokuishuser"}
APP_PATHS=$(dokku --quiet storage:list "$APP" || true)
if [[ -n "$APP_PATHS" ]]; then
CONTAINER_PATHS=$(echo "$APP_PATHS" | awk -F ':' '{ print $2 }' | xargs)
DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG" | xargs)
fi
if [[ "$DOKKU_APP_TYPE" == "herokuish" ]] && [[ -n "$CONTAINER_PATHS" ]]; then
# shellcheck disable=SC2086
docker run $DOKKU_GLOBAL_RUN_ARGS $DOCKER_ARGS $IMAGE /bin/bash -c "find $CONTAINER_PATHS -not -user $DOKKU_APP_USER -print0 | xargs -0 -r chown -R $DOKKU_APP_USER" || true
fi
}
exec_app_json_scripts "$@"
app_user_pre_deploy_trigger "$@"

View File

@@ -1,13 +1,19 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
dokku_cleanup_cmd(){
dokku_cleanup_cmd() {
declare desc="cleans up old deployment cruft"
local cmd="cleanup"
declare cmd="cleanup"
[[ "$1" == "$cmd" ]] && shift 1
declare APP="$1"
if [[ -z "$APP" ]]; then
APP="--global"
fi
docker_cleanup "$APP" "true"
}
dokku_cleanup_cmd "$@"

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