From 9c073364f5b98eaf4aa3da4177ff49bb4cf73552 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 5 Sep 2021 00:34:39 -0400 Subject: [PATCH 1/3] feat: set initial container name for docker-local deploys This makes it easier to track a Dokku container vs an intermediate container or something created external to Dokku. The container is properly renamed later on, so the `upcoming` part is just an indicator that the container has potentially not yet passed healthchecks. --- plugins/scheduler-docker-local/scheduler-deploy | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/scheduler-docker-local/scheduler-deploy b/plugins/scheduler-docker-local/scheduler-deploy index 50c51f04d24..69c76fa51f7 100755 --- a/plugins/scheduler-docker-local/scheduler-deploy +++ b/plugins/scheduler-docker-local/scheduler-deploy @@ -84,6 +84,7 @@ trigger-scheduler-docker-local-scheduler-deploy() { DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG" "$PROC_TYPE" "$CONTAINER_INDEX") DOCKER_ARGS+=" --label=com.dokku.process-type=$PROC_TYPE --label=com.dokku.dyno=$DYNO " DOCKER_ARGS+=" --env=DYNO=$DYNO " + DOCKER_ARGS+=" --name=$APP.$DYNO.upcoming " DOCKER_ARGS+=" --init " DOCKER_ARGS+=" $DOCKER_RUN_LABEL_ARGS $DOKKU_GLOBAL_RUN_ARGS " DOCKER_ARGS+=$(: | plugn trigger docker-args-process-deploy "$APP" "$IMAGE_SOURCE_TYPE" "$IMAGE_TAG" "$PROC_TYPE" "$CONTAINER_INDEX") From d1319977d6f13fe84a797659e839c92295a917a0 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 5 Sep 2021 00:35:57 -0400 Subject: [PATCH 2/3] fix: add log message when rename fails and continue This allows folks to later investigate why the rename failed (probably an app bug) and helpfully posts the container logs. If multiple containers fail, they may have a ton of output, but this is better than not knowing what is going on. Closes #3900 --- plugins/scheduler-docker-local/check-deploy | 4 ++-- plugins/scheduler-docker-local/core-post-deploy | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/plugins/scheduler-docker-local/check-deploy b/plugins/scheduler-docker-local/check-deploy index b8d80c472e5..6c204c709a5 100755 --- a/plugins/scheduler-docker-local/check-deploy +++ b/plugins/scheduler-docker-local/check-deploy @@ -87,9 +87,9 @@ trigger-scheduler-docker-local-check-deploy() { local id="$1" rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &>/dev/null || true if [[ $id ]]; then - dokku_log_info2_quiet "$APP $DOKKU_APP_CONTAINER_TYPE container output:" + dokku_log_info2_quiet "Start of $APP $DOKKU_APP_CONTAINER_TYPE container output:" dokku_container_log_verbose_quiet "$id" - dokku_log_info2_quiet "end $APP $DOKKU_APP_CONTAINER_TYPE container output" + dokku_log_info2_quiet "End of $APP $DOKKU_APP_CONTAINER_TYPE container output" fi } trap "checks_check_deploy_cleanup $DOKKU_APP_CONTAINER_ID" RETURN INT TERM EXIT diff --git a/plugins/scheduler-docker-local/core-post-deploy b/plugins/scheduler-docker-local/core-post-deploy index d29f72b0243..5100ebf8477 100755 --- a/plugins/scheduler-docker-local/core-post-deploy +++ b/plugins/scheduler-docker-local/core-post-deploy @@ -55,8 +55,13 @@ trigger-scheduler-docker-local-core-post-deploy() { local ID=$(cat "$container") local CURRENT_NAME=$("$DOCKER_BIN" container inspect --format '{{.Name}}' "$ID" | tr -d /) if [[ -n "$CURRENT_NAME" ]]; then - dokku_log_verbose_quiet "Renaming container (${ID:0:12}) $CURRENT_NAME to $NAME" - "$DOCKER_BIN" container rename "$CURRENT_NAME" "$NAME" >/dev/null + dokku_log_verbose_quiet "Renaming container $CURRENT_NAME (${ID:0:12}) to $NAME" + if ! "$DOCKER_BIN" container rename "$ID" "$NAME" >/dev/null; then + dokku_log_warn "Failed to rename container $CURRENT_NAME (${ID:0:12})" + dokku_log_info2_quiet "Start $APP (${ID:0:12}) container output:" + dokku_container_log_verbose_quiet "$ID" + dokku_log_info2_quiet "End $APP (${ID:0:12}) container output" + fi fi done shopt -u nullglob From 5855fd069f6052b79f6a758a3f0bdca5c3e62678 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 5 Sep 2021 01:15:38 -0400 Subject: [PATCH 3/3] fix: use RANDOM in upcoming name This fixes issues where a previous deploy may have failed, consuming that other slot. --- plugins/scheduler-docker-local/scheduler-deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scheduler-docker-local/scheduler-deploy b/plugins/scheduler-docker-local/scheduler-deploy index 69c76fa51f7..46769164f30 100755 --- a/plugins/scheduler-docker-local/scheduler-deploy +++ b/plugins/scheduler-docker-local/scheduler-deploy @@ -84,7 +84,7 @@ trigger-scheduler-docker-local-scheduler-deploy() { DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG" "$PROC_TYPE" "$CONTAINER_INDEX") DOCKER_ARGS+=" --label=com.dokku.process-type=$PROC_TYPE --label=com.dokku.dyno=$DYNO " DOCKER_ARGS+=" --env=DYNO=$DYNO " - DOCKER_ARGS+=" --name=$APP.$DYNO.upcoming " + DOCKER_ARGS+=" --name=$APP.$DYNO.upcoming-$RANDOM " DOCKER_ARGS+=" --init " DOCKER_ARGS+=" $DOCKER_RUN_LABEL_ARGS $DOKKU_GLOBAL_RUN_ARGS " DOCKER_ARGS+=$(: | plugn trigger docker-args-process-deploy "$APP" "$IMAGE_SOURCE_TYPE" "$IMAGE_TAG" "$PROC_TYPE" "$CONTAINER_INDEX")