From 2c34a60a8d830ed3a877f80fa19d2acf140536ae Mon Sep 17 00:00:00 2001 From: Michael Hobbs Date: Tue, 24 Nov 2015 11:13:50 -0800 Subject: [PATCH] filter incompatible docker option when building dockerfile vs herokuish apps. closes #1609 --- docs/development/plugin-triggers.md | 2 +- plugins/00_dokku-standard/commands | 4 +-- plugins/docker-options/docker-args-deploy | 32 +++++++++++++++++++++-- tests/unit/docker-options.bats | 12 +++++++++ 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index 260b98933..1cf4fb339 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -459,7 +459,7 @@ dokku config:set --no-restart $APP MANUALLY_STOPPED=1 - Description: - Invoked by: `dokku build` -- Arguments: `$APP` +- Arguments: `$APP $IMAGE_SOURCE_TYPE` - Example: ```shell diff --git a/plugins/00_dokku-standard/commands b/plugins/00_dokku-standard/commands index 2591e90b2..b8ff20bef 100755 --- a/plugins/00_dokku-standard/commands +++ b/plugins/00_dokku-standard/commands @@ -23,7 +23,7 @@ case "$1" in [[ -d $CACHE_DIR ]] || mkdir $CACHE_DIR plugn trigger pre-build-buildpack "$APP" - DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP) + DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP $IMAGE_SOURCE_TYPE) [[ "$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 @@ -40,7 +40,7 @@ case "$1" in 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) + DOCKER_ARGS=$(: | plugn trigger docker-args-build $APP $IMAGE_SOURCE_TYPE) docker build $DOCKER_ARGS $DOKKU_DOCKER_BUILD_OPTS -t "$IMAGE" . plugn trigger post-build-dockerfile "$APP" diff --git a/plugins/docker-options/docker-args-deploy b/plugins/docker-options/docker-args-deploy index e9620db68..d0cc4b19d 100755 --- a/plugins/docker-options/docker-args-deploy +++ b/plugins/docker-options/docker-args-deploy @@ -2,7 +2,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x STDIN=$(cat) -APP="$1" +APP="$1"; IMAGE_SOURCE_TYPE="$2" case "$0" in *docker-args-build) @@ -34,7 +34,35 @@ if [[ -f "$PHASE_FILE_PATH" ]]; then continue ;; *) - output="$output $line" + case "$IMAGE_SOURCE_TYPE" in + dockerfile) + case "$line" in + --link*|-v*) + continue + ;; + + *) + output="$output $line" + ;; + esac + ;; + + herokuish) + case "$line" in + --file*|--build-args*) + continue + ;; + + *) + output="$output $line" + ;; + esac + ;; + + *) + output="$output $line" + ;; + esac ;; esac done < $PHASE_FILE_PATH diff --git a/tests/unit/docker-options.bats b/tests/unit/docker-options.bats index 3b772c34d..e6d56edf2 100644 --- a/tests/unit/docker-options.bats +++ b/tests/unit/docker-options.bats @@ -160,3 +160,15 @@ teardown() { echo "status: "$status assert_success } + +@test "docker-options (dockerfile deploy with link)" { + run /bin/bash -c "dokku docker-options:add $TEST_APP deploy \"-v /var/tmp\"" + echo "output: "$output + echo "status: "$status + assert_success + run /bin/bash -c "dokku docker-options:add $TEST_APP build \"--link postgres\"" + echo "output: "$output + echo "status: "$status + assert_success + deploy_app dockerfile +}