Files
symclaw/scripts/docker-build.sh
T

44 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
IMAGE="ghcr.io/symclaw/symclaw"
# Extract version from workspace Cargo.toml
VERSION=$(grep -m1 'version *= *"' "$PROJECT_DIR/Cargo.toml" | sed 's/.*"\(.*\)".*/\1/')
PUSH=false
PLATFORM=""
while [[ $# -gt 0 ]]; do
case "$1" in
--push) PUSH=true; shift ;;
--platform) PLATFORM="$2"; shift 2 ;;
*) echo "Usage: $0 [--push] [--platform linux/amd64,linux/arm64]"; exit 1 ;;
esac
done
export DOCKER_BUILDKIT=1
BUILD_ARGS=(
-t "${IMAGE}:${VERSION}"
-t "${IMAGE}:latest"
-f "$PROJECT_DIR/Dockerfile"
)
if [[ -n "$PLATFORM" ]]; then
BUILD_ARGS+=(--platform "$PLATFORM")
fi
if $PUSH; then
BUILD_ARGS+=(--push)
echo "Building and pushing ${IMAGE}:{${VERSION},latest} (platform: ${PLATFORM:-default})…"
docker buildx build "${BUILD_ARGS[@]}" "$PROJECT_DIR"
else
echo "Building ${IMAGE}:{${VERSION},latest}…"
docker build "${BUILD_ARGS[@]}" "$PROJECT_DIR"
fi
echo "Done."