From 1e479c63bd15c62c916f8803fb055e95b25480d1 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 14 Sep 2015 22:03:47 -0700 Subject: [PATCH] Upgrade dokku installation to use docker-engine Also simplify deb-based installation everywhere. Closes #1295 Closes #1461 --- Makefile | 9 +------ bootstrap.sh | 26 +++++++++++--------- contrib/packer.json | 2 +- contrib/stackscript.sh | 25 ++++++------------- deb.mk | 34 +++++++++----------------- debian/control | 2 +- docs/getting-started/install/debian.md | 17 +++++++------ plugins/nginx-vhosts/dependencies | 2 +- 8 files changed, 47 insertions(+), 70 deletions(-) diff --git a/Makefile b/Makefile index cb805223f..0073ecf76 100644 --- a/Makefile +++ b/Makefile @@ -103,14 +103,7 @@ docker: aufs egrep -i "^docker" /etc/group || groupadd docker usermod -aG docker dokku ifndef CI - curl -sSL https://get.docker.com/gpg | apt-key add - - echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list - apt-get update -ifdef DOCKER_VERSION - apt-get install -qq -y lxc-docker-${DOCKER_VERSION} -else - apt-get install -qq -y lxc-docker-1.6.2 -endif + curl -sSL https://get.docker.com/ | sh sleep 2 # give docker a moment i guess endif diff --git a/bootstrap.sh b/bootstrap.sh index 2679788db..2e95b9b6d 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -24,7 +24,7 @@ if ! command -v apt-get &>/dev/null; then exit 1 fi -apt-get update +apt-get update -qq > /dev/null which curl > /dev/null || apt-get install -qq -y curl [[ $(lsb_release -sr) == "12.04" ]] && apt-get install -qq -y python-software-properties @@ -42,21 +42,22 @@ dokku_install_source() { } dokku_install_package() { - curl -sSL https://get.docker.io/gpg | apt-key add - + echo "--> Initial apt-get update" + apt-get update -qq > /dev/null + apt-get install -qq -y apt-transport-https + + echo "--> Installing docker" + curl -sSL https://get.docker.com/ | sh + + echo "--> Installing dokku" curl -sSL https://packagecloud.io/gpg.key | apt-key add - - - apt-get update > /dev/null - apt-get install -qq -y "linux-image-extra-$(uname -r)" apt-transport-https - - echo "deb https://get.docker.io/ubuntu docker main" > /etc/apt/sources.list.d/docker.list - echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main" > /etc/apt/sources.list.d/dokku.list - - apt-get update > /dev/null + echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main" | tee /etc/apt/sources.list.d/dokku.list + apt-get update -qq > /dev/null if [[ -n $DOKKU_CHECKOUT ]]; then - apt-get install -qq -y dokku=$DOKKU_CHECKOUT + apt-get install dokku=$DOKKU_CHECKOUT else - apt-get install -qq -y dokku + apt-get install dokku fi } @@ -73,6 +74,7 @@ elif [[ -n $DOKKU_TAG ]]; then if [[ "$major" -eq "0" ]] && [[ "$minor" -ge "3" ]] && [[ "$patch" -ge "13" ]]; then export DOKKU_CHECKOUT="$DOKKU_SEMVER" dokku_install_package + echo "--> Running post-install dependency installation" # 0.4.0 implemented a `plugin` plugin if [[ "$major" -eq "0" ]] && [[ "$minor" -ge "4" ]] && [[ "$patch" -ge "0" ]]; then dokku plugin:install-dependencies --core diff --git a/contrib/packer.json b/contrib/packer.json index f293592ee..634609a98 100644 --- a/contrib/packer.json +++ b/contrib/packer.json @@ -19,7 +19,7 @@ "sleep 30", "echo '--> Updating apt repositories'", - "sudo apt-get update > /dev/null", + "sudo apt-get update -qq > /dev/null", "echo '--> Installing make requirement'", "sudo apt-get -qq -y install build-essential", diff --git a/contrib/stackscript.sh b/contrib/stackscript.sh index 1993a4ada..e2a9c5c90 100644 --- a/contrib/stackscript.sh +++ b/contrib/stackscript.sh @@ -134,26 +134,17 @@ EOF } function install_prerequisites { - sudo apt-get install -qq -y curl > /dev/null 2>&1 - - logit "Installing docker gpg key" - curl -sSL https://get.docker.com/gpg 2> /dev/null | apt-key add - > /dev/null 2>&1 - - logit "Installing dokku gpg key" - curl -sSL https://packagecloud.io/gpg.key 2> /dev/null | apt-key add - > /dev/null 2>&1 - - logit "Running apt-get update" - sudo apt-get update > /dev/null - logit "Installing pre-requisites" - sudo apt-get install -qq -y apt-transport-https > /dev/null 2>&1 + sudo apt-get update -qq > /dev/null + sudo apt-get install -qq -y apt-transport-https curl > /dev/null 2>&1 - logit "Setting up apt repositories" - echo "deb https://get.docker.io/ubuntu docker main" > /etc/apt/sources.list.d/docker.list + logit "Installing docker" + curl -sSL https://get.docker.com/ | sh + + logit "Installing dokku" + curl -sSL https://packagecloud.io/gpg.key 2> /dev/null | apt-key add - > /dev/null 2>&1 echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main" > /etc/apt/sources.list.d/dokku.list - - logit "Running apt-get update" - sudo apt-get update > /dev/null + sudo apt-get update -qq > /dev/null } function install_dokku { diff --git a/deb.mk b/deb.mk index ae7b28f90..a5e11d4c1 100644 --- a/deb.mk +++ b/deb.mk @@ -30,29 +30,17 @@ GOPATH = /home/vagrant/gocode install-from-deb: echo "--> Initial apt-get update" - sudo apt-get update > /dev/null - sudo apt-get install -y apt-transport-https curl + sudo apt-get update -qq > /dev/null + sudo apt-get install -qq -y apt-transport-https curl - echo "--> Installing docker gpg key" - curl -sSL https://get.docker.com/gpg | apt-key add - - - echo "--> Installing dokku gpg key" - curl --silent https://packagecloud.io/gpg.key 2> /dev/null | apt-key add - 2>&1 >/dev/null - - echo "--> Setting up apt repositories" - echo "deb https://get.docker.io/ubuntu docker main" > /etc/apt/sources.list.d/docker.list - echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main" > /etc/apt/sources.list.d/dokku.list - - echo "--> Running apt-get update" - sudo apt-get update > /dev/null - - echo "--> Installing pre-requisites" - sudo apt-get install -y linux-image-extra-`uname -r` + echo "--> Installing docker" + curl -sSL https://get.docker.com/ | sh echo "--> Installing dokku" - sudo apt-get install -y dokku - - echo "--> Done!" + curl -sSL 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 + sudo apt-get update -qq > /dev/null + sudo apt-get install dokku deb-all: deb-herokuish deb-dokku deb-gems deb-plugn deb-sshcommand mv /tmp/*.deb . @@ -60,7 +48,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 > /dev/null + sudo apt-get update -qq > /dev/null sudo apt-get install -qq -y gcc git ruby1.9.1-dev 2>&1 > /dev/null command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc ssh -o StrictHostKeyChecking=no git@github.com || true @@ -89,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 'lxc-docker-1.6.2' --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' --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 @@ -138,7 +126,7 @@ deb-plugn: deb-setup echo "-> Copying files into place" mkdir -p /tmp/build/usr/local/bin $(GOPATH) - sudo apt-get update > /dev/null + sudo apt-get update -qq > /dev/null sudo apt-get install -qq -y git golang mercurial 2>&1 > /dev/null export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && go get "golang.org/x/crypto/ssh/terminal" export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && go build -o plugn diff --git a/debian/control b/debian/control index d297bc846..807b8b2ab 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Version: 0.3.12 Section: base Priority: optional Architecture: amd64 -Depends: locales, git, make, curl, software-properties-common, lxc-docker-1.6.2, gcc, python-software-properties, man-db, herokuish, sshcommand, plugn +Depends: locales, git, make, curl, software-properties-common, docker-engine, gcc, python-software-properties, man-db, herokuish, sshcommand, plugn Pre-Depends: nginx, dnsutils, ruby, ruby-dev, rubygem-rack, rubygem-rack-protection, rubygem-sinatra, rubygem-tilt, apparmor, cgroupfs-mount | cgroup-lite Maintainer: Jose Diaz-Gonzalez Description: Docker powered mini-Heroku in around 100 lines of Bash diff --git a/docs/getting-started/install/debian.md b/docs/getting-started/install/debian.md index d7c469281..b32b4a78b 100644 --- a/docs/getting-started/install/debian.md +++ b/docs/getting-started/install/debian.md @@ -3,15 +3,18 @@ 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 -curl -sL https://get.docker.io/gpg 2> /dev/null | sudo apt-key add - 2>&1 >/dev/null -curl -sL https://packagecloud.io/gpg.key 2> /dev/null | sudo apt-key add - 2>&1 >/dev/null +# install prerequisites +sudo apt-get update -qq > /dev/null +sudo apt-get install -qq -y apt-transport-https curl -echo "deb https://get.docker.io/ubuntu docker main" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null -echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main" | sudo tee /etc/apt/sources.list.d/dokku.list >/dev/null +# install docker +curl -sSL https://get.docker.com/ | sh -sudo apt-get update -qq -sudo apt-get install -qq -y linux-image-extra-`uname -r` apt-transport-https -sudo apt-get install -qq -y dokku +# install dokku +curl -sSL 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 +sudo apt-get update -qq > /dev/null +sudo apt-get install dokku ``` ## Unattended installation diff --git a/plugins/nginx-vhosts/dependencies b/plugins/nginx-vhosts/dependencies index 5c7393370..eaac64887 100755 --- a/plugins/nginx-vhosts/dependencies +++ b/plugins/nginx-vhosts/dependencies @@ -7,7 +7,7 @@ case "$DOKKU_DISTRO" in [[ -z "$CIRCLECI" ]] && apt-get install -qq -y software-properties-common python-software-properties [[ -n "$CIRCLECI" ]] && aptitude install -q -y software-properties-common python-software-properties add-apt-repository -y ppa:nginx/stable - apt-get update + apt-get update -qq > /dev/null apt-get install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -qq -y nginx dnsutils ;;