Compare commits
82 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0bd8d71bb9 | ||
|
|
12ee9bc3e7 | ||
|
|
a991c450be | ||
|
|
a900aa45d6 | ||
|
|
3c8b3cedea | ||
|
|
dec8056ef5 | ||
|
|
784e2cfd5e | ||
|
|
b9b9d6303a | ||
|
|
39912ce5db | ||
|
|
7d8ec62a86 | ||
|
|
8cd4863126 | ||
|
|
7c8feb9e0d | ||
|
|
d6ef5e3447 | ||
|
|
498e250e2e | ||
|
|
7d5e0ba5aa | ||
|
|
a7b8eb5581 | ||
|
|
79788e5690 | ||
|
|
d9d66c58ab | ||
|
|
155f4e9aba | ||
|
|
1bfbdb449b | ||
|
|
b3ca3368e8 | ||
|
|
04921d6876 | ||
|
|
a915b8888f | ||
|
|
129a5fd33d | ||
|
|
e567ce1a90 | ||
|
|
489f131ffc | ||
|
|
45ec8df7be | ||
|
|
469d1e3f49 | ||
|
|
7ca2f49d78 | ||
|
|
69176d2d9a | ||
|
|
ad030b21d4 | ||
|
|
8c8f5e17f1 | ||
|
|
e0b994c415 | ||
|
|
a12b1e2b56 | ||
|
|
590c5fc017 | ||
|
|
ee5c35dd9d | ||
|
|
42a1363996 | ||
|
|
4ae8cf8180 | ||
|
|
aef3a68d2b | ||
|
|
6ddc7275dd | ||
|
|
58ca13e838 | ||
|
|
7c2f21fd2a | ||
|
|
887637fb6b | ||
|
|
c706344a94 | ||
|
|
a1bbc1ec4d | ||
|
|
793f1b6058 | ||
|
|
20977fc2a2 | ||
|
|
6cad7ef8f4 | ||
|
|
407436b4cc | ||
|
|
04dbe31919 | ||
|
|
56185fc1c2 | ||
|
|
303bd77226 | ||
|
|
c6e39c08f0 | ||
|
|
12194e2cc8 | ||
|
|
a3b3a6a12a | ||
|
|
c6f80bcf55 | ||
|
|
4d8c7033a9 | ||
|
|
d2547c4233 | ||
|
|
4fa567dbe3 | ||
|
|
463f725872 | ||
|
|
aa1c7f6fa4 | ||
|
|
5f6f73ff22 | ||
|
|
ad497191df | ||
|
|
53c58ec8b9 | ||
|
|
9eab9ed1e1 | ||
|
|
3faa37b2e1 | ||
|
|
fd55e8d41b | ||
|
|
303bc18265 | ||
|
|
2141435ce1 | ||
|
|
03e5248256 | ||
|
|
d307a5b8ec | ||
|
|
1e5a904747 | ||
|
|
a46582225a | ||
|
|
8bc3d372ec | ||
|
|
14b1743c2a | ||
|
|
2d776292c3 | ||
|
|
f0fe32a9c6 | ||
|
|
c4f5b3e219 | ||
|
|
fd0bafa7d9 | ||
|
|
09df79cd8b | ||
|
|
9c0667c51a | ||
|
|
939a876348 |
@@ -4,3 +4,8 @@ root = true
|
|||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
[Makefile]
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = 4
|
||||||
|
|||||||
51
HISTORY.md
51
HISTORY.md
@@ -1,5 +1,56 @@
|
|||||||
# History
|
# History
|
||||||
|
|
||||||
|
## 0.3.9
|
||||||
|
|
||||||
|
- #787: @josegonzalez/@michaelhobbs Official user-env-compile plugin
|
||||||
|
- Uses ENV and APP/ENV files
|
||||||
|
- Supports old `BUILD_ENV` files (which are likely in wide-use)
|
||||||
|
- Allows user's to override globals with app-specific configuration
|
||||||
|
- Migrate `$DOKKU_ROOT/BUILD_ENV` to `$DOKKU_ROOT/ENV` if the former exists and the latter does not
|
||||||
|
- Drop `BUILD_ENV` support in favor of just `ENV` via a `mv` command
|
||||||
|
- Add default ENV with `CURL_TIMEOUT` and `CURL_CONNECT_TIMEOUT`
|
||||||
|
- #811: @abossard Increased `server_names_hash_bucket_size` in nginx.conf to 512
|
||||||
|
- #814: @josegonzalez Source files in $DOKKU_ROOT/.dokkurc directory and add `dokku trace` command
|
||||||
|
- #816: @josegonzalez Add documentation for user-env feature
|
||||||
|
|
||||||
|
## 0.3.8
|
||||||
|
|
||||||
|
- #796: @josegonzalez Better vagrant documentation
|
||||||
|
- #801: @joelvh Point users to upgrade guides
|
||||||
|
- #805: @ademuk Fixed import-ssl server.crt/key check
|
||||||
|
- #806: @josegonzalez Dokku pushes now happen as the dokku user, not git. Refs #796
|
||||||
|
- #807: @josegonzalez Write proper nginx conf upon installation. Closes #799
|
||||||
|
- #808: @josegonzalez Ensure makefiles are properly formatted
|
||||||
|
|
||||||
|
## 0.3.7
|
||||||
|
|
||||||
|
- #788: @mmerickel fix apps plugin issues in 0.3.6
|
||||||
|
- #789: @mmerickel do not output message when creating ENV file
|
||||||
|
|
||||||
|
## 0.3.6
|
||||||
|
|
||||||
|
- #782: @josegonzalez Simplified config checking
|
||||||
|
- #785: @lsde fix missing semicolon in nginx config
|
||||||
|
|
||||||
|
## 0.3.5
|
||||||
|
|
||||||
|
- #784: @josegonzalez Fix NO_VHOST check
|
||||||
|
|
||||||
|
## 0.3.4
|
||||||
|
|
||||||
|
- #780: @josegonzalez Output error message when a command is not found. Closes #778
|
||||||
|
- #781: @michaelhobbs use DOKKU_IMAGE (i.e. progrium/buildstep)
|
||||||
|
|
||||||
|
## 0.3.3
|
||||||
|
|
||||||
|
- #659: @Xe contrib: add dokku client shell script
|
||||||
|
- #669 @ohardy Handle dokku plugins-update command
|
||||||
|
- #722: @wrboyce Add `git pull` support with git-pre-pull and git-post-pull hooks
|
||||||
|
- #751: @tboerger Partial openSUSE support
|
||||||
|
- #776: @joliv Update man page for new commands
|
||||||
|
- #777: @tboerger Use PLUGINS_PATH env var and persist environment when running dokku with sudo
|
||||||
|
- #779: @josegonzalez Minor bash formatting changes
|
||||||
|
|
||||||
## 0.3.2
|
## 0.3.2
|
||||||
|
|
||||||
- #675: @michaelhobbs port wait-to-retire from broadly/dokku
|
- #675: @michaelhobbs port wait-to-retire from broadly/dokku
|
||||||
|
|||||||
12
Makefile
12
Makefile
@@ -5,6 +5,7 @@ PLUGINHOOK_URL ?= https://s3.amazonaws.com/progrium-pluginhook/pluginhook_0.1.0_
|
|||||||
STACK_URL ?= https://github.com/progrium/buildstep.git
|
STACK_URL ?= https://github.com/progrium/buildstep.git
|
||||||
PREBUILT_STACK_URL ?= https://github.com/progrium/buildstep/releases/download/2014-03-08/2014-03-08_429d4a9deb.tar.gz
|
PREBUILT_STACK_URL ?= https://github.com/progrium/buildstep/releases/download/2014-03-08/2014-03-08_429d4a9deb.tar.gz
|
||||||
DOKKU_ROOT ?= /home/dokku
|
DOKKU_ROOT ?= /home/dokku
|
||||||
|
PLUGINS_PATH ?= /var/lib/dokku/plugins
|
||||||
|
|
||||||
# If the first argument is "vagrant-dokku"...
|
# If the first argument is "vagrant-dokku"...
|
||||||
ifeq (vagrant-dokku,$(firstword $(MAKECMDGOALS)))
|
ifeq (vagrant-dokku,$(firstword $(MAKECMDGOALS)))
|
||||||
@@ -23,12 +24,12 @@ install: dependencies stack copyfiles plugin-dependencies plugins version
|
|||||||
|
|
||||||
copyfiles: addman
|
copyfiles: addman
|
||||||
cp dokku /usr/local/bin/dokku
|
cp dokku /usr/local/bin/dokku
|
||||||
mkdir -p /var/lib/dokku/plugins
|
mkdir -p ${PLUGINS_PATH}
|
||||||
find /var/lib/dokku/plugins -mindepth 2 -maxdepth 2 -name '.core' -printf '%h\0' | xargs -0 rm -Rf
|
find ${PLUGINS_PATH} -mindepth 2 -maxdepth 2 -name '.core' -printf '%h\0' | xargs -0 rm -Rf
|
||||||
find plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do \
|
find plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read plugin; do \
|
||||||
rm -Rf /var/lib/dokku/plugins/$$plugin && \
|
rm -Rf ${PLUGINS_PATH}/$$plugin && \
|
||||||
cp -R plugins/$$plugin /var/lib/dokku/plugins && \
|
cp -R plugins/$$plugin ${PLUGINS_PATH} && \
|
||||||
touch /var/lib/dokku/plugins/$$plugin/.core; \
|
touch ${PLUGINS_PATH}/$$plugin/.core; \
|
||||||
done
|
done
|
||||||
|
|
||||||
addman:
|
addman:
|
||||||
@@ -90,6 +91,7 @@ count:
|
|||||||
@find tests -type f | xargs cat | wc -l
|
@find tests -type f | xargs cat | wc -l
|
||||||
|
|
||||||
dokku-installer:
|
dokku-installer:
|
||||||
|
apt-get install -qq -y ruby
|
||||||
test -f /var/lib/dokku/.dokku-installer-created || gem install rack -v 1.5.2 --no-rdoc --no-ri
|
test -f /var/lib/dokku/.dokku-installer-created || gem install rack -v 1.5.2 --no-rdoc --no-ri
|
||||||
test -f /var/lib/dokku/.dokku-installer-created || gem install rack-protection -v 1.5.3 --no-rdoc --no-ri
|
test -f /var/lib/dokku/.dokku-installer-created || gem install rack-protection -v 1.5.3 --no-rdoc --no-ri
|
||||||
test -f /var/lib/dokku/.dokku-installer-created || gem install sinatra -v 1.4.5 --no-rdoc --no-ri
|
test -f /var/lib/dokku/.dokku-installer-created || gem install sinatra -v 1.4.5 --no-rdoc --no-ri
|
||||||
|
|||||||
@@ -10,7 +10,11 @@ Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen. S
|
|||||||
|
|
||||||
To install the latest stable version of dokku, you can run the following bootstrapper command:
|
To install the latest stable version of dokku, you can run the following bootstrapper command:
|
||||||
|
|
||||||
$ wget -qO- https://raw.github.com/progrium/dokku/v0.3.2/bootstrap.sh | sudo DOKKU_TAG=v0.3.2 bash
|
$ wget -qO- https://raw.github.com/progrium/dokku/v0.3.9/bootstrap.sh | sudo DOKKU_TAG=v0.3.9 bash
|
||||||
|
|
||||||
|
### Upgrading
|
||||||
|
|
||||||
|
[View the docs for upgrading](http://progrium.viewdocs.io/dokku/upgrading) from an older version of Dokku.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ if ARGV[0] == "onboot"
|
|||||||
exit
|
exit
|
||||||
end
|
end
|
||||||
|
|
||||||
version = "v0.3.2"
|
version = "v0.3.9"
|
||||||
dokku_root = ENV["DOKKU_ROOT"] || "/home/dokku"
|
dokku_root = ENV["DOKKU_ROOT"] || "/home/dokku"
|
||||||
admin_key = `cat /root/.ssh/authorized_keys`.split("\n").first
|
admin_key = `cat /root/.ssh/authorized_keys`.split("\n").first
|
||||||
hostname = `bash -c '[[ $(dig +short $HOSTNAME) ]] && echo $HOSTNAME || curl icanhazip.com'`.strip
|
hostname = `bash -c '[[ $(dig +short $HOSTNAME) ]] && echo $HOSTNAME || curl icanhazip.com'`.strip
|
||||||
|
|||||||
32
contrib/dokku_client.sh
Executable file
32
contrib/dokku_client.sh
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
if [ -z "$DOKKU_HOST" ]
|
||||||
|
then
|
||||||
|
function dokku {
|
||||||
|
appname=$(git remote -v 2>/dev/null | grep dokku | head -n 1 | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
|
||||||
|
if [ "$?" != "0" ]
|
||||||
|
then
|
||||||
|
donotshift="YES"
|
||||||
|
fi
|
||||||
|
if [ "$1" = "create" ]
|
||||||
|
then
|
||||||
|
appname=$(echo "print(elfs.GenName())" | lua -l elfs)
|
||||||
|
if git remote add dokku dokku@$DOKKU_HOST:$appname
|
||||||
|
then
|
||||||
|
echo "-----> Dokku remote added at $DOKKU_HOST"
|
||||||
|
echo "-----> Application name is $appname"
|
||||||
|
else
|
||||||
|
echo "! Dokku remote not added! Do you already have a dokku remote?"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
git push dokku master
|
||||||
|
else
|
||||||
|
if [ -z "$donotshift" ]
|
||||||
|
then
|
||||||
|
ssh dokku@$DOKKU_HOST $*
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
verb=$1
|
||||||
|
shift
|
||||||
|
ssh dokku@$DOKKU_HOST "$verb" "$appname" $@
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
fi
|
||||||
@@ -4,8 +4,8 @@ Now you can deploy apps on your Dokku. Let's deploy the [Heroku Node.js sample a
|
|||||||
|
|
||||||
```
|
```
|
||||||
$ cd node-js-sample
|
$ cd node-js-sample
|
||||||
$ git remote add progrium dokku@progriumapp.com:node-js-app
|
$ git remote add dokku dokku@dokku.me:node-js-app
|
||||||
$ git push progrium master
|
$ git push dokku master
|
||||||
Counting objects: 296, done.
|
Counting objects: 296, done.
|
||||||
Delta compression using up to 4 threads.
|
Delta compression using up to 4 threads.
|
||||||
Compressing objects: 100% (254/254), done.
|
Compressing objects: 100% (254/254), done.
|
||||||
@@ -18,12 +18,12 @@ Total 296 (delta 25), reused 276 (delta 13)
|
|||||||
... blah blah blah ...
|
... blah blah blah ...
|
||||||
|
|
||||||
-----> Application deployed:
|
-----> Application deployed:
|
||||||
http://node-js-app.progriumapp.com
|
http://node-js-app.dokku.me
|
||||||
```
|
```
|
||||||
|
|
||||||
You're done!
|
You're done!
|
||||||
|
|
||||||
Dokku only supports deploying from its master branch, so if you'd like to deploy a different local branch use: ```git push progrium <local branch>:master```
|
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```
|
||||||
|
|
||||||
Right now Buildstep supports buildpacks for Node.js, Ruby, Python, [and more](https://github.com/progrium/buildstep#supported-buildpacks). It's not hard to add more, [go add more](https://github.com/progrium/buildstep#adding-buildpacks)!
|
Right now Buildstep supports buildpacks for Node.js, Ruby, Python, [and more](https://github.com/progrium/buildstep#supported-buildpacks). It's not hard to add more, [go add more](https://github.com/progrium/buildstep#adding-buildpacks)!
|
||||||
Please check the documentation for your particular build pack as you may need to include configuration files (such as a Procfile) in your project root.
|
Please check the documentation for your particular build pack as you may need to include configuration files (such as a Procfile) in your project root.
|
||||||
@@ -53,33 +53,33 @@ Alternatively, you may push an app to your dokku host with a name like "00-defau
|
|||||||
|
|
||||||
The name of remote repository is used as the name of application to be deployed, as for example above:
|
The name of remote repository is used as the name of application to be deployed, as for example above:
|
||||||
|
|
||||||
$ git remote add progrium git@progriumapp.com:node-js-app
|
$ git remote add dokku dokku@dokku.me:node-js-app
|
||||||
$ git push progrium master
|
$ git push dokku master
|
||||||
|
|
||||||
Is deployed to,
|
Is deployed to,
|
||||||
|
|
||||||
remote: -----> Application deployed:
|
remote: -----> Application deployed:
|
||||||
remote: http://node-js-app.progriumapp.com
|
remote: http://node-js-app.dokku.me
|
||||||
|
|
||||||
You can also specify fully qualified names, say `app.progrium.com`, as
|
You can also specify fully qualified names, say `app.dokku.me`, as
|
||||||
|
|
||||||
$ git remote add progrium git@progriumapp.com:app.progrium.com
|
$ git remote add dokku dokku@dokku.me:app.dokku.me
|
||||||
$ git push progrium master
|
$ git push dokku master
|
||||||
|
|
||||||
So, after deployment the application will be available at,
|
So, after deployment the application will be available at,
|
||||||
|
|
||||||
remote: -----> Application deployed:
|
remote: -----> Application deployed:
|
||||||
remote: http://app.progrium.com
|
remote: http://app.dokku.me
|
||||||
|
|
||||||
This is in particular useful, then you want to deploy to root domain, as
|
This is in particular useful, then you want to deploy to root domain, as
|
||||||
|
|
||||||
$ git remote add progrium git@progriumapp.com:progrium.com
|
$ git remote add dokku dokku@dokku.me:dokku.me
|
||||||
$ git push progrium master
|
$ git push dokku master
|
||||||
|
|
||||||
... deployment ...
|
... deployment ...
|
||||||
|
|
||||||
remote: -----> Application deployed:
|
remote: -----> Application deployed:
|
||||||
remote: http://progrium.com
|
remote: http://dokku.me
|
||||||
|
|
||||||
# Removing a deployed app
|
# Removing a deployed app
|
||||||
|
|
||||||
|
|||||||
@@ -11,4 +11,6 @@ config:set <app> KEY1=VALUE1 [KEY2=VALUE2 ...] - set one or more config vars
|
|||||||
config:unset <app> KEY1 [KEY2 ...] - unset one or more config vars
|
config:unset <app> KEY1 [KEY2 ...] - unset one or more config vars
|
||||||
```
|
```
|
||||||
|
|
||||||
The variables are by default available only at run time, i.e. not when the application is being built/compiled. However there are [plugins](http://progrium.viewdocs.io/dokku/plugins) that can change that.
|
The variables are available both at at run time and during the application build/compilation step. You no longer need a `user-env` plugin as Dokku handles this functionality in a way equivalent to how Heroku handles it.
|
||||||
|
|
||||||
|
> Note: Global `BUILD_ENV` files are currently migrated into a global `ENV` file. Configuring your global `ENV` file is manual, and should be considered potentially dangerous as configuration applies to all applications.
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Ubuntu 14.04 x64 x64. Ideally have a domain ready to point to your host. It's de
|
|||||||
To install the latest stable version of dokku, you can run the following bootstrapper command:
|
To install the latest stable version of dokku, you can run the following bootstrapper command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
wget -qO- https://raw.github.com/progrium/dokku/v0.3.2/bootstrap.sh | sudo DOKKU_TAG=v0.3.2 bash
|
wget -qO- https://raw.github.com/progrium/dokku/v0.3.9/bootstrap.sh | sudo DOKKU_TAG=v0.3.9 bash
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuring
|
## Configuring
|
||||||
@@ -20,7 +20,7 @@ Set up a domain and a wildcard domain pointing to that host. Make sure `/home/do
|
|||||||
|
|
||||||
You'll have to add a public key associated with a username by doing something like this from your local machine:
|
You'll have to add a public key associated with a username by doing something like this from your local machine:
|
||||||
|
|
||||||
$ cat ~/.ssh/id_rsa.pub | ssh progriumapp.com "sudo sshcommand acl-add dokku progrium"
|
$ cat ~/.ssh/id_rsa.pub | ssh dokku.me "sudo sshcommand acl-add dokku $USER"
|
||||||
|
|
||||||
That's it!
|
That's it!
|
||||||
|
|
||||||
@@ -110,6 +110,7 @@ sudo BUILD_STACK=true make install
|
|||||||
# - `BOX_MEMORY`
|
# - `BOX_MEMORY`
|
||||||
# - `DOKKU_DOMAIN`
|
# - `DOKKU_DOMAIN`
|
||||||
# - `DOKKU_IP`.
|
# - `DOKKU_IP`.
|
||||||
|
cd path/to/dokku
|
||||||
vagrant up
|
vagrant up
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,49 @@ If you create your own plugin:
|
|||||||
3. edit this page and add a link to it below!
|
3. edit this page and add a link to it below!
|
||||||
4. subscribe to the [dokku development blog](http://progrium.com) to be notified about API changes and releases
|
4. subscribe to the [dokku development blog](http://progrium.com) to be notified about API changes and releases
|
||||||
|
|
||||||
|
### Sample plugin
|
||||||
|
|
||||||
|
The below plugin is a dummy `dokku hello` plugin. If your plugin exposes commands, this is a good template for your `commands` file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
hello)
|
||||||
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
|
APP="$2";
|
||||||
|
|
||||||
|
echo "Hello $APP"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hello:world)
|
||||||
|
echo "Hello world"
|
||||||
|
;;
|
||||||
|
|
||||||
|
help)
|
||||||
|
cat && cat<<EOF
|
||||||
|
hello <app> Says "Hello <app>"
|
||||||
|
hello:world Says "Hello world"
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
```
|
||||||
|
|
||||||
|
A few notes:
|
||||||
|
|
||||||
|
- You should always support `DOKKU_TRACE` as specified on the 2nd line of the plugin.
|
||||||
|
- If your command requires that an application exists, ensure you check for it's existence in the manner prescribed above.
|
||||||
|
- A `help` command is required, though it is allowed to be empty.
|
||||||
|
- Commands *should* be namespaced.
|
||||||
|
- As of 0.3.3, a catch-all should be implemented which exits with a `DOKKU_NOT_IMPLEMENTED_EXIT` code. This allows dokku to output a `command not found` message.
|
||||||
|
|
||||||
## Community plugins
|
## Community plugins
|
||||||
|
|
||||||
Note: The following plugins have been supplied by our community and may not have been tested by dokku maintainers.
|
Note: The following plugins have been supplied by our community and may not have been tested by dokku maintainers.
|
||||||
@@ -165,8 +208,6 @@ Note: The following plugins have been supplied by our community and may not have
|
|||||||
| [SSH Deployment Keys](https://github.com/cedricziel/dokku-deployment-keys)<sup>2</sup> | [cedricziel][] | 2014-01-17: compatible with upstream/master |
|
| [SSH Deployment Keys](https://github.com/cedricziel/dokku-deployment-keys)<sup>2</sup> | [cedricziel][] | 2014-01-17: compatible with upstream/master |
|
||||||
| [SSH Hostkeys](https://github.com/cedricziel/dokku-hostkeys-plugin)<sup>3</sup> | [cedricziel][] | 2014-01-17: compatible with upstream/master |
|
| [SSH Hostkeys](https://github.com/cedricziel/dokku-hostkeys-plugin)<sup>3</sup> | [cedricziel][] | 2014-01-17: compatible with upstream/master |
|
||||||
| [Supply env vars to buildpacks](https://github.com/cameron-martin/dokku-build-env) | [cameron-martin][] | Works with v0.2.3 |
|
| [Supply env vars to buildpacks](https://github.com/cameron-martin/dokku-build-env) | [cameron-martin][] | Works with v0.2.3 |
|
||||||
| [user-env-compile](https://github.com/musicglue/dokku-user-env-compile)<sup>1</sup> | [musicglue][] | Compatible with dokku master branch |
|
|
||||||
| [user-env-compile](https://github.com/motin/dokku-user-env-compile)<sup>1</sup> | [motin][] | Compatible with 0.2.1 |
|
|
||||||
| [VHOSTS Custom Configuration](https://github.com/neam/dokku-nginx-vhosts-custom-configuration) | [motin][] | Compatible with 0.3.1 |
|
| [VHOSTS Custom Configuration](https://github.com/neam/dokku-nginx-vhosts-custom-configuration) | [motin][] | Compatible with 0.3.1 |
|
||||||
| [Volume (persistent storage)](https://github.com/ohardy/dokku-volume) | [ohardy][] | Compatible with 0.2.0 |
|
| [Volume (persistent storage)](https://github.com/ohardy/dokku-volume) | [ohardy][] | Compatible with 0.2.0 |
|
||||||
|
|
||||||
@@ -175,8 +216,6 @@ Note: The following plugins have been supplied by our community and may not have
|
|||||||
[98332de]: https://github.com/dyson/dokku-persistent-storage/commit/98332de4b5b640610bee535f4d5260263074e18b
|
[98332de]: https://github.com/dyson/dokku-persistent-storage/commit/98332de4b5b640610bee535f4d5260263074e18b
|
||||||
[a043e98]: https://github.com/stuartpb/dokku-bind-port/commit/a043e9892f4815b6525c850131e09fd64db5c1fa
|
[a043e98]: https://github.com/stuartpb/dokku-bind-port/commit/a043e9892f4815b6525c850131e09fd64db5c1fa
|
||||||
|
|
||||||
<sup>1</sup> Similar to the heroku-labs feature (see https://devcenter.heroku.com/articles/labs-user-env-compile)
|
|
||||||
|
|
||||||
<sup>2</sup> Adds the possibility to add SSH deployment keys to receive private hosted packages
|
<sup>2</sup> Adds the possibility to add SSH deployment keys to receive private hosted packages
|
||||||
|
|
||||||
<sup>3</sup> Adds the ability to add custom hosts to the containers known_hosts file to be able to ssh them easily (useful with deployment keys)
|
<sup>3</sup> Adds the ability to add custom hosts to the containers known_hosts file to be able to ssh them easily (useful with deployment keys)
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# Remote commands
|
# Remote commands
|
||||||
|
|
||||||
Dokku commands can be run over ssh. Anywhere you would run `dokku <command>`, just run `ssh -t dokku@progriumapp.com <command>`
|
Dokku commands can be run over ssh. Anywhere you would run `dokku <command>`, just run `ssh -t dokku@dokku.me <command>`
|
||||||
The `-t` is used to request a pty. It is highly recommended to do so.
|
The `-t` is used to request a pty. It is highly recommended to do so.
|
||||||
To avoid the need to type the `-t` option each time, simply create/modify a section in the `.ssh/config` on the client side, as follows:
|
To avoid the need to type the `-t` option each time, simply create/modify a section in the `.ssh/config` on the client side, as follows:
|
||||||
|
|
||||||
```
|
```
|
||||||
Host progriumapp.com
|
Host dokku.me
|
||||||
RequestTTY yes
|
RequestTTY yes
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -43,11 +43,16 @@ __Solution:__
|
|||||||
|
|
||||||
The `remote rejected` error does not give enough information. Anything could have failed.
|
The `remote rejected` error does not give enough information. Anything could have failed.
|
||||||
|
|
||||||
Create a `/home/dokku/dokkurc` file containing the following :
|
To enable dokku tracing, simply run the following command:
|
||||||
|
|
||||||
|
# Since 0.3.9
|
||||||
|
dokku trace
|
||||||
|
|
||||||
|
In versions older than 0.3.9, you can create a `/home/dokku/dokkurc` file containing the following :
|
||||||
|
|
||||||
export DOKKU_TRACE=1
|
export DOKKU_TRACE=1
|
||||||
|
|
||||||
This will trace all of dokku's activity. If this does not help you create a pastebin or a gist containing the full log, and create an issue.
|
This will trace all of dokku's activity. If this does not help you, create a [gist](https://gist.github.com) containing the full log, and create an issue.
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
|
|||||||
38
dokku
38
dokku
@@ -1,14 +1,21 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
export DOKKU_DISTRO=${DOKKU_DISTRO:="ubuntu"}
|
||||||
|
export DOKKU_IMAGE=${DOKKU_IMAGE:="progrium/buildstep"}
|
||||||
export DOKKU_ROOT=${DOKKU_ROOT:="/home/dokku"}
|
export DOKKU_ROOT=${DOKKU_ROOT:="/home/dokku"}
|
||||||
|
|
||||||
export PLUGIN_PATH=${PLUGIN_PATH:="/var/lib/dokku/plugins"}
|
export PLUGIN_PATH=${PLUGIN_PATH:="/var/lib/dokku/plugins"}
|
||||||
|
export DOKKU_NOT_IMPLEMENTED_EXIT=10
|
||||||
|
export DOKKU_VALID_EXIT=0
|
||||||
|
|
||||||
[[ -f $DOKKU_ROOT/dokkurc ]] && source $DOKKU_ROOT/dokkurc
|
[[ -f $DOKKU_ROOT/dokkurc ]] && source $DOKKU_ROOT/dokkurc
|
||||||
|
[[ -d $DOKKU_ROOT/.dokkurc ]] && for f in $DOKKU_ROOT/.dokkurc/*; do source $f; done
|
||||||
|
|
||||||
[[ $DOKKU_TRACE ]] && set -x
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
if [[ $(id -un) != "dokku" && $1 != plugins-install* ]]; then
|
if [[ $(id -un) != "dokku" && $1 != plugins-install* && $1 != "plugins-update" ]]; then
|
||||||
sudo -u dokku -H $0 "$@"
|
sudo -u dokku -E -H $0 "$@"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -36,7 +43,7 @@ case "$1" in
|
|||||||
|
|
||||||
build)
|
build)
|
||||||
APP="$2"; IMAGE="dokku/$APP"; CACHE_DIR="$DOKKU_ROOT/$APP/cache"
|
APP="$2"; IMAGE="dokku/$APP"; CACHE_DIR="$DOKKU_ROOT/$APP/cache"
|
||||||
id=$(cat | docker run -i -a stdin progrium/buildstep /bin/bash -c "mkdir -p /app && tar -xC /app")
|
id=$(cat | docker run -i -a stdin $DOKKU_IMAGE /bin/bash -c "mkdir -p /app && tar -xC /app")
|
||||||
test $(docker wait $id) -eq 0
|
test $(docker wait $id) -eq 0
|
||||||
docker commit $id $IMAGE > /dev/null
|
docker commit $id $IMAGE > /dev/null
|
||||||
[[ -d $CACHE_DIR ]] || mkdir $CACHE_DIR
|
[[ -d $CACHE_DIR ]] || mkdir $CACHE_DIR
|
||||||
@@ -130,6 +137,10 @@ case "$1" in
|
|||||||
pluginhook dependencies
|
pluginhook dependencies
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
plugins-update)
|
||||||
|
pluginhook update
|
||||||
|
;;
|
||||||
|
|
||||||
# temporary hack for https://github.com/progrium/dokku/issues/82
|
# temporary hack for https://github.com/progrium/dokku/issues/82
|
||||||
deploy:all)
|
deploy:all)
|
||||||
for app in $(ls -d $DOKKU_ROOT/*/CONTAINER); do
|
for app in $(ls -d $DOKKU_ROOT/*/CONTAINER); do
|
||||||
@@ -139,17 +150,36 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
help|'')
|
help|'')
|
||||||
|
echo "Usage: dokku COMMAND <app> [command-specific-options]"
|
||||||
|
echo ""
|
||||||
|
|
||||||
cat<<EOF | pluginhook commands help | sort
|
cat<<EOF | pluginhook commands help | sort
|
||||||
help Print the list of commands
|
help Print the list of commands
|
||||||
plugins Print active plugins
|
plugins Print active plugins
|
||||||
plugins-install Install active plugins
|
plugins-install Install active plugins
|
||||||
|
plugins-update Update active plugins
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
implemented=0
|
||||||
for script in $(ls -d $PLUGIN_PATH/*/commands); do
|
for script in $(ls -d $PLUGIN_PATH/*/commands); do
|
||||||
$script "$@"
|
set +e; $script "$@" ; exit_code=$? ; set -e
|
||||||
|
if [ "$exit_code" -eq "$DOKKU_NOT_IMPLEMENTED_EXIT" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
implemented=1
|
||||||
|
if [ "$exit_code" -ne "$DOKKU_VALID_EXIT" ]; then
|
||||||
|
exit $exit_code
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ "$implemented" -eq 0 ]; then
|
||||||
|
echo " ! \`$@\` is not a dokku command."
|
||||||
|
echo " ! See \`dokku help\` for a list of available commands."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
21
dokku.1
21
dokku.1
@@ -1,4 +1,4 @@
|
|||||||
.TH DOKKU 1 2014-05-10
|
.TH DOKKU 1 2014-11-22
|
||||||
.\"Make sure to change that date when you commit a change!
|
.\"Make sure to change that date when you commit a change!
|
||||||
.\"
|
.\"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@@ -15,6 +15,15 @@ work with plugins and inspect the current state of your server.
|
|||||||
.\"
|
.\"
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
|
.BI apps:create " <app>"
|
||||||
|
Create a new app.
|
||||||
|
.TP
|
||||||
|
.BI apps:destroy " <app>"
|
||||||
|
Permanantly destroy an app.
|
||||||
|
.TP
|
||||||
|
.B apps
|
||||||
|
List your apps.
|
||||||
|
.TP
|
||||||
.BI backup:import " file"
|
.BI backup:import " file"
|
||||||
Import dokku config files.
|
Import dokku config files.
|
||||||
.TP
|
.TP
|
||||||
@@ -33,18 +42,22 @@ Set one or more config vars for an app.
|
|||||||
.BI config:unset " <app> KEY1" \fR\ (KEY2\ \.\.\.)
|
.BI config:unset " <app> KEY1" \fR\ (KEY2\ \.\.\.)
|
||||||
Remove one or more config vars from an app.
|
Remove one or more config vars from an app.
|
||||||
.TP
|
.TP
|
||||||
.BI delete " <app>"
|
|
||||||
Delete an application.
|
|
||||||
.TP
|
|
||||||
.B help
|
.B help
|
||||||
Print the list of commands.
|
Print the list of commands.
|
||||||
.TP
|
.TP
|
||||||
.B logs \ \fI<app> \fR[\fI-t\fR]
|
.B logs \ \fI<app> \fR[\fI-t\fR]
|
||||||
Show the last logs for an application (-t follows)
|
Show the last logs for an application (-t follows)
|
||||||
.TP
|
.TP
|
||||||
|
.BI nginx:import-ssl " <app>"
|
||||||
|
Imports a tarball from stdin which should contain
|
||||||
|
server\.crt and server\.key
|
||||||
|
.TP
|
||||||
.B plugins-install
|
.B plugins-install
|
||||||
Install active plugins.
|
Install active plugins.
|
||||||
.TP
|
.TP
|
||||||
|
.B plugins-update
|
||||||
|
Update active plugins.
|
||||||
|
.TP
|
||||||
.B plugins
|
.B plugins
|
||||||
Print active plugins.
|
Print active plugins.
|
||||||
.TP
|
.TP
|
||||||
|
|||||||
@@ -2,20 +2,32 @@
|
|||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
trace)
|
||||||
|
[[ -d $DOKKU_ROOT/.dokkurc ]] || mkdir -p $DOKKU_ROOT/.dokkurc
|
||||||
|
[[ "$2" == "on" ]] || [[ "$2" == "off" ]] || {
|
||||||
|
echo "Valid trace options are [on/off]"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$2" == "on" ]]; then
|
||||||
|
echo "Enabling dokku trace"
|
||||||
|
echo "export DOKKU_TRACE=1" > $DOKKU_ROOT/.dokkurc/DOKKU_TRACE
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$2" == "off" ]]; then
|
||||||
|
echo "Disabling dokku trace"
|
||||||
|
rm -f $DOKKU_ROOT/.dokkurc/DOKKU_TRACE
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
delete)
|
delete)
|
||||||
dokku apps:destroy $2
|
dokku apps:destroy $2
|
||||||
;;
|
;;
|
||||||
|
|
||||||
logs)
|
logs)
|
||||||
if [[ -z $2 ]]; then
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
echo "Please specify an app to run the command on"
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
APP="$2";
|
APP="$2";
|
||||||
if [[ ! -d "$DOKKU_ROOT/$APP" ]]; then
|
|
||||||
echo "App $APP does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f "$DOKKU_ROOT/$APP/CONTAINER" ]]; then
|
if [[ -f "$DOKKU_ROOT/$APP/CONTAINER" ]]; then
|
||||||
CONTAINER=$(<$DOKKU_ROOT/$APP/CONTAINER)
|
CONTAINER=$(<$DOKKU_ROOT/$APP/CONTAINER)
|
||||||
@@ -30,15 +42,10 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
run)
|
run)
|
||||||
if [[ -z $2 ]]; then
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
echo "Please specify an app to run the command on"
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
APP="$2"; IMAGE="dokku/$APP"
|
APP="$2"; IMAGE="dokku/$APP"
|
||||||
if [[ ! -d "$DOKKU_ROOT/$APP" ]]; then
|
|
||||||
echo "App $APP does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
shift 2
|
shift 2
|
||||||
|
|
||||||
DOCKER_ARGS=$(: | pluginhook docker-args $APP)
|
DOCKER_ARGS=$(: | pluginhook docker-args $APP)
|
||||||
@@ -46,11 +53,9 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
url)
|
url)
|
||||||
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
APP="$2";
|
APP="$2";
|
||||||
if [[ ! -d "$DOKKU_ROOT/$APP" ]]; then
|
|
||||||
echo "App $APP does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f "$DOKKU_ROOT/$APP/URL" ]]; then
|
if [[ -f "$DOKKU_ROOT/$APP/URL" ]]; then
|
||||||
echo $(< "$DOKKU_ROOT/$APP/URL")
|
echo $(< "$DOKKU_ROOT/$APP/URL")
|
||||||
@@ -73,4 +78,8 @@ case "$1" in
|
|||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
||||||
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ fi
|
|||||||
|
|
||||||
# temporary hack for https://github.com/progrium/dokku/issues/82
|
# temporary hack for https://github.com/progrium/dokku/issues/82
|
||||||
# redeploys all apps after a reboot
|
# redeploys all apps after a reboot
|
||||||
|
case "$DOKKU_DISTRO" in
|
||||||
|
ubuntu)
|
||||||
cat<<EOF > /etc/init/dokku-redeploy.conf
|
cat<<EOF > /etc/init/dokku-redeploy.conf
|
||||||
description "Dokku app redeploy service"
|
description "Dokku app redeploy service"
|
||||||
|
|
||||||
@@ -17,3 +19,21 @@ script
|
|||||||
sudo -i -u dokku /usr/local/bin/dokku deploy:all
|
sudo -i -u dokku /usr/local/bin/dokku deploy:all
|
||||||
end script
|
end script
|
||||||
EOF
|
EOF
|
||||||
|
;;
|
||||||
|
|
||||||
|
opensuse)
|
||||||
|
cat<<EOF > /etc/systemd/system/dokku-redeploy.service
|
||||||
|
[Unit]
|
||||||
|
Description=Dokku app redeploy service
|
||||||
|
After=docker.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=dokku
|
||||||
|
ExecStart=/usr/local/bin/dokku deploy:all
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|||||||
@@ -4,39 +4,23 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
apps)
|
apps)
|
||||||
echo "=== My Apps"
|
echo "=== My Apps"
|
||||||
find $DOKKU_ROOT -maxdepth 1 -type d \( ! -iname ".*" \) -not -path $DOKKU_ROOT/tls | sed 's|^\./||g' | sed 's|'$DOKKU_ROOT'\/||' | tail -n +2 | sort
|
find $DOKKU_ROOT -follow -maxdepth 1 -type d \( ! -iname ".*" \) -not -path $DOKKU_ROOT/tls | sed 's|^\./||g' | sed 's|'$DOKKU_ROOT'\/||' | tail -n +2 | sort
|
||||||
;;
|
;;
|
||||||
|
|
||||||
apps:create)
|
apps:create)
|
||||||
if [[ -z $2 ]]; then
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
echo "Please specify an app to create"
|
[[ -d "$DOKKU_ROOT/$2" ]] && echo " ! Name is already taken" && exit 1
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
APP="$2"
|
APP="$2"
|
||||||
if [[ -d "$DOKKU_ROOT/$APP" ]]; then
|
|
||||||
echo " ! Name is already taken"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "$DOKKU_ROOT/$APP"
|
mkdir -p "$DOKKU_ROOT/$APP"
|
||||||
echo "Creating $APP... done"
|
echo "Creating $APP... done"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
apps:destroy)
|
apps:destroy)
|
||||||
if [[ -z $2 ]]; then
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
echo "Please specify an app to delete"
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
exit 1
|
[[ "$2" == "tls" ]] && echo "Unable to destroy tls directory" && exit 1
|
||||||
fi
|
|
||||||
APP="$2"; IMAGE="dokku/$APP";
|
APP="$2"; IMAGE="dokku/$APP";
|
||||||
if [[ ! -d "$DOKKU_ROOT/$APP" ]]; then
|
|
||||||
echo "App $APP does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$APP" == "tls" ]]; then
|
|
||||||
echo "Unable to destroy tls directory"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo " ! WARNING: Potentially Destructive Action"
|
echo " ! WARNING: Potentially Destructive Action"
|
||||||
echo " ! This command will destroy $APP (including all add-ons)."
|
echo " ! This command will destroy $APP (including all add-ons)."
|
||||||
@@ -72,4 +56,8 @@ case "$1" in
|
|||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
||||||
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -92,4 +92,8 @@ case "$1" in
|
|||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
||||||
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
31
plugins/build-env/pre-build
Executable file
31
plugins/build-env/pre-build
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
APP="$1"; IMAGE="dokku/$APP"; BUILD_ENV=""
|
||||||
|
|
||||||
|
[[ -f "$DOKKU_ROOT/BUILD_ENV" ]] && cat "$DOKKU_ROOT/BUILD_ENV" >> "$DOKKU_ROOT/ENV" && rm "$DOKKU_ROOT/BUILD_ENV"
|
||||||
|
|
||||||
|
[[ ! $(grep CURL_CONNECT_TIMEOUT "$DOKKU_ROOT/ENV") ]] && echo "export CURL_CONNECT_TIMEOUT=5" >> "$DOKKU_ROOT/ENV"
|
||||||
|
[[ ! $(grep CURL_TIMEOUT "$DOKKU_ROOT/ENV") ]] && echo "export CURL_TIMEOUT=30" >> "$DOKKU_ROOT/ENV"
|
||||||
|
|
||||||
|
if [[ -f "$DOKKU_ROOT/ENV" ]]; then
|
||||||
|
BUILD_ENV+=$(< "$DOKKU_ROOT/ENV")
|
||||||
|
fi
|
||||||
|
if [[ -f "$DOKKU_ROOT/$APP/ENV" ]]; then
|
||||||
|
BUILD_ENV+=" "
|
||||||
|
BUILD_ENV+=$(< "$DOKKU_ROOT/$APP/ENV")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z "$BUILD_ENV" ]]; then
|
||||||
|
echo "-----> Adding BUILD_ENV to build environment..."
|
||||||
|
# create build env files for use in buildpacks like this:
|
||||||
|
# https://github.com/niteoweb/heroku-buildpack-buildout/blob/5879fa3418f7d8e079f1aa5816ba1adde73f4948/bin/compile#L34
|
||||||
|
id=$(echo $BUILD_ENV |sed 's@export @@g'| docker run -i -a stdin $IMAGE /bin/bash -c "for ENV_VAR in `cat`; do echo \$ENV_VAR |sed 's@^\([^=]*\)=\(.*\)\$@echo \2 >/tmp/env/\1@g' >>/tmp/set_env.sh; done && mkdir -p /tmp/env && /bin/bash /tmp/set_env.sh")
|
||||||
|
test $(docker wait $id) -eq 0
|
||||||
|
docker commit $id $IMAGE > /dev/null
|
||||||
|
|
||||||
|
# create build env for 'old style' buildpacks and dokku plugins
|
||||||
|
id=$(echo "$BUILD_ENV" | docker run -i -a stdin $IMAGE /bin/bash -c "cat >> /app/.env")
|
||||||
|
test $(docker wait $id) -eq 0
|
||||||
|
docker commit $id $IMAGE > /dev/null
|
||||||
|
fi
|
||||||
@@ -1,28 +1,13 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
# Check if name is specified
|
ENV_FILE="$DOKKU_ROOT/$2/ENV"
|
||||||
if [[ $1 == config ]] || [[ $1 == config:* ]]; then
|
ENV_FILE_TEMP="$DOKKU_ROOT/$2/ENV.tmp"
|
||||||
if [[ -z $2 ]]; then
|
config_create () {
|
||||||
echo "You must specify an app name"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
APP="$2"
|
|
||||||
ENV_FILE="$DOKKU_ROOT/$APP/ENV"
|
|
||||||
ENV_FILE_TEMP="$DOKKU_ROOT/$APP/ENV.tmp"
|
|
||||||
|
|
||||||
# Check if app exists with the same name
|
|
||||||
if [ ! -d "$DOKKU_ROOT/$APP" ]; then
|
|
||||||
echo "App $APP does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -f $ENV_FILE ] || {
|
[ -f $ENV_FILE ] || {
|
||||||
echo "-----> Creating $ENV_FILE"
|
|
||||||
touch $ENV_FILE
|
touch $ENV_FILE
|
||||||
}
|
}
|
||||||
fi
|
}
|
||||||
fi
|
|
||||||
|
|
||||||
config_styled_hash () {
|
config_styled_hash () {
|
||||||
vars="$1"
|
vars="$1"
|
||||||
@@ -76,12 +61,12 @@ config_write() {
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
config)
|
config)
|
||||||
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
APP="$2"
|
APP="$2"
|
||||||
|
|
||||||
if [ ! -f $ENV_FILE ] || [ ! -s $ENV_FILE ] ; then
|
config_create
|
||||||
echo "$APP has no config vars"
|
[[ ! -s $ENV_FILE ]] && echo "$APP has no config vars" && exit 1
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
VARS=`cat $ENV_FILE | grep -Eo "export ([a-zA-Z_][a-zA-Z0-9_]*=.*)" | cut -d" " -f2-`
|
VARS=`cat $ENV_FILE | grep -Eo "export ([a-zA-Z_][a-zA-Z0-9_]*=.*)" | cut -d" " -f2-`
|
||||||
|
|
||||||
@@ -97,14 +82,19 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
config:get)
|
config:get)
|
||||||
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
|
APP="$2"
|
||||||
|
|
||||||
if [[ -z $3 ]]; then
|
if [[ -z $3 ]]; then
|
||||||
echo "Usage: dokku config:get APP KEY"
|
echo "Usage: dokku config:get APP KEY"
|
||||||
echo "Must specify KEY."
|
echo "Must specify KEY."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $ENV_FILE ] || [ ! -s $ENV_FILE ] ; then
|
config_create
|
||||||
exit 1
|
if [[ ! -s $ENV_FILE ]] ; then
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
KEY="$3"
|
KEY="$3"
|
||||||
@@ -113,13 +103,17 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
config:set)
|
config:set)
|
||||||
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
|
APP="$2"
|
||||||
|
|
||||||
if [[ -z "${*:3}" ]]; then
|
if [[ -z "${*:3}" ]]; then
|
||||||
echo "Usage: dokku config:set APP KEY1=VALUE1 [KEY2=VALUE2 ...]"
|
echo "Usage: dokku config:set APP KEY1=VALUE1 [KEY2=VALUE2 ...]"
|
||||||
echo "Must specify KEY and VALUE to set."
|
echo "Must specify KEY and VALUE to set."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
APP="$2"; APP_DIR="$DOKKU_ROOT/$APP"
|
config_create
|
||||||
ENV_ADD=""
|
ENV_ADD=""
|
||||||
ENV_TEMP=`cat "${ENV_FILE}"`
|
ENV_TEMP=`cat "${ENV_FILE}"`
|
||||||
RESTART_APP=false
|
RESTART_APP=false
|
||||||
@@ -157,13 +151,17 @@ ${var}"
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
config:unset)
|
config:unset)
|
||||||
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
|
APP="$2"
|
||||||
|
|
||||||
if [[ -z $3 ]]; then
|
if [[ -z $3 ]]; then
|
||||||
echo "Usage: dokku config:unset APP KEY1 [KEY2 ...]"
|
echo "Usage: dokku config:unset APP KEY1 [KEY2 ...]"
|
||||||
echo "Must specify KEY to unset."
|
echo "Must specify KEY to unset."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
APP="$2"; APP_DIR="$DOKKU_ROOT/$APP"
|
config_create
|
||||||
ENV_TEMP=`cat "${ENV_FILE}"`
|
ENV_TEMP=`cat "${ENV_FILE}"`
|
||||||
VARS="${*:3}"
|
VARS="${*:3}"
|
||||||
|
|
||||||
@@ -184,4 +182,8 @@ ${var}"
|
|||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
||||||
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ git_archive_all() {
|
|||||||
TMP_WORK_DIR=$(mktemp -d)
|
TMP_WORK_DIR=$(mktemp -d)
|
||||||
chmod 755 $TMP_WORK_DIR
|
chmod 755 $TMP_WORK_DIR
|
||||||
unset GIT_DIR GIT_WORK_TREE
|
unset GIT_DIR GIT_WORK_TREE
|
||||||
git clone $DOKKU_ROOT/$APP $TMP_WORK_DIR &> /dev/null
|
git clone -q $DOKKU_ROOT/$APP $TMP_WORK_DIR &> /dev/null
|
||||||
pushd $TMP_WORK_DIR > /dev/null
|
pushd $TMP_WORK_DIR > /dev/null
|
||||||
git config advice.detachedHead false
|
git config advice.detachedHead false
|
||||||
git checkout $REV &> /dev/null
|
git checkout $REV &> /dev/null
|
||||||
@@ -34,6 +34,13 @@ case "$1" in
|
|||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
git-upload-pack)
|
||||||
|
APP="$(echo $2 | perl -pe 's/(?<!\\)'\''//g' | sed 's/\\'\''/'\''/g')"
|
||||||
|
pluginhook git-pre-pull $APP
|
||||||
|
cat | git-upload-pack "$DOKKU_ROOT/$APP"
|
||||||
|
pluginhook git-post-pull $APP
|
||||||
|
;;
|
||||||
|
|
||||||
git-*)
|
git-*)
|
||||||
APP="$(echo $2 | perl -pe 's/(?<!\\)'\''//g' | sed 's/\\'\''/'\''/g')"
|
APP="$(echo $2 | perl -pe 's/(?<!\\)'\''//g' | sed 's/\\'\''/'\''/g')"
|
||||||
APP_PATH=$DOKKU_ROOT/$APP
|
APP_PATH=$DOKKU_ROOT/$APP
|
||||||
@@ -58,4 +65,8 @@ EOF
|
|||||||
cat
|
cat
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
||||||
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -3,41 +3,31 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
nginx:import-ssl)
|
nginx:import-ssl)
|
||||||
if [[ -z $2 ]]; then
|
[[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
|
||||||
echo "Please specify an app to create"
|
[[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
|
||||||
exit 1
|
[[ -t 0 ]] && echo "Tar archive containing server.crt and server.key expected on stdin" && exit 1
|
||||||
fi
|
|
||||||
APP="$2"
|
APP="$2"
|
||||||
if [[ ! -d "$DOKKU_ROOT/$APP" ]]; then
|
|
||||||
echo "App $APP does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [[ -t 0 ]]; then
|
|
||||||
echo "Tar archive containing server.crt and server.key expected on stdin"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
TEMP_DIR=`mktemp -d`
|
TEMP_DIR=`mktemp -d`
|
||||||
cd $TEMP_DIR
|
cd $TEMP_DIR
|
||||||
tar xvf - <&0
|
tar xvf - <&0
|
||||||
if [[ -f "$TEMP_DIR/server.crt" ]]; then
|
[[ ! -f "$TEMP_DIR/server.crt" ]] && echo "Tar archive missing server.crt" && exit 1
|
||||||
echo "Tar archive missing server.crt"
|
[[ ! -f "$TEMP_DIR/server.key" ]] && echo "Tar archive missing server.key" && exit 1
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [[ -f "$TEMP_DIR/server.key" ]]; then
|
|
||||||
echo "Tar archive missing server.key"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "$DOKKU_ROOT/$APP/tls"
|
mkdir -p "$DOKKU_ROOT/$APP/tls"
|
||||||
mv "$TEMP_DIR/server.crt" "$DOKKU_ROOT/$APP/tls/server.crt"
|
mv "$TEMP_DIR/server.crt" "$DOKKU_ROOT/$APP/tls/server.crt"
|
||||||
mv "$TEMP_DIR/server.key" "$DOKKU_ROOT/$APP/tls/server.key"
|
mv "$TEMP_DIR/server.key" "$DOKKU_ROOT/$APP/tls/server.key"
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
;;
|
;;
|
||||||
|
|
||||||
help | nginx:help)
|
help | nginx:help)
|
||||||
cat && cat<<EOF
|
cat && cat<<EOF
|
||||||
nginx:import-ssl <app> Imports a tarball from stdin; should contain server.crt and server.key
|
nginx:import-ssl <app> Imports a tarball from stdin; should contain server.crt and server.key
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
||||||
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
# latest stable NGINX 1.4.x with websocket support
|
case "$DOKKU_DISTRO" in
|
||||||
|
ubuntu)
|
||||||
apt-get install -qq -y software-properties-common python-software-properties
|
apt-get install -qq -y software-properties-common python-software-properties
|
||||||
add-apt-repository -y ppa:nginx/stable
|
add-apt-repository -y ppa:nginx/stable
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -qq -y nginx dnsutils
|
apt-get install -qq -y nginx dnsutils
|
||||||
|
;;
|
||||||
|
|
||||||
|
opensuse)
|
||||||
|
zypper -q in -y nginx bind-utils
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
if ! grep -q dokku-nginx-reload "/etc/sudoers"; then
|
if [[ ! -f /etc/sudoers.d/dokku-nginx ]]; then
|
||||||
touch /etc/sudoers.tmp
|
case "$DOKKU_DISTRO" in
|
||||||
cp /etc/sudoers /tmp/sudoers.new
|
ubuntu)
|
||||||
echo "%dokku ALL=(ALL)NOPASSWD:/etc/init.d/nginx reload # dokku-nginx-reload" >> /tmp/sudoers.new
|
echo "%dokku ALL=(ALL) NOPASSWD:/etc/init.d/nginx reload" >> /etc/sudoers.d/dokku-nginx
|
||||||
EDITOR="cp /tmp/sudoers.new" visudo
|
;;
|
||||||
rm /tmp/sudoers.new
|
|
||||||
|
opensuse)
|
||||||
|
echo "%dokku ALL=(ALL) NOPASSWD:/sbin/service nginx reload" >> /etc/sudoers.d/dokku-nginx
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
chmod 0440 /etc/sudoers.d/dokku-nginx
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if dokku.conf has not been created, create it
|
# if dokku.conf has not been created, create it
|
||||||
@@ -25,10 +31,49 @@ ssl_prefer_server_ciphers on;
|
|||||||
#ssl_certificate_key $DOKKU_ROOT/tls/server.key;
|
#ssl_certificate_key $DOKKU_ROOT/tls/server.key;
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
sed -i 's/# server_names_hash_bucket_size/server_names_hash_bucket_size/' /etc/nginx/nginx.conf
|
|
||||||
|
cat<<EOF > /etc/nginx/nginx.conf
|
||||||
|
user www-data;
|
||||||
|
worker_processes auto;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 768;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_disable "msie6";
|
||||||
|
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
include /etc/nginx/sites-enabled/*;
|
||||||
|
}
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo 'server_names_hash_bucket_size 512;' >| /etc/nginx/conf.d/server_names_hash_bucket_size.conf
|
||||||
|
|
||||||
if [[ ! -f "$DOKKU_ROOT/VHOST" ]]; then
|
if [[ ! -f "$DOKKU_ROOT/VHOST" ]]; then
|
||||||
[[ $(dig +short $(< "$DOKKU_ROOT/HOSTNAME")) ]] && cp "$DOKKU_ROOT/HOSTNAME" "$DOKKU_ROOT/VHOST"
|
[[ $(dig +short $(< "$DOKKU_ROOT/HOSTNAME")) ]] && cp "$DOKKU_ROOT/HOSTNAME" "$DOKKU_ROOT/VHOST"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case "$DOKKU_DISTRO" in
|
||||||
|
ubuntu)
|
||||||
/etc/init.d/nginx start
|
/etc/init.d/nginx start
|
||||||
|
;;
|
||||||
|
|
||||||
|
opensuse)
|
||||||
|
/sbin/service nginx start
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
case "$DOKKU_DISTRO" in
|
||||||
|
ubuntu)
|
||||||
sudo /etc/init.d/nginx reload > /dev/null
|
sudo /etc/init.d/nginx reload > /dev/null
|
||||||
|
;;
|
||||||
|
|
||||||
|
opensuse)
|
||||||
|
sudo /sbin/service nginx reload > /dev/null
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ set +e
|
|||||||
NO_VHOST=$(dokku config:get $APP NO_VHOST)
|
NO_VHOST=$(dokku config:get $APP NO_VHOST)
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [[ -z "$NO_VHOST" ]]; then
|
if [[ -n "$NO_VHOST" ]]; then
|
||||||
echo "-----> NO_VHOST config detected"
|
echo "-----> NO_VHOST config detected"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -f "$DOKKU_ROOT/VHOST" && ! -z "$NO_VHOST" ]]; then
|
if [[ -f "$DOKKU_ROOT/VHOST" && ! -n "$NO_VHOST" ]]; then
|
||||||
VHOST=$(< "$DOKKU_ROOT/VHOST")
|
VHOST=$(< "$DOKKU_ROOT/VHOST")
|
||||||
SUBDOMAIN=${APP/%\.${VHOST}/}
|
SUBDOMAIN=${APP/%\.${VHOST}/}
|
||||||
hostname=$(: | pluginhook nginx-hostname $APP $SUBDOMAIN $VHOST)
|
hostname=$(: | pluginhook nginx-hostname $APP $SUBDOMAIN $VHOST)
|
||||||
@@ -101,8 +101,17 @@ EOF
|
|||||||
|
|
||||||
echo "-----> Running nginx-pre-reload"
|
echo "-----> Running nginx-pre-reload"
|
||||||
pluginhook nginx-pre-reload $APP $PORT
|
pluginhook nginx-pre-reload $APP $PORT
|
||||||
|
|
||||||
echo " Reloading nginx"
|
echo " Reloading nginx"
|
||||||
|
case "$DOKKU_DISTRO" in
|
||||||
|
ubuntu)
|
||||||
sudo /etc/init.d/nginx reload > /dev/null
|
sudo /etc/init.d/nginx reload > /dev/null
|
||||||
|
;;
|
||||||
|
|
||||||
|
opensuse)
|
||||||
|
sudo /sbin/service nginx reload > /dev/null
|
||||||
|
;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
if [[ -f "$DOKKU_ROOT/$APP/URL" ]]; then
|
if [[ -f "$DOKKU_ROOT/$APP/URL" ]]; then
|
||||||
echo "------> NO_VHOST set, deleting $APP/URL"
|
echo "------> NO_VHOST set, deleting $APP/URL"
|
||||||
@@ -112,6 +121,15 @@ else
|
|||||||
echo "------> NO_VHOST set, deleting $APP/nginx.conf"
|
echo "------> NO_VHOST set, deleting $APP/nginx.conf"
|
||||||
rm "$DOKKU_ROOT/$APP/nginx.conf"
|
rm "$DOKKU_ROOT/$APP/nginx.conf"
|
||||||
echo "------> NO_VHOST set, reloading nginx after nginx.conf deletion"
|
echo "------> NO_VHOST set, reloading nginx after nginx.conf deletion"
|
||||||
|
case "$DOKKU_DISTRO" in
|
||||||
|
ubuntu)
|
||||||
|
sudo /etc/init.d/nginx reload > /dev/null
|
||||||
|
;;
|
||||||
|
|
||||||
|
opensuse)
|
||||||
|
sudo /sbin/service nginx reload > /dev/null
|
||||||
|
;;
|
||||||
|
esac
|
||||||
sudo /etc/init.d/nginx reload > /dev/null
|
sudo /etc/init.d/nginx reload > /dev/null
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user