From 13bd5864b3c4f255449757d76c5b5908281321ab Mon Sep 17 00:00:00 2001 From: Jody McIntyre Date: Mon, 9 Apr 2018 17:44:32 -0400 Subject: [PATCH 01/13] Add `DOKKU_ROOT_ON_HOST` variable This is to be used in place of `DOKKU_ROOT` when we need to refer to a path on the system where the Docker daemon is being run; if `dokku` is running in a container this may be different from the regular `DOKKU_ROOT`. --- dokku | 1 + 1 file changed, 1 insertion(+) diff --git a/dokku b/dokku index fed0cdcba..a5b712511 100755 --- a/dokku +++ b/dokku @@ -27,6 +27,7 @@ if [[ -d $DOKKU_ROOT/.dokkurc ]]; then done fi [[ $DOKKU_TRACE ]] && set -x +export DOKKU_ROOT_ON_HOST=${DOKKU_ROOT_ON_HOST:=$DOKKU_ROOT} export DOKKU_DISTRO # shellcheck disable=SC1091 From aa5561b781efdaec2e2b370d40a67c8fcbffcb6c Mon Sep 17 00:00:00 2001 From: Jody McIntyre Date: Mon, 9 Apr 2018 17:51:14 -0400 Subject: [PATCH 02/13] Use `DOKKU_ROOT_ON_HOST` for Docker bind mounts --- plugins/00_dokku-standard/exec-app-json-scripts | 3 ++- plugins/apps/pre-delete | 4 ++-- plugins/apps/subcommands/clone | 3 ++- plugins/apps/subcommands/rename | 3 ++- plugins/common/functions | 3 ++- plugins/repo/src/subcommands/purge-cache/purge-cache.go | 3 ++- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/plugins/00_dokku-standard/exec-app-json-scripts b/plugins/00_dokku-standard/exec-app-json-scripts index e9b6f4bcb..268f55e7b 100755 --- a/plugins/00_dokku-standard/exec-app-json-scripts +++ b/plugins/00_dokku-standard/exec-app-json-scripts @@ -51,6 +51,7 @@ execute_script() { COMMAND+=" fi " local CACHE_DIR="$DOKKU_ROOT/$APP/cache" + local CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$APP/cache" [[ -d $CACHE_DIR ]] || mkdir -p "$CACHE_DIR" local DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG") @@ -66,7 +67,7 @@ execute_script() { DOKKU_APP_SHELL="$(config_get "$APP" DOKKU_APP_SHELL || echo "$DOKKU_APP_SHELL")" [[ -z "$DOKKU_APP_SHELL" ]] && DOKKU_APP_SHELL="/bin/bash" - id=$(docker run "$DOKKU_GLOBAL_RUN_ARGS" -e DOKKU_TRACE="$DOKKU_TRACE" --label=dokku_phase_script="${PHASE_SCRIPT_KEY}" -d -v "$CACHE_DIR:/cache" "${ARG_ARRAY[@]}" "$IMAGE" "$DOKKU_APP_SHELL" -c "$COMMAND") + id=$(docker run "$DOKKU_GLOBAL_RUN_ARGS" -e DOKKU_TRACE="$DOKKU_TRACE" --label=dokku_phase_script="${PHASE_SCRIPT_KEY}" -d -v "$CACHE_DIR_ON_HOST:/cache" "${ARG_ARRAY[@]}" "$IMAGE" "$DOKKU_APP_SHELL" -c "$COMMAND") if test "$(docker wait "$id")" -eq 0; then dokku_container_log_verbose_quiet "$id" if [[ "$PHASE_SCRIPT_KEY" != "postdeploy" ]];then diff --git a/plugins/apps/pre-delete b/plugins/apps/pre-delete index 8fe4e5fe2..c98cf215e 100755 --- a/plugins/apps/pre-delete +++ b/plugins/apps/pre-delete @@ -5,7 +5,7 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" apps_pre_delete() { declare desc="apps pre-delete plugin trigger" local trigger="apps_pre_delete" - local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG"); local CACHE_DIR="$DOKKU_ROOT/$APP/cache" + local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG"); local CACHE_DIR="$DOKKU_ROOT/$APP/cache"; local CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$APP/cache" verify_app_name "$APP" if ! is_image_herokuish_based "$IMAGE"; then @@ -13,7 +13,7 @@ apps_pre_delete() { fi if [[ -d $CACHE_DIR ]]; then - docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$CACHE_DIR:/cache" "$IMAGE" find /cache -depth -mindepth 1 -maxdepth 1 -exec rm -Rf {} \; || true + docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$CACHE_DIR_ON_HOST:/cache" "$IMAGE" find /cache -depth -mindepth 1 -maxdepth 1 -exec rm -Rf {} \; || true fi } diff --git a/plugins/apps/subcommands/clone b/plugins/apps/subcommands/clone index 1223aeb32..b08f0f268 100755 --- a/plugins/apps/subcommands/clone +++ b/plugins/apps/subcommands/clone @@ -19,6 +19,7 @@ apps_clone_cmd() { [[ -z "$OLD_APP" ]] && dokku_log_fail "Please specify an app to run the command on" [[ -d "$DOKKU_ROOT/$NEW_APP" ]] && dokku_log_fail "Name is already taken" local NEW_CACHE_DIR="$DOKKU_ROOT/$NEW_APP/cache" + local NEW_CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$NEW_APP/cache" apps_create "$NEW_APP" pushd "$DOKKU_ROOT/$OLD_APP/." > /dev/null @@ -26,7 +27,7 @@ apps_clone_cmd() { popd > /dev/null 2>&1 || pushd "/tmp" > /dev/null if [[ -d "$NEW_CACHE_DIR" ]] && ! rmdir "$NEW_CACHE_DIR"; then - docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$NEW_CACHE_DIR:/cache" "dokku/$OLD_APP" chmod 777 -R /cache + docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$NEW_CACHE_DIR_ON_HOST:/cache" "dokku/$OLD_APP" chmod 777 -R /cache fi rm -rf "$NEW_CACHE_DIR" diff --git a/plugins/apps/subcommands/rename b/plugins/apps/subcommands/rename index 34da3df31..2fb9248ed 100755 --- a/plugins/apps/subcommands/rename +++ b/plugins/apps/subcommands/rename @@ -12,9 +12,10 @@ apps_rename_cmd() { local OLD_APP="$2" local NEW_APP="$3" local OLD_CACHE_DIR="$DOKKU_ROOT/$OLD_APP/cache" + local OLD_CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$OLD_APP/cache" if [[ -d "$OLD_CACHE_DIR" ]] && ! rmdir "$OLD_CACHE_DIR"; then - docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$OLD_CACHE_DIR:/cache" "dokku/$OLD_APP" chmod 777 -R /cache + docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$OLD_CACHE_DIR_ON_HOST:/cache" "dokku/$OLD_APP" chmod 777 -R /cache fi rm -rf "$OLD_CACHE_DIR" apps_create "$NEW_APP" diff --git a/plugins/common/functions b/plugins/common/functions index 725a3eae2..7d1d85112 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -434,6 +434,7 @@ dokku_build() { verify_app_name "$APP" local DOKKU_APP_CACHE_DIR="$DOKKU_ROOT/$APP/cache" + local DOKKU_APP_CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$APP/cache" eval "$(config_export app "$APP")" pushd "$TMP_WORK_DIR" &> /dev/null @@ -452,7 +453,7 @@ dokku_build() { declare -a ARG_ARRAY eval "ARG_ARRAY=($DOCKER_ARGS)" # shellcheck disable=SC2086 - cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d -v $DOKKU_APP_CACHE_DIR:/cache -e CACHE_PATH=/cache "${ARG_ARRAY[@]}" $IMAGE /build) + cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d -v $DOKKU_APP_CACHE_DIR_ON_HOST:/cache -e CACHE_PATH=/cache "${ARG_ARRAY[@]}" $IMAGE /build) docker attach "$cid" test "$(docker wait "$cid")" -eq 0 docker commit "$cid" "$IMAGE" > /dev/null diff --git a/plugins/repo/src/subcommands/purge-cache/purge-cache.go b/plugins/repo/src/subcommands/purge-cache/purge-cache.go index 29b04cd75..bf1998e42 100644 --- a/plugins/repo/src/subcommands/purge-cache/purge-cache.go +++ b/plugins/repo/src/subcommands/purge-cache/purge-cache.go @@ -21,11 +21,12 @@ func main() { } cacheDir := strings.Join([]string{common.MustGetEnv("DOKKU_ROOT"), appName, "cache"}, "/") + cacheDirOnHost := strings.Join([]string{common.MustGetEnv("DOKKU_ROOT_ON_HOST"), appName, "cache"}, "/") dokkuGlobalRunArgs := common.MustGetEnv("DOKKU_GLOBAL_RUN_ARGS") image := common.GetDeployingAppImageName(appName, "", "") if info, _ := os.Stat(cacheDir); info != nil && info.IsDir() { purgeCacheCmd := common.NewShellCmd(strings.Join([]string{"docker run --rm", dokkuGlobalRunArgs, - "-v", strings.Join([]string{cacheDir, ":/cache"}, ""), image, + "-v", strings.Join([]string{cacheDirOnHost, ":/cache"}, ""), image, `find /cache -depth -mindepth 1 -maxdepth 1 -exec rm -Rf {} ;`}, " ")) purgeCacheCmd.Execute() err := os.MkdirAll(cacheDir, 0644) From 93dd5c72ece544ed07fe6973ae94a96ae5baa7db Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:05:34 -0400 Subject: [PATCH 03/13] Update dokku --- dokku | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dokku b/dokku index a5b712511..c0341e2c9 100755 --- a/dokku +++ b/dokku @@ -27,7 +27,7 @@ if [[ -d $DOKKU_ROOT/.dokkurc ]]; then done fi [[ $DOKKU_TRACE ]] && set -x -export DOKKU_ROOT_ON_HOST=${DOKKU_ROOT_ON_HOST:=$DOKKU_ROOT} +export DOKKU_HOST_ROOT=${DOKKU_HOST_ROOT:=$DOKKU_ROOT} export DOKKU_DISTRO # shellcheck disable=SC1091 From 4e88c534b7c2d4a712618655cfadd3825625d17e Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:07:24 -0400 Subject: [PATCH 04/13] Update exec-app-json-scripts --- plugins/00_dokku-standard/exec-app-json-scripts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/00_dokku-standard/exec-app-json-scripts b/plugins/00_dokku-standard/exec-app-json-scripts index 268f55e7b..69743041b 100755 --- a/plugins/00_dokku-standard/exec-app-json-scripts +++ b/plugins/00_dokku-standard/exec-app-json-scripts @@ -51,7 +51,7 @@ execute_script() { COMMAND+=" fi " local CACHE_DIR="$DOKKU_ROOT/$APP/cache" - local CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$APP/cache" + local CACHE_HOST_ROOT="$DOKKU_HOST_ROOT/$APP/cache" [[ -d $CACHE_DIR ]] || mkdir -p "$CACHE_DIR" local DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG") @@ -67,7 +67,7 @@ execute_script() { DOKKU_APP_SHELL="$(config_get "$APP" DOKKU_APP_SHELL || echo "$DOKKU_APP_SHELL")" [[ -z "$DOKKU_APP_SHELL" ]] && DOKKU_APP_SHELL="/bin/bash" - id=$(docker run "$DOKKU_GLOBAL_RUN_ARGS" -e DOKKU_TRACE="$DOKKU_TRACE" --label=dokku_phase_script="${PHASE_SCRIPT_KEY}" -d -v "$CACHE_DIR_ON_HOST:/cache" "${ARG_ARRAY[@]}" "$IMAGE" "$DOKKU_APP_SHELL" -c "$COMMAND") + id=$(docker run "$DOKKU_GLOBAL_RUN_ARGS" -e DOKKU_TRACE="$DOKKU_TRACE" --label=dokku_phase_script="${PHASE_SCRIPT_KEY}" -d -v "$CACHE_HOST_ROOT:/cache" "${ARG_ARRAY[@]}" "$IMAGE" "$DOKKU_APP_SHELL" -c "$COMMAND") if test "$(docker wait "$id")" -eq 0; then dokku_container_log_verbose_quiet "$id" if [[ "$PHASE_SCRIPT_KEY" != "postdeploy" ]];then From e5aec5b1416f8c0edd00025eb9c09fba29f49233 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:08:21 -0400 Subject: [PATCH 05/13] Update pre-delete --- plugins/apps/pre-delete | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/apps/pre-delete b/plugins/apps/pre-delete index c98cf215e..18778ea20 100755 --- a/plugins/apps/pre-delete +++ b/plugins/apps/pre-delete @@ -5,7 +5,7 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" apps_pre_delete() { declare desc="apps pre-delete plugin trigger" local trigger="apps_pre_delete" - local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG"); local CACHE_DIR="$DOKKU_ROOT/$APP/cache"; local CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$APP/cache" + local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG"); local CACHE_DIR="$DOKKU_ROOT/$APP/cache"; local CACHE_HOST_ROOT="$DOKKU_HOST_ROOT/$APP/cache" verify_app_name "$APP" if ! is_image_herokuish_based "$IMAGE"; then @@ -13,7 +13,7 @@ apps_pre_delete() { fi if [[ -d $CACHE_DIR ]]; then - docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$CACHE_DIR_ON_HOST:/cache" "$IMAGE" find /cache -depth -mindepth 1 -maxdepth 1 -exec rm -Rf {} \; || true + docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$CACHE_HOST_ROOT:/cache" "$IMAGE" find /cache -depth -mindepth 1 -maxdepth 1 -exec rm -Rf {} \; || true fi } From 23a53b503457223eb92a232ed47cf43a7cc86927 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:09:29 -0400 Subject: [PATCH 06/13] Update exec-app-json-scripts --- plugins/00_dokku-standard/exec-app-json-scripts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/00_dokku-standard/exec-app-json-scripts b/plugins/00_dokku-standard/exec-app-json-scripts index 69743041b..9cbd4540d 100755 --- a/plugins/00_dokku-standard/exec-app-json-scripts +++ b/plugins/00_dokku-standard/exec-app-json-scripts @@ -51,7 +51,7 @@ execute_script() { COMMAND+=" fi " local CACHE_DIR="$DOKKU_ROOT/$APP/cache" - local CACHE_HOST_ROOT="$DOKKU_HOST_ROOT/$APP/cache" + local CACHE_HOST_DIR="$DOKKU_HOST_ROOT/$APP/cache" [[ -d $CACHE_DIR ]] || mkdir -p "$CACHE_DIR" local DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG") @@ -67,7 +67,7 @@ execute_script() { DOKKU_APP_SHELL="$(config_get "$APP" DOKKU_APP_SHELL || echo "$DOKKU_APP_SHELL")" [[ -z "$DOKKU_APP_SHELL" ]] && DOKKU_APP_SHELL="/bin/bash" - id=$(docker run "$DOKKU_GLOBAL_RUN_ARGS" -e DOKKU_TRACE="$DOKKU_TRACE" --label=dokku_phase_script="${PHASE_SCRIPT_KEY}" -d -v "$CACHE_HOST_ROOT:/cache" "${ARG_ARRAY[@]}" "$IMAGE" "$DOKKU_APP_SHELL" -c "$COMMAND") + id=$(docker run "$DOKKU_GLOBAL_RUN_ARGS" -e DOKKU_TRACE="$DOKKU_TRACE" --label=dokku_phase_script="${PHASE_SCRIPT_KEY}" -d -v "$CACHE_HOST_DIR:/cache" "${ARG_ARRAY[@]}" "$IMAGE" "$DOKKU_APP_SHELL" -c "$COMMAND") if test "$(docker wait "$id")" -eq 0; then dokku_container_log_verbose_quiet "$id" if [[ "$PHASE_SCRIPT_KEY" != "postdeploy" ]];then From 02af8398c48f258e04cf423d860ab864267244b7 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:09:43 -0400 Subject: [PATCH 07/13] Update pre-delete --- plugins/apps/pre-delete | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/apps/pre-delete b/plugins/apps/pre-delete index 18778ea20..f3cf812d6 100755 --- a/plugins/apps/pre-delete +++ b/plugins/apps/pre-delete @@ -5,7 +5,7 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" apps_pre_delete() { declare desc="apps pre-delete plugin trigger" local trigger="apps_pre_delete" - local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG"); local CACHE_DIR="$DOKKU_ROOT/$APP/cache"; local CACHE_HOST_ROOT="$DOKKU_HOST_ROOT/$APP/cache" + local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG"); local CACHE_DIR="$DOKKU_ROOT/$APP/cache"; local CACHE_HOST_DIR="$DOKKU_HOST_ROOT/$APP/cache" verify_app_name "$APP" if ! is_image_herokuish_based "$IMAGE"; then @@ -13,7 +13,7 @@ apps_pre_delete() { fi if [[ -d $CACHE_DIR ]]; then - docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$CACHE_HOST_ROOT:/cache" "$IMAGE" find /cache -depth -mindepth 1 -maxdepth 1 -exec rm -Rf {} \; || true + docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$CACHE_HOST_DIR:/cache" "$IMAGE" find /cache -depth -mindepth 1 -maxdepth 1 -exec rm -Rf {} \; || true fi } From 5f9a91aac1180f167a261556ef69d730a0808b7e Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:10:06 -0400 Subject: [PATCH 08/13] Update clone --- plugins/apps/subcommands/clone | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/apps/subcommands/clone b/plugins/apps/subcommands/clone index b08f0f268..7dbff8e8d 100755 --- a/plugins/apps/subcommands/clone +++ b/plugins/apps/subcommands/clone @@ -19,7 +19,7 @@ apps_clone_cmd() { [[ -z "$OLD_APP" ]] && dokku_log_fail "Please specify an app to run the command on" [[ -d "$DOKKU_ROOT/$NEW_APP" ]] && dokku_log_fail "Name is already taken" local NEW_CACHE_DIR="$DOKKU_ROOT/$NEW_APP/cache" - local NEW_CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$NEW_APP/cache" + local NEW_CACHE_HOST_DIRT="$DOKKU_HOST_ROOT/$NEW_APP/cache" apps_create "$NEW_APP" pushd "$DOKKU_ROOT/$OLD_APP/." > /dev/null @@ -27,7 +27,7 @@ apps_clone_cmd() { popd > /dev/null 2>&1 || pushd "/tmp" > /dev/null if [[ -d "$NEW_CACHE_DIR" ]] && ! rmdir "$NEW_CACHE_DIR"; then - docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$NEW_CACHE_DIR_ON_HOST:/cache" "dokku/$OLD_APP" chmod 777 -R /cache + docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$NEW_CACHE_HOST_DIRT:/cache" "dokku/$OLD_APP" chmod 777 -R /cache fi rm -rf "$NEW_CACHE_DIR" From 8cb95063d29bc2bf09cada68ca987ca4206236ae Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:10:34 -0400 Subject: [PATCH 09/13] Update clone --- plugins/apps/subcommands/clone | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/apps/subcommands/clone b/plugins/apps/subcommands/clone index 7dbff8e8d..e9c88d3bf 100755 --- a/plugins/apps/subcommands/clone +++ b/plugins/apps/subcommands/clone @@ -19,7 +19,7 @@ apps_clone_cmd() { [[ -z "$OLD_APP" ]] && dokku_log_fail "Please specify an app to run the command on" [[ -d "$DOKKU_ROOT/$NEW_APP" ]] && dokku_log_fail "Name is already taken" local NEW_CACHE_DIR="$DOKKU_ROOT/$NEW_APP/cache" - local NEW_CACHE_HOST_DIRT="$DOKKU_HOST_ROOT/$NEW_APP/cache" + local NEW_CACHE_HOST_DIR="$DOKKU_HOST_ROOT/$NEW_APP/cache" apps_create "$NEW_APP" pushd "$DOKKU_ROOT/$OLD_APP/." > /dev/null @@ -27,7 +27,7 @@ apps_clone_cmd() { popd > /dev/null 2>&1 || pushd "/tmp" > /dev/null if [[ -d "$NEW_CACHE_DIR" ]] && ! rmdir "$NEW_CACHE_DIR"; then - docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$NEW_CACHE_HOST_DIRT:/cache" "dokku/$OLD_APP" chmod 777 -R /cache + docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$NEW_CACHE_HOST_DIR:/cache" "dokku/$OLD_APP" chmod 777 -R /cache fi rm -rf "$NEW_CACHE_DIR" From 9b72c93a57d179f61f1e1ff1b2e5895ae7adffea Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:11:10 -0400 Subject: [PATCH 10/13] Update rename --- plugins/apps/subcommands/rename | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/apps/subcommands/rename b/plugins/apps/subcommands/rename index 2fb9248ed..d18604445 100755 --- a/plugins/apps/subcommands/rename +++ b/plugins/apps/subcommands/rename @@ -12,10 +12,10 @@ apps_rename_cmd() { local OLD_APP="$2" local NEW_APP="$3" local OLD_CACHE_DIR="$DOKKU_ROOT/$OLD_APP/cache" - local OLD_CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$OLD_APP/cache" + local OLD_CACHE_HOST_DIR="$DOKKU_HOST_ROOT/$OLD_APP/cache" if [[ -d "$OLD_CACHE_DIR" ]] && ! rmdir "$OLD_CACHE_DIR"; then - docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$OLD_CACHE_DIR_ON_HOST:/cache" "dokku/$OLD_APP" chmod 777 -R /cache + docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$OLD_CACHE_HOST_DIR:/cache" "dokku/$OLD_APP" chmod 777 -R /cache fi rm -rf "$OLD_CACHE_DIR" apps_create "$NEW_APP" From 9c5cb7d0f08b5397d144d2e1490596b472faff09 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:12:10 -0400 Subject: [PATCH 11/13] Update functions --- plugins/common/functions | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/common/functions b/plugins/common/functions index 7d1d85112..3b1ad4f8c 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -434,7 +434,7 @@ dokku_build() { verify_app_name "$APP" local DOKKU_APP_CACHE_DIR="$DOKKU_ROOT/$APP/cache" - local DOKKU_APP_CACHE_DIR_ON_HOST="$DOKKU_ROOT_ON_HOST/$APP/cache" + local DOKKU_APP_HOST_CACHE_DIR="$DOKKU_HOST_ROOT/$APP/cache" eval "$(config_export app "$APP")" pushd "$TMP_WORK_DIR" &> /dev/null @@ -453,7 +453,7 @@ dokku_build() { declare -a ARG_ARRAY eval "ARG_ARRAY=($DOCKER_ARGS)" # shellcheck disable=SC2086 - cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d -v $DOKKU_APP_CACHE_DIR_ON_HOST:/cache -e CACHE_PATH=/cache "${ARG_ARRAY[@]}" $IMAGE /build) + cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d -v $DOKKU_APP_HOST_CACHE_DIR:/cache -e CACHE_PATH=/cache "${ARG_ARRAY[@]}" $IMAGE /build) docker attach "$cid" test "$(docker wait "$cid")" -eq 0 docker commit "$cid" "$IMAGE" > /dev/null @@ -947,4 +947,4 @@ suppress_output() { return "$exit_code" } return 0 -} \ No newline at end of file +} From 10fed6ecf08187760b462d75bdd1627b4d34a5f6 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Apr 2018 14:12:52 -0400 Subject: [PATCH 12/13] Update purge-cache.go --- plugins/repo/src/subcommands/purge-cache/purge-cache.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/repo/src/subcommands/purge-cache/purge-cache.go b/plugins/repo/src/subcommands/purge-cache/purge-cache.go index bf1998e42..6a39cde85 100644 --- a/plugins/repo/src/subcommands/purge-cache/purge-cache.go +++ b/plugins/repo/src/subcommands/purge-cache/purge-cache.go @@ -21,12 +21,12 @@ func main() { } cacheDir := strings.Join([]string{common.MustGetEnv("DOKKU_ROOT"), appName, "cache"}, "/") - cacheDirOnHost := strings.Join([]string{common.MustGetEnv("DOKKU_ROOT_ON_HOST"), appName, "cache"}, "/") + cacheHostDir := strings.Join([]string{common.MustGetEnv("DOKKU_HOST_ROOT"), appName, "cache"}, "/") dokkuGlobalRunArgs := common.MustGetEnv("DOKKU_GLOBAL_RUN_ARGS") image := common.GetDeployingAppImageName(appName, "", "") if info, _ := os.Stat(cacheDir); info != nil && info.IsDir() { purgeCacheCmd := common.NewShellCmd(strings.Join([]string{"docker run --rm", dokkuGlobalRunArgs, - "-v", strings.Join([]string{cacheDirOnHost, ":/cache"}, ""), image, + "-v", strings.Join([]string{cacheHostDir, ":/cache"}, ""), image, `find /cache -depth -mindepth 1 -maxdepth 1 -exec rm -Rf {} ;`}, " ")) purgeCacheCmd.Execute() err := os.MkdirAll(cacheDir, 0644) From 1ad89bf53b1425b9ab7c6885bfb28ddf9051b880 Mon Sep 17 00:00:00 2001 From: Jody McIntyre Date: Mon, 16 Apr 2018 18:52:51 -0400 Subject: [PATCH 13/13] Add tests of cache bind directory --- tests/unit/20_build-env.bats | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/unit/20_build-env.bats b/tests/unit/20_build-env.bats index 8addb9dbb..014b8dbbf 100644 --- a/tests/unit/20_build-env.bats +++ b/tests/unit/20_build-env.bats @@ -70,3 +70,28 @@ teardown() { echo "status: "$status assert_output "herokuish" } + +@test "(build-env) DOKKU_ROOT cache bind is used by default" { + deploy_app + + BUILD_CID=$(docker ps -a |grep $TEST_APP |grep /bin/bash | awk '{print $1}') + run /bin/bash -c "docker inspect --format '{{ .HostConfig.Binds }}' $BUILD_CID | tr -d '[]' | cut -f1 -d:" + echo "output: "$output + echo "status: "$status + assert_output "$DOKKU_ROOT/$TEST_APP/cache" +} + +@test "(build-env) DOKKU_HOST_ROOT cache bind is used if set" { + TMP_ROOT=$(mktemp -d) + mkdir -p $DOKKU_ROOT/.dokkurc + echo export DOKKU_HOST_ROOT="$TMP_ROOT" > $DOKKU_ROOT/.dokkurc/HOST_ROOT + DOKKU_HOST_ROOT="$TMP_ROOT" deploy_app + + BUILD_CID=$(docker ps -a |grep $TEST_APP |grep /bin/bash | awk '{print $1}') + run /bin/bash -c "docker inspect --format '{{ .HostConfig.Binds }}' $BUILD_CID | tr -d '[]' | cut -f1 -d:" + echo "output: "$output + echo "status: "$status + assert_output "$TMP_ROOT/$TEST_APP/cache" + + rm -rf $TMP_ROOT $DOKKU_ROOT/.dokkurc/HOST_ROOT +}