diff --git a/common-functions b/common-functions index 6b3e291..2b277a6 100755 --- a/common-functions +++ b/common-functions @@ -501,12 +501,18 @@ service_exposed_ports() { service_image_exists() { declare desc="check if the current image exists" - declare SERVICE="$1" + declare SERVICE="$1" PLUGIN_IMAGE="${2:-$PLUGIN_IMAGE}" PLUGIN_IMAGE_VERSION="${3:-$PLUGIN_IMAGE_VERSION}" local plugin_image="$PLUGIN_IMAGE" local plugin_image_version="$PLUGIN_IMAGE_VERSION" - [[ -f "$SERVICE_ROOT/IMAGE" ]] && plugin_image="$(cat "$SERVICE_ROOT/IMAGE")" - [[ -f "$SERVICE_ROOT/IMAGE_VERSION" ]] && plugin_image_version="$(cat "$SERVICE_ROOT/IMAGE_VERSION")" + if [[ -z "$PLUGIN_IMAGE" ]] && [[ -f "$SERVICE_ROOT/IMAGE" ]]; then + plugin_image="$(cat "$SERVICE_ROOT/IMAGE")" + fi + + if [[ -z "$PLUGIN_IMAGE_VERSION" ]] && [[ -f "$SERVICE_ROOT/IMAGE_VERSION" ]]; then + plugin_image_version="$(cat "$SERVICE_ROOT/IMAGE_VERSION")" + fi + local IMAGE="$plugin_image:$plugin_image_version" if [[ "$("$DOCKER_BIN" image ls -q "$IMAGE" 2>/dev/null)" == "" ]]; then diff --git a/subcommands/upgrade b/subcommands/upgrade index 880f7cd..788c767 100755 --- a/subcommands/upgrade +++ b/subcommands/upgrade @@ -28,17 +28,7 @@ service-upgrade-cmd() { service_parse_args "${@:2}" - if ! service_image_exists "$SERVICE"; then - dokku_log_fail "Unable to proceed with upgrade, image ${PLUGIN_IMAGE}:${PLUGIN_IMAGE_VERSION} does not exist" - fi - - local NEW_PLUGIN_IMAGE_TAG="$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" - if [[ "$(service_version "$SERVICE")" == "$NEW_PLUGIN_IMAGE_TAG" ]]; then - dokku_log_info1 "Service $SERVICE already running $NEW_PLUGIN_IMAGE_TAG" - return - fi - - if ! service_image_exists "$SERVICE"; then + if ! service_image_exists "$SERVICE" "$PLUGIN_IMAGE" "$PLUGIN_IMAGE_VERSION"; then if [[ "$PLUGIN_DISABLE_PULL" == "true" ]]; then dokku_log_warn "${PLUGIN_DISABLE_PULL_VARIABLE} environment variable detected. Not running pull command." 1>&2 dokku_log_warn " docker image pull ${IMAGE}" 1>&2 @@ -48,6 +38,12 @@ service-upgrade-cmd() { "$DOCKER_BIN" image pull "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" || dokku_log_fail "$PLUGIN_SERVICE image $PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION pull failed" fi + local NEW_PLUGIN_IMAGE_TAG="$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" + if [[ "$(service_version "$SERVICE")" == "$NEW_PLUGIN_IMAGE_TAG" ]]; then + dokku_log_info1 "Service $SERVICE already running $NEW_PLUGIN_IMAGE_TAG" + return + fi + service_commit_config "$SERVICE" dokku_log_info2 "Upgrading $SERVICE to $NEW_PLUGIN_IMAGE_TAG"