gitdataai/docker/build.sh
2026-04-14 19:02:01 +08:00

53 lines
1.3 KiB
Bash

#!/bin/bash
set -e
REGISTRY="${REGISTRY:-harbor.gitdata.me/gta_team}"
TAG="${TAG:-latest}"
BUILD_TARGET="${BUILD_TARGET:-x86_64-unknown-linux-gnu}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR/.."
# All images: (dockerfile, image-name)
declare -A ALL_IMAGES=(
[app]="docker/app.Dockerfile"
[gitserver]="docker/gitserver.Dockerfile"
[email-worker]="docker/email-worker.Dockerfile"
[git-hook]="docker/git-hook.Dockerfile"
[migrate]="docker/migrate.Dockerfile"
[operator]="docker/operator.Dockerfile"
)
# Filter by first argument if provided
TARGETS=("$@")
if [[ ${#TARGETS[@]} -eq 0 ]] || [[ "${TARGETS[0]}" == "all" ]]; then
TARGETS=("${!ALL_IMAGES[@]}")
fi
for name in "${TARGETS[@]}"; do
df="${ALL_IMAGES[$name]}"
if [[ -z "$df" ]]; then
echo "ERROR: unknown image '$name'"
echo "Available: ${!ALL_IMAGES[@]}"
exit 1
fi
if [[ ! -f "$df" ]]; then
echo "ERROR: $df not found"
exit 1
fi
image="${REGISTRY}/${name}:${TAG}"
echo "==> Building $image"
docker build \
--build-arg BUILD_TARGET="${BUILD_TARGET}" \
-f "$df" \
-t "$image" \
.
echo "==> $image done"
echo ""
done
echo "==> All images built:"
for name in "${TARGETS[@]}"; do
echo " ${REGISTRY}/${name}:${TAG}"
done