diff --git a/base-notebook/hooks/apply_tags b/base-notebook/hooks/apply_tags
new file mode 100644
index 0000000000..580fae9762
--- /dev/null
+++ b/base-notebook/hooks/apply_tags
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -e
+
+# Tag the latest build with the short git sha as well as version of key runtimes
+# and packages.
+GIT_SHA_TAG=${SOURCE_COMMIT:0:12}
+docker tag $IMAGE_NAME "$DOCKER_REPO:$GIT_SHA_TAG"
+PY_VERSION_TAG="python-$(docker run --rm ${IMAGE_NAME} python --version 2>&1 | awk '{print $2}')"
+docker tag $IMAGE_NAME "$DOCKER_REPO:$PY_VERSION_TAG"
+NB_VERSION_TAG="notebook-$(docker run --rm -a STDOUT ${IMAGE_NAME} jupyter-notebook --version | tr -d '\r')"
+docker tag $IMAGE_NAME "$DOCKER_REPO:${NB_VERSION_TAG%% }"
+LAB_VERSION_TAG="lab-$(docker run --rm -a STDOUT ${IMAGE_NAME} jupyter-lab --version | tr -d '\r')"
+docker tag $IMAGE_NAME "$DOCKER_REPO:${LAB_VERSION_TAG%%\r}"
+HUB_VERSION_TAG="hub-$(docker run --rm -a STDOUT ${IMAGE_NAME} jupyterhub --version | tr -d '\r')"
+docker tag $IMAGE_NAME "$DOCKER_REPO:${HUB_VERSION_TAG%%\r}"
\ No newline at end of file
diff --git a/base-notebook/hooks/index.tmpl b/base-notebook/hooks/index.tmpl
index fb2c60560c..c6f8f897f1 100644
--- a/base-notebook/hooks/index.tmpl
+++ b/base-notebook/hooks/index.tmpl
@@ -1,2 +1,2 @@
-INDEX_ROW="|\`${BUILD_TIMESTAMP}\`|\`jupyter/${IMAGE_SHORT_NAME}:${GIT_SHA_TAG}\`|[Git diff](https://github.com/jupyter/docker-stacks/commit/${SOURCE_COMMIT})
[Dockerfile](https://github.com/jupyter/docker-stacks/blob/${SOURCE_COMMIT}/${IMAGE_SHORT_NAME}/Dockerfile)
[Build manifest](./${IMAGE_SHORT_NAME}-${GIT_SHA_TAG})|"
+INDEX_ROW="|\`${BUILD_TIMESTAMP}\`|\`jupyter/${IMAGE_SHORT_NAME}:${GIT_SHA_TAG}\`
\`jupyter/${IMAGE_SHORT_NAME}:${PY_VERSION_TAG}\`
\`jupyter/${IMAGE_SHORT_NAME}:${NB_VERSION_TAG}\`
\`jupyter/${IMAGE_SHORT_NAME}:${LAB_VERSION_TAG}\`
\`jupyter/${IMAGE_SHORT_NAME}:${HUB_VERSION_TAG}\`|[Git diff](https://github.com/jupyter/docker-stacks/commit/${SOURCE_COMMIT})
[Dockerfile](https://github.com/jupyter/docker-stacks/blob/${SOURCE_COMMIT}/${IMAGE_SHORT_NAME}/Dockerfile)
[Build manifest](./${IMAGE_SHORT_NAME}-${GIT_SHA_TAG})|"
sed "/|-|/a ${INDEX_ROW}" -i "$INDEX_FILE"
\ No newline at end of file
diff --git a/base-notebook/hooks/post_push b/base-notebook/hooks/post_push
index 901e8b1750..d453d94077 100755
--- a/base-notebook/hooks/post_push
+++ b/base-notebook/hooks/post_push
@@ -1,11 +1,9 @@
#!/bin/bash
set -e
-# Tag the latest build with the short git sha. Push the tag in addition
-# to the "latest" tag already pushed.
-GIT_SHA_TAG=${SOURCE_COMMIT:0:12}
-docker tag $IMAGE_NAME $DOCKER_REPO:$GIT_SHA_TAG
-docker push $DOCKER_REPO:$GIT_SHA_TAG
+# Apply and push all tags
+source hooks/apply_tags
+docker push $DOCKER_REPO
# Create a working directory.
BUILD_TIMESTAMP=$(date -u +%FT%TZ)