#!/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 # # 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}"