Merge pull request #1607 from progrium/debian-installation
Dokku support for Debian Jessie installation
This commit is contained in:
4
Vagrantfile
vendored
4
Vagrantfile
vendored
@@ -27,6 +27,10 @@ Vagrant::configure("2") do |config|
|
|||||||
vb.customize ["modifyvm", :id, "--memory", BOX_MEMORY]
|
vb.customize ["modifyvm", :id, "--memory", BOX_MEMORY]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
config.vm.provider :vmware_fusion do |v, override|
|
||||||
|
v.vmx["memsize"] = BOX_MEMORY
|
||||||
|
end
|
||||||
|
|
||||||
config.vm.define "empty", autostart: false
|
config.vm.define "empty", autostart: false
|
||||||
|
|
||||||
config.vm.define "dokku", primary: true do |vm|
|
config.vm.define "dokku", primary: true do |vm|
|
||||||
|
|||||||
@@ -6,7 +6,18 @@ if ARGV[0] == "onboot"
|
|||||||
File.open("/etc/init/dokku-installer.conf", "w") do |f|
|
File.open("/etc/init/dokku-installer.conf", "w") do |f|
|
||||||
f.puts "start on runlevel [2345]"
|
f.puts "start on runlevel [2345]"
|
||||||
f.puts "exec #{File.absolute_path(__FILE__)} selfdestruct"
|
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|
|
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 "upstream dokku-installer { server 127.0.0.1:2000; }"
|
||||||
f.puts "server {"
|
f.puts "server {"
|
||||||
@@ -48,7 +59,7 @@ post "/setup" do
|
|||||||
end
|
end
|
||||||
Thread.new {
|
Thread.new {
|
||||||
`rm /etc/nginx/conf.d/dokku-installer.conf && /etc/init.d/nginx stop && /etc/init.d/nginx start`
|
`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"
|
}.run if ARGV[0] == "selfdestruct"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
18
deb.mk
18
deb.mk
@@ -49,7 +49,7 @@ deb-all: deb-herokuish deb-dokku deb-gems deb-plugn deb-sshcommand
|
|||||||
deb-setup:
|
deb-setup:
|
||||||
echo "-> Updating deb repository and installing build requirements"
|
echo "-> Updating deb repository and installing build requirements"
|
||||||
sudo apt-get update -qq > /dev/null
|
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
|
command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc
|
||||||
ssh -o StrictHostKeyChecking=no git@github.com || true
|
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 "sudo docker build -t gliderlabs/herokuish /var/lib/herokuish 1> /dev/null" >> /tmp/tmp/post-install
|
||||||
|
|
||||||
echo "-> Cloning repository"
|
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
|
rm -rf /tmp/tmp/herokuish/.git /tmp/tmp/herokuish/.gitignore
|
||||||
|
|
||||||
echo "-> Copying files into place"
|
echo "-> Copying files into place"
|
||||||
@@ -77,7 +77,7 @@ deb-herokuish: deb-setup
|
|||||||
cp -rf /tmp/tmp/herokuish /tmp/build/var/lib/herokuish
|
cp -rf /tmp/tmp/herokuish /tmp/build/var/lib/herokuish
|
||||||
|
|
||||||
echo "-> Creating $(HEROKUISH_PACKAGE_NAME)"
|
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
|
mv *.deb /tmp
|
||||||
|
|
||||||
deb-dokku: deb-setup
|
deb-dokku: deb-setup
|
||||||
@@ -121,16 +121,18 @@ deb-plugn: deb-setup
|
|||||||
mkdir -p /tmp/tmp /tmp/build
|
mkdir -p /tmp/tmp /tmp/build
|
||||||
|
|
||||||
echo "-> Cloning repository"
|
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
|
rm -rf /tmp/tmp/plugn/.git /tmp/tmp/plugn/.gitignore
|
||||||
|
|
||||||
echo "-> Copying files into place"
|
echo "-> Copying files into place"
|
||||||
mkdir -p /tmp/build/usr/local/bin $(GOPATH)
|
mkdir -p /tmp/build/usr/local/bin $(GOPATH)
|
||||||
|
sudo apt-get clean
|
||||||
sudo apt-get update -qq > /dev/null
|
sudo apt-get update -qq > /dev/null
|
||||||
sudo apt-get install -qq -y git golang mercurial > /dev/null 2>&1
|
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):/tmp/tmp/plugn && go get github.com/progrium/plugn
|
||||||
export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && go build -o 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
|
||||||
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 && 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)"
|
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' .
|
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
|
mkdir -p /tmp/tmp /tmp/build
|
||||||
|
|
||||||
echo "-> Cloning repository"
|
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
|
rm -rf /tmp/tmp/sshcommand/.git /tmp/tmp/sshcommand/.gitignore
|
||||||
|
|
||||||
echo "-> Copying files into place"
|
echo "-> Copying files into place"
|
||||||
|
|||||||
2
debian/control
vendored
2
debian/control
vendored
@@ -4,6 +4,6 @@ Section: base
|
|||||||
Priority: optional
|
Priority: optional
|
||||||
Architecture: amd64
|
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
|
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 <dokku@josediazgonzalez.com>
|
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
|
||||||
Description: Docker powered mini-Heroku in around 100 lines of Bash
|
Description: Docker powered mini-Heroku in around 100 lines of Bash
|
||||||
|
|||||||
@@ -62,9 +62,10 @@ fi
|
|||||||
|
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
case "$DOKKU_DISTRO" in
|
case "$DOKKU_DISTRO" in
|
||||||
ubuntu)
|
debian|ubuntu)
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
apt-get install --force-yes -qq -y nginx
|
apt-get install --force-yes -qq -y nginx
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|||||||
10
dokku
10
dokku
@@ -2,7 +2,15 @@
|
|||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
shopt -s nullglob
|
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_IMAGE=${DOKKU_IMAGE:="gliderlabs/herokuish"}
|
||||||
export DOKKU_ROOT=${DOKKU_ROOT:=~dokku}
|
export DOKKU_ROOT=${DOKKU_ROOT:=~dokku}
|
||||||
export DOKKU_LIB_ROOT=${DOKKU_LIB_PATH:="/var/lib/dokku"}
|
export DOKKU_LIB_ROOT=${DOKKU_LIB_PATH:="/var/lib/dokku"}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ end script
|
|||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
opensuse)
|
debian|opensuse)
|
||||||
cat<<EOF > /etc/systemd/system/dokku-redeploy.service
|
cat<<EOF > /etc/systemd/system/dokku-redeploy.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Dokku app redeploy service
|
Description=Dokku app redeploy service
|
||||||
@@ -42,7 +42,7 @@ EOF
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
mkdir -p /etc/update-motd.d
|
||||||
cat<<EOF > /etc/update-motd.d/99-dokku
|
cat<<EOF > /etc/update-motd.d/99-dokku
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,26 @@ flag_rsyslog_needs_restart=n
|
|||||||
# This can be done unconditionally as mkdir -p
|
# This can be done unconditionally as mkdir -p
|
||||||
# exits gracefully if the path already exists
|
# exits gracefully if the path already exists
|
||||||
mkdir -m 775 -p "$DOKKU_LOGS_DIR"
|
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
|
if [[ ! -f "$DOKKU_EVENTS_LOGFILE" ]]; then
|
||||||
touch "$DOKKU_EVENTS_LOGFILE"
|
touch "$DOKKU_EVENTS_LOGFILE"
|
||||||
# chown syslog:root might not work on SUSE
|
case "$DOKKU_DISTRO" in
|
||||||
chown syslog:dokku "$DOKKU_EVENTS_LOGFILE"
|
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"
|
chmod 664 "$DOKKU_EVENTS_LOGFILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,11 @@
|
|||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
case "$DOKKU_DISTRO" in
|
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)
|
ubuntu)
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
[[ -z "$CIRCLECI" ]] && apt-get install -qq -y software-properties-common python-software-properties
|
[[ -z "$CIRCLECI" ]] && apt-get install -qq -y software-properties-common python-software-properties
|
||||||
|
|||||||
@@ -114,6 +114,10 @@ validate_nginx() {
|
|||||||
|
|
||||||
restart_nginx() {
|
restart_nginx() {
|
||||||
case "$DOKKU_DISTRO" in
|
case "$DOKKU_DISTRO" in
|
||||||
|
debian)
|
||||||
|
sudo /usr/sbin/invoke-rc.d nginx reload > /dev/null
|
||||||
|
;;
|
||||||
|
|
||||||
ubuntu)
|
ubuntu)
|
||||||
sudo /etc/init.d/nginx reload > /dev/null
|
sudo /etc/init.d/nginx reload > /dev/null
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
case "$DOKKU_DISTRO" in
|
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)
|
ubuntu)
|
||||||
echo "%dokku ALL=(ALL) NOPASSWD:/etc/init.d/nginx reload, /usr/sbin/nginx -t" > /etc/sudoers.d/dokku-nginx
|
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
|
[[ -f /etc/logrotate.d/nginx ]] && sed -i -e 's/invoke-rc.d/service/g' /etc/logrotate.d/nginx
|
||||||
|
|
||||||
case "$DOKKU_DISTRO" in
|
case "$DOKKU_DISTRO" in
|
||||||
|
debian)
|
||||||
|
/usr/sbin/invoke-rc.d nginx start
|
||||||
|
;;
|
||||||
|
|
||||||
ubuntu)
|
ubuntu)
|
||||||
/etc/init.d/nginx start
|
/etc/init.d/nginx start
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
case "$DOKKU_DISTRO" in
|
case "$DOKKU_DISTRO" in
|
||||||
|
debian)
|
||||||
|
sudo /usr/sbin/invoke-rc.d nginx reload > /dev/null
|
||||||
|
;;
|
||||||
|
|
||||||
ubuntu)
|
ubuntu)
|
||||||
sudo /etc/init.d/nginx reload > /dev/null
|
sudo /etc/init.d/nginx reload > /dev/null
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user