Skip to content

Instantly share code, notes, and snippets.

@mugifly
Last active July 6, 2018 06:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mugifly/899a169d353f511c378d to your computer and use it in GitHub Desktop.
Save mugifly/899a169d353f511c378d to your computer and use it in GitHub Desktop.
Dokku in Proxy

Dokku in proxy

$ export http_proxy=http://example.com:8080/
$ export https_proxy=$http_proxy
$ sudo -E sh -c "echo 'Acquire::http::proxy \"$http_proxy\";' >> /etc/apt/apt.conf"
$ sudo -E sh -c "echo 'Acquire::https::proxy \"$https_proxy\";' >> /etc/apt/apt.conf"

$ wget https://raw.githubusercontent.com/progrium/dokku/v0.4.3/bootstrap.sh
$ sudo -E DOKKU_TAG=v0.4.3 bash bootstrap.sh

$ sudo -E sh -c "echo 'export http_proxy=$http_proxy' >> /etc/default/docker"
$ sudo -E sh -c "echo 'export http_proxy=$https_proxy' >> /etc/default/docker"

$ sudo vim /etc/init/docker.conf

script
        # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
        DOCKER=/usr/bin/$UPSTART_JOB
        DOCKER_OPTS=
        if [ -f /etc/default/$UPSTART_JOB ]; then
                . /etc/default/$UPSTART_JOB
        fi
        http_proxy="http://example.com:8080/"
        https_proxy="http://example.com:8080/" 
        http_proxy=$http_proxy https_proxy=$https_proxy exec "$DOCKER" daemon $DOCKER_OPTS
end script

$ sudo vim /var/lib/core-plugins/available/00_dokku-standard/commands

  build)
    APP="$2"; IMAGE_SOURCE_TYPE="$3"; TMP_WORK_DIR="$4"; IMAGE=$(get_app_image_name $APP)
    verify_app_name "$APP"

    CACHE_DIR="$DOKKU_ROOT/$APP/cache"

    eval "$(config_export app $APP)"
    pushd "$TMP_WORK_DIR" &> /dev/null

    case "$IMAGE_SOURCE_TYPE" in
      herokuish)
        id=$(tar -c . | docker run -i -a stdin $DOKKU_IMAGE /bin/bash -c "mkdir -p /app && tar -xC /app")
        test "$(docker wait $id)" -eq 0
        docker commit $id $IMAGE > /dev/null
        [[ -d $CACHE_DIR ]] || mkdir $CACHE_DIR
        plugn trigger pre-build-buildpack "$APP"

        DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP)
        [[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" -e TRACE=true "
        id=$(docker run -d -v $CACHE_DIR:/cache -e CACHE_PATH=/cache $DOCKER_ARGS $IMAGE /build)
        docker attach $id
        test "$(docker wait $id)" -eq 0
        docker commit $id $IMAGE > /dev/null

        plugn trigger post-build-buildpack "$APP"
        ;;

      dockerfile)
        # extract first port from Dockerfile
        DOCKERFILE_PORT=$(get_dockerfile_exposed_port Dockerfile)
        [[ -n "$DOCKERFILE_PORT" ]] && config_set --no-restart $APP DOKKU_DOCKERFILE_PORT=$DOCKERFILE_PORT
        plugn trigger pre-build-dockerfile "$APP"

        [[ "$DOKKU_DOCKERFILE_CACHE_BUILD" == "false" ]] && DOKKU_DOCKER_BUILD_OPTS="$DOKKU_DOCKER_BUILD_OPTS --no-cache"
        DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP)
	http_proxy="http://wwwproxy.osakac.ac.jp:8080"
	https_proxy="http://wwwproxy.osakac.ac.jp:8080"
        /server/dockerfile_rewriter.sh http_proxy=$http_proxy https_proxy=$https_proxy
	docker build --build-arg http_proxy=$http_proxy --build-arg https_proxy=$https_proxy $DOCKER_ARGS $DOKKU_DOCKER_BUILD_OPTS -t "$IMAGE" .

        plugn trigger post-build-dockerfile "$APP"
        ;;

      *)
        dokku_log_fail "Building image source type $IMAGE_SOURCE_TYPE not supported!"
        ;;
    esac
    ;;
# Generator for customized deb file of herokuish
# Please find latest herokuish from https://packagecloud.io/dokku/dokku
# (In November 2015: https://packagecloud.io/dokku/dokku/packages/ubuntu/trusty/herokuish_0.3.4_amd64.deb)
# Then run a command as next: ./gen-herokuish-deb.sh 0.3.4
HEROKUISH_VER=$1
if [ $# -ne 1 ]; then
echo "Please set herokuish version!"
echo "Please find latest herokuish from https://packagecloud.io/dokku/dokku"
echo "e.g. In November 2015: 0.3.4"
exit 255
fi
sudo apt-get remove -y herokuish
sudo apt-get install -y build-essential checkinstall
if [ -d /tmp/herokuish/ ]; then
rm -rf /tmp/herokuish/
fi
mkdir -p /tmp/herokuish
cd /tmp/herokuish
wget https://packagecloud.io/dokku/dokku/packages/ubuntu/trusty/herokuish_${HEROKUISH_VER}_amd64.deb/download -O herokuish_${HEROKUISH_VER}_amd64.deb
ar x herokuish_${HEROKUISH_VER}_amd64.deb
rm herokuish_${HEROKUISH_VER}_amd64.deb
mkdir control/
tar zxf control.tar.gz -C control/
rm control.tar.gz
cd control/
grep -l 'docker build' postinst | xargs sed -i -e 's/docker build/docker build --build-arg HTTP_PROXY=$http_proxy --build-arg HTTPS_PROXY=$https_proxy/g'
tar zcf ../control.tar.gz control md5sums postinst
cd ..
rm control/ -rf
mkdir data/
tar zxf data.tar.gz -C data/
rm data.tar.gz
cd data/
find . -type f -print | xargs grep -l 'docker build' | xargs sed -i -e 's/docker build/docker build --build-arg HTTP_PROXY=$http_proxy --build-arg HTTPS_PROXY=$https_proxy/g'
find . -type f -print | xargs grep -l 'docker run' | xargs sed -i -e 's/docker run/docker run -e HTTP_PROXY=$http_proxy -e HTTPS_PROXY=$https_proxy/g'
tar zcf ../data.tar.gz usr/ var/
cd ..
rm data/ -rf
ar r herokuish_0.4.3-2_amd64.deb debian-binary control.tar.gz data.tar.gz
echo "Done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment