c885aba313
infra/dev: compose stack on the Mac (server kvitt-server:dev, on-demand backup), .env.example, build/up/logs/backup/copy-google-services scripts. No Caddy, no TLS (debug builds accept http to private LAN addresses, AC-2.8). Bind-mounted data. infra/backup: alpine 3.24.2 image and backup.sh (SPEC 10.9; Drive upload skipped when RCLONE_FOLDER_ID is empty). infra/README.md for the dev stack and Firebase. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 lines
1.7 KiB
Bash
Executable File
43 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Builds the development images on this Mac (native linux/arm64, nothing pushed):
|
|
# kvitt-server:dev from server/Dockerfile (milestone M2a)
|
|
# kvitt-backup:dev from infra/backup/Dockerfile
|
|
# Usage: infra/dev/build.sh [server|backup|all] (default: all)
|
|
# Refuses to run while a Gradle build holds the gradle-serial lock (CLAUDE.md: never build images during a Gradle build).
|
|
set -euo pipefail
|
|
# shellcheck source=lib.sh
|
|
. "$(dirname "$0")/lib.sh"
|
|
|
|
what="${1:-all}"
|
|
lock=/tmp/kvitt-gradle.lock
|
|
if [[ -d "$lock" ]] && pid="$(cat "$lock/pid" 2>/dev/null)" && [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then
|
|
echo "build.sh: a Gradle build is running (pid $pid, $lock); try again when it is done." >&2
|
|
exit 1
|
|
fi
|
|
|
|
server_image="$(env_value KVITT_SERVER_IMAGE)"; server_image="${server_image:-kvitt-server:dev}"
|
|
backup_image="$(env_value KVITT_BACKUP_IMAGE)"; backup_image="${backup_image:-kvitt-backup:dev}"
|
|
|
|
build_server() {
|
|
local dockerfile="$repo_root/server/Dockerfile"
|
|
local context="${KVITT_SERVER_BUILD_CONTEXT:-$repo_root/server}"
|
|
if [[ ! -f "$dockerfile" ]]; then
|
|
echo "build.sh: $dockerfile does not exist yet (it comes with milestone M2a)." >&2
|
|
return 1
|
|
fi
|
|
echo "Building $server_image from server/Dockerfile"
|
|
docker build --platform linux/arm64 -f "$dockerfile" -t "$server_image" "$context"
|
|
}
|
|
|
|
build_backup() {
|
|
echo "Building $backup_image from infra/backup/Dockerfile"
|
|
docker build --platform linux/arm64 -f "$repo_root/infra/backup/Dockerfile" -t "$backup_image" "$repo_root/infra/backup"
|
|
}
|
|
|
|
case "$what" in
|
|
server) build_server ;;
|
|
backup) build_backup ;;
|
|
all) build_backup; build_server ;;
|
|
*) echo "usage: $0 [server|backup|all]" >&2; exit 2 ;;
|
|
esac
|