Files
jukebox_maker/ops/build-image.sh
2026-04-23 21:47:35 +03:00

48 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# Build a Docker image locally.
#
# Usage (interactive — prompts for missing values):
# ./ops/build-image.sh
#
# Usage (non-interactive — all values as positional args):
# ./ops/build-image.sh <tag> <image>
#
# Example:
# ./ops/build-image.sh v1.0 registry.example.com/myorg/myapp
set -eu
ROOT_DIR=$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)
command -v docker >/dev/null 2>&1 || { echo "error: docker not found in PATH" >&2; exit 1; }
DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev)
ask() {
if [ -n "$3" ]; then
printf "%s [%s]: " "$2" "$3" >&2
else
printf "%s: " "$2" >&2
fi
read -r _val
eval "$1=\"\${_val:-$3}\""
}
if [ $# -ge 2 ]; then
IMAGE_TAG="$1"
IMAGE="$2"
elif [ $# -ge 1 ]; then
IMAGE_TAG="$1"
ask IMAGE "Image" ""
else
ask IMAGE_TAG "Tag" "${DEFAULT_TAG}"
ask IMAGE "Image" ""
fi
echo "building ${IMAGE}:${IMAGE_TAG}"
docker build \
-f "${ROOT_DIR}/Dockerfile" \
-t "${IMAGE}:${IMAGE_TAG}" \
-t "${IMAGE}:latest" \
"${ROOT_DIR}"