diff --git a/Vagrantfile b/Vagrantfile index 13f8c0aa390..d88fbd0aa1f 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -27,6 +27,10 @@ Vagrant::configure("2") do |config| vb.customize ["modifyvm", :id, "--memory", BOX_MEMORY] end + config.vm.provider :vmware_fusion do |v, override| + v.vmx["memsize"] = BOX_MEMORY + end + config.vm.define "empty", autostart: false config.vm.define "dokku", primary: true do |vm| diff --git a/contrib/dokku-installer.rb b/contrib/dokku-installer.rb index 906c6994c7a..638814c1175 100755 --- a/contrib/dokku-installer.rb +++ b/contrib/dokku-installer.rb @@ -6,7 +6,18 @@ File.open("/etc/init/dokku-installer.conf", "w") do |f| f.puts "start on runlevel [2345]" f.puts "exec #{File.absolute_path(__FILE__)} selfdestruct" - end + end if File.directory?("/etc/init") + File.open("/etc/systemd/system/dokku-installer.service", "w") do |f| + f.puts "[Unit]" + f.puts "Description=Dokku web-installer" + f.puts "" + f.puts "[Service]" + f.puts "ExecStart=#{File.absolute_path(__FILE__)} selfdestruct" + f.puts "" + f.puts "[Install]" + f.puts "WantedBy=multi-user.target" + f.puts "WantedBy=graphical.target" + end if File.directory?("/etc/systemd/system") File.open("/etc/nginx/conf.d/dokku-installer.conf", "w") do |f| f.puts "upstream dokku-installer { server 127.0.0.1:2000; }" f.puts "server {" @@ -48,7 +59,7 @@ end Thread.new { `rm /etc/nginx/conf.d/dokku-installer.conf && /etc/init.d/nginx stop && /etc/init.d/nginx start` - `rm /etc/init/dokku-installer.conf && stop dokku-installer` + `rm -f /etc/init/dokku-installer.conf /etc/systemd/system/dokku-installer.service && stop dokku-installer` }.run if ARGV[0] == "selfdestruct" end diff --git a/deb.mk b/deb.mk index 010989275e1..2842fea47c8 100644 --- a/deb.mk +++ b/deb.mk @@ -49,7 +49,7 @@ deb-all: deb-herokuish deb-dokku deb-gems deb-plugn deb-sshcommand deb-setup: echo "-> Updating deb repository and installing build requirements" sudo apt-get update -qq > /dev/null - sudo apt-get install -qq -y gcc git ruby1.9.1-dev > /dev/null 2>&1 + sudo apt-get install -qq -y gcc git ruby-dev ruby1.9.1 > /dev/null 2>&1 command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc ssh -o StrictHostKeyChecking=no git@github.com || true @@ -69,7 +69,7 @@ deb-herokuish: deb-setup echo "sudo docker build -t gliderlabs/herokuish /var/lib/herokuish 1> /dev/null" >> /tmp/tmp/post-install echo "-> Cloning repository" - git clone -q "git@github.com:$(HEROKUISH_REPO_NAME).git" /tmp/tmp/herokuish > /dev/null + git clone -q "https://github.com/$(HEROKUISH_REPO_NAME).git" /tmp/tmp/herokuish > /dev/null rm -rf /tmp/tmp/herokuish/.git /tmp/tmp/herokuish/.gitignore echo "-> Copying files into place" @@ -77,7 +77,7 @@ deb-herokuish: deb-setup cp -rf /tmp/tmp/herokuish /tmp/build/var/lib/herokuish echo "-> Creating $(HEROKUISH_PACKAGE_NAME)" - sudo fpm -t deb -s dir -C /tmp/build -n herokuish -v $(HEROKUISH_VERSION) -a $(HEROKUISH_ARCHITECTURE) -p $(HEROKUISH_PACKAGE_NAME) --deb-pre-depends 'docker-engine | docker-engine-cs' --after-install /tmp/tmp/post-install --url "https://github.com/$(HEROKUISH_REPO_NAME)" --description $(HEROKUISH_DESCRIPTION) --license 'MIT License' . + sudo fpm -t deb -s dir -C /tmp/build -n herokuish -v $(HEROKUISH_VERSION) -a $(HEROKUISH_ARCHITECTURE) -p $(HEROKUISH_PACKAGE_NAME) --deb-pre-depends 'docker-engine | docker-engine-cs' --deb-pre-depends sudo --after-install /tmp/tmp/post-install --url "https://github.com/$(HEROKUISH_REPO_NAME)" --description $(HEROKUISH_DESCRIPTION) --license 'MIT License' . mv *.deb /tmp deb-dokku: deb-setup @@ -121,16 +121,18 @@ deb-plugn: deb-setup mkdir -p /tmp/tmp /tmp/build echo "-> Cloning repository" - git clone -q "git@github.com:$(PLUGN_REPO_NAME).git" /tmp/tmp/plugn > /dev/null + git clone -q "https://github.com/$(PLUGN_REPO_NAME).git" /tmp/tmp/plugn > /dev/null rm -rf /tmp/tmp/plugn/.git /tmp/tmp/plugn/.gitignore echo "-> Copying files into place" mkdir -p /tmp/build/usr/local/bin $(GOPATH) + sudo apt-get clean sudo apt-get update -qq > /dev/null sudo apt-get install -qq -y git golang mercurial > /dev/null 2>&1 - export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && make deps - export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && go build -o plugn - mv /tmp/tmp/plugn/plugn /tmp/build/usr/local/bin/plugn + export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH):/tmp/tmp/plugn && go get github.com/progrium/plugn + export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH):/tmp/tmp/plugn && cd /home/vagrant/gocode/src/github.com/progrium/plugn && make deps + export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH):/tmp/tmp/plugn && cd /home/vagrant/gocode/src/github.com/progrium/plugn && go build -o plugn + mv /home/vagrant/gocode/src/github.com/progrium/plugn/plugn /tmp/build/usr/local/bin/plugn echo "-> Creating $(PLUGN_PACKAGE_NAME)" sudo fpm -t deb -s dir -C /tmp/build -n plugn -v $(PLUGN_VERSION) -a $(PLUGN_ARCHITECTURE) -p $(PLUGN_PACKAGE_NAME) --url "https://github.com/$(PLUGN_REPO_NAME)" --description $(PLUGN_DESCRIPTION) --license 'MIT License' . @@ -141,7 +143,7 @@ deb-sshcommand: deb-setup mkdir -p /tmp/tmp /tmp/build echo "-> Cloning repository" - git clone -q "git@github.com:$(SSHCOMMAND_REPO_NAME).git" /tmp/tmp/sshcommand > /dev/null + git clone -q "https://github.com/$(SSHCOMMAND_REPO_NAME).git" /tmp/tmp/sshcommand > /dev/null rm -rf /tmp/tmp/sshcommand/.git /tmp/tmp/sshcommand/.gitignore echo "-> Copying files into place" diff --git a/debian/control b/debian/control index 1451c75456f..49d745075d5 100644 --- a/debian/control +++ b/debian/control @@ -4,6 +4,6 @@ Section: base Priority: optional Architecture: amd64 Depends: locales, git, make, curl, software-properties-common, docker-engine | docker-engine-cs | lxc-docker, gcc, python-software-properties, man-db, herokuish, sshcommand -Pre-Depends: nginx, dnsutils, ruby, ruby-dev, rubygem-rack, rubygem-rack-protection, rubygem-sinatra, rubygem-tilt, apparmor, cgroupfs-mount | cgroup-lite, plugn +Pre-Depends: nginx, dnsutils, ruby, ruby-dev, rubygem-rack, rubygem-rack-protection, rubygem-sinatra, rubygem-tilt, apparmor, cgroupfs-mount | cgroup-lite, plugn, sudo Maintainer: Jose Diaz-Gonzalez Description: Docker powered mini-Heroku in around 100 lines of Bash diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index b0e77bdedce..7b695f17587 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -62,9 +62,10 @@ fi set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +export DEBIAN_FRONTEND=noninteractive + case "$DOKKU_DISTRO" in - ubuntu) - export DEBIAN_FRONTEND=noninteractive + debian|ubuntu) apt-get install --force-yes -qq -y nginx ;; diff --git a/dokku b/dokku index 1bcf7459c40..72084afbf75 100755 --- a/dokku +++ b/dokku @@ -2,7 +2,15 @@ set -eo pipefail shopt -s nullglob -export DOKKU_DISTRO=${DOKKU_DISTRO:="ubuntu"} +case "$(lsb_release -si)" in + Debian) + export DOKKU_DISTRO=${DOKKU_DISTRO:="debian"} + ;; + *) + export DOKKU_DISTRO=${DOKKU_DISTRO:="ubuntu"} + ;; +esac + export DOKKU_IMAGE=${DOKKU_IMAGE:="gliderlabs/herokuish"} export DOKKU_ROOT=${DOKKU_ROOT:=~dokku} export DOKKU_LIB_ROOT=${DOKKU_LIB_PATH:="/var/lib/dokku"} diff --git a/plugins/00_dokku-standard/install b/plugins/00_dokku-standard/install index 4c5efa8f12b..818c27eb01a 100755 --- a/plugins/00_dokku-standard/install +++ b/plugins/00_dokku-standard/install @@ -25,7 +25,7 @@ end script EOF ;; - opensuse) + debian|opensuse) cat< /etc/systemd/system/dokku-redeploy.service [Unit] Description=Dokku app redeploy service @@ -42,7 +42,7 @@ EOF ;; esac - +mkdir -p /etc/update-motd.d cat< /etc/update-motd.d/99-dokku #!/bin/sh diff --git a/plugins/20_events/install b/plugins/20_events/install index deed941d4d1..c0be526c387 100755 --- a/plugins/20_events/install +++ b/plugins/20_events/install @@ -10,12 +10,26 @@ flag_rsyslog_needs_restart=n # This can be done unconditionally as mkdir -p # exits gracefully if the path already exists mkdir -m 775 -p "$DOKKU_LOGS_DIR" -chown syslog:dokku "$DOKKU_LOGS_DIR" +case "$DOKKU_DISTRO" in + debian) + chgrp dokku "$DOKKU_LOGS_DIR" + ;; + *) + chown syslog:dokku "$DOKKU_LOGS_DIR" + ;; +esac if [[ ! -f "$DOKKU_EVENTS_LOGFILE" ]]; then touch "$DOKKU_EVENTS_LOGFILE" - # chown syslog:root might not work on SUSE - chown syslog:dokku "$DOKKU_EVENTS_LOGFILE" + case "$DOKKU_DISTRO" in + debian) + chgrp dokku "$DOKKU_EVENTS_LOGFILE" + ;; + *) + # chown syslog:root might not work on SUSE + chown syslog:dokku "$DOKKU_EVENTS_LOGFILE" + ;; + esac chmod 664 "$DOKKU_EVENTS_LOGFILE" fi diff --git a/plugins/nginx-vhosts/dependencies b/plugins/nginx-vhosts/dependencies index eaac6488754..2ce7e4e7f0c 100755 --- a/plugins/nginx-vhosts/dependencies +++ b/plugins/nginx-vhosts/dependencies @@ -2,6 +2,11 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x case "$DOKKU_DISTRO" in + debian) + export DEBIAN_FRONTEND=noninteractive + apt-get install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -qq -y nginx dnsutils + ;; + ubuntu) export DEBIAN_FRONTEND=noninteractive [[ -z "$CIRCLECI" ]] && apt-get install -qq -y software-properties-common python-software-properties diff --git a/plugins/nginx-vhosts/functions b/plugins/nginx-vhosts/functions index 8b4cb36a205..49270ae9e55 100755 --- a/plugins/nginx-vhosts/functions +++ b/plugins/nginx-vhosts/functions @@ -114,6 +114,10 @@ validate_nginx() { restart_nginx() { case "$DOKKU_DISTRO" in + debian) + sudo /usr/sbin/invoke-rc.d nginx reload > /dev/null + ;; + ubuntu) sudo /etc/init.d/nginx reload > /dev/null ;; diff --git a/plugins/nginx-vhosts/install b/plugins/nginx-vhosts/install index d4e751099f7..b7e508a4897 100755 --- a/plugins/nginx-vhosts/install +++ b/plugins/nginx-vhosts/install @@ -2,6 +2,10 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x case "$DOKKU_DISTRO" in + debian) + echo "%dokku ALL=(ALL) NOPASSWD:/usr/sbin/invoke-rc.d nginx reload, /usr/sbin/nginx -t" > /etc/sudoers.d/dokku-nginx + ;; + ubuntu) echo "%dokku ALL=(ALL) NOPASSWD:/etc/init.d/nginx reload, /usr/sbin/nginx -t" > /etc/sudoers.d/dokku-nginx ;; @@ -41,6 +45,10 @@ chmod g+r /var/log/nginx [[ -f /etc/logrotate.d/nginx ]] && sed -i -e 's/invoke-rc.d/service/g' /etc/logrotate.d/nginx case "$DOKKU_DISTRO" in + debian) + /usr/sbin/invoke-rc.d nginx start + ;; + ubuntu) /etc/init.d/nginx start ;; diff --git a/plugins/nginx-vhosts/post-delete b/plugins/nginx-vhosts/post-delete index ab05787940d..c4e7b2b9e04 100755 --- a/plugins/nginx-vhosts/post-delete +++ b/plugins/nginx-vhosts/post-delete @@ -2,6 +2,10 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x case "$DOKKU_DISTRO" in + debian) + sudo /usr/sbin/invoke-rc.d nginx reload > /dev/null + ;; + ubuntu) sudo /etc/init.d/nginx reload > /dev/null ;;