diff --git a/plugins/00_dokku-standard/exec-app-json-scripts b/plugins/00_dokku-standard/exec-app-json-scripts index 949625921..7ba6b6eca 100755 --- a/plugins/00_dokku-standard/exec-app-json-scripts +++ b/plugins/00_dokku-standard/exec-app-json-scripts @@ -23,21 +23,24 @@ get_phase_script() { execute_script() { declare desc="executes appropriate phase script key from app.json" local APP="$1"; local IMAGE="$2"; local PHASE_SCRIPT_KEY="$3" - local SCRIPT_CMD=$(get_phase_script "$IMAGE" "$PHASE_SCRIPT_KEY") + local SCRIPT_CMD=$(get_phase_script "$IMAGE" "$PHASE_SCRIPT_KEY" 2>/dev/null) if [[ -n "$SCRIPT_CMD" ]];then dokku_log_info1 "Running '$SCRIPT_CMD' in app container" - local COMMAND="cd /app ; " + local COMMAND="export HOME=/app ; " + local COMMAND+=" cd \$HOME ; " local COMMAND+=" for file in /app/.profile.d/*; do source \$file; done ; " local COMMAND+=" echo restoring installation cache... ; " - local COMMAND+=" cp -rfp /cache /tmp/ || true ; " - local COMMAND+=" $SCRIPT_CMD ; " + local COMMAND+=" rm -rf /tmp/cache || true ; " + local COMMAND+=" ln -sf /cache /tmp/cache || true ; " + local COMMAND+=" $SCRIPT_CMD ; RC=\$? ;" local COMMAND+=" echo removing installation cache... ; " - local COMMAND+=" rm -rf /tmp/cache || true " + local COMMAND+=" rm -f /tmp/cache || true ; " + local COMMAND+=" exit \$RC " local DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP") local CACHE_DIR="$DOKKU_ROOT/$APP/cache" # shellcheck disable=SC2086 local id=$(docker run "$DOKKU_GLOBAL_RUN_ARGS" --label=dokku_phase_script="${PHASE_SCRIPT_KEY}" -d -v "$CACHE_DIR:/cache" $DOCKER_ARGS "$IMAGE" /bin/bash -c "$COMMAND") - test "$(docker wait "$id")" -eq 0 + test "$(docker wait "$id")" -eq 0 || (dokku_container_log_verbose_quiet "$id"; exit 1) dokku_container_log_verbose_quiet "$id" if [[ "$PHASE_SCRIPT_KEY" != "postdeploy" ]];then docker commit "$id" "$IMAGE" > /dev/null diff --git a/plugins/config/docker-args-deploy b/plugins/config/docker-args-deploy index b6d0bf534..8d2ab297e 100755 --- a/plugins/config/docker-args-deploy +++ b/plugins/config/docker-args-deploy @@ -15,9 +15,9 @@ config_docker_args() { config_export global | sed -e "s:^export ::g" -e "s:=':=:g" -e "s:'$::g" > "$DOCKERFILE_ENV_FILE" config_export app "$APP" | sed -e "s:^export ::g" -e "s:=':=:g" -e "s:'$::g" >> "$DOCKERFILE_ENV_FILE" - echo "$STDIN --env-file=$DOCKERFILE_ENV_FILE" + echo -n "$STDIN --env-file=$DOCKERFILE_ENV_FILE" else - echo "$STDIN" + echo -n "$STDIN" fi } diff --git a/plugins/docker-options/docker-args-deploy b/plugins/docker-options/docker-args-deploy index 7d71f39eb..608cf6ef8 100755 --- a/plugins/docker-options/docker-args-deploy +++ b/plugins/docker-options/docker-args-deploy @@ -72,7 +72,7 @@ docker_args() { done < "$PHASE_FILE_PATH" fi - echo "$STDIN$output" + echo -n "$STDIN$output" } docker_args "$@" diff --git a/tests/unit/20_docker-options.bats b/tests/unit/20_docker-options.bats index 86636d7f9..cca543ceb 100644 --- a/tests/unit/20_docker-options.bats +++ b/tests/unit/20_docker-options.bats @@ -148,6 +148,12 @@ teardown() { echo "status: "$status assert_success deploy_app + + CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1) + run /bin/bash -c "docker inspect -f '{{ .Config.Volumes }}' $CID" + echo "output: "$output + echo "status: "$status + assert_output "map[/tmp:{} /var/tmp:{}]" } @test "(docker-options) docker-options:add (all phases over SSH)" {