这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -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|
Expand Down
15 changes: 13 additions & 2 deletions contrib/dokku-installer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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 {"
Expand Down Expand Up @@ -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

Expand Down
18 changes: 10 additions & 8 deletions deb.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -69,15 +69,15 @@ 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"
mkdir -p "/tmp/build/var/lib"
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
Expand Down Expand Up @@ -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' .
Expand All @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -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 <dokku@josediazgonzalez.com>
Description: Docker powered mini-Heroku in around 100 lines of Bash
5 changes: 3 additions & 2 deletions docs/development/plugin-triggers.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
;;

Expand Down
10 changes: 9 additions & 1 deletion dokku
Original file line number Diff line number Diff line change
Expand Up @@ -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"}
Expand Down
4 changes: 2 additions & 2 deletions plugins/00_dokku-standard/install
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ end script
EOF
;;

opensuse)
debian|opensuse)
cat<<EOF > /etc/systemd/system/dokku-redeploy.service
[Unit]
Description=Dokku app redeploy service
Expand All @@ -42,7 +42,7 @@ EOF
;;
esac


mkdir -p /etc/update-motd.d
cat<<EOF > /etc/update-motd.d/99-dokku
#!/bin/sh

Expand Down
20 changes: 17 additions & 3 deletions plugins/20_events/install
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 5 additions & 0 deletions plugins/nginx-vhosts/dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions plugins/nginx-vhosts/functions
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,10 @@ validate_nginx() {

restart_nginx() {
case "$DOKKU_DISTRO" in
debian)
sudo /usr/sbin/invoke-rc.d nginx reload > /dev/null
;;

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not simply "systemctl reload nginx" ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I asked in #debian on freenode and they said this was the way to do it, and that invoke-rc.d would do the right thing, regardless of the init system in use.

ubuntu)
sudo /etc/init.d/nginx reload > /dev/null
;;
Expand Down
8 changes: 8 additions & 0 deletions plugins/nginx-vhosts/install
Original file line number Diff line number Diff line change
Expand Up @@ -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
;;
Expand Down Expand Up @@ -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
;;
Expand Down
4 changes: 4 additions & 0 deletions plugins/nginx-vhosts/post-delete
Original file line number Diff line number Diff line change
Expand Up @@ -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
;;
Expand Down