Basis: Certvia dev@a48c5fb als Fundament für Craftvia
Unveränderter Stand von certvia/dev (a48c5fb) plus Craftvia-Spezifikation und Brandbook unter docs/craftvia/. ISMS-Module werden im Folgecommit entfernt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
# Plan B — Prod-Images auf einem leistungsfähigen amd64-Host bauen und in die
|
||||
# Registry pushen, damit der Prod-Host (Coolify) nur noch PULLT statt zu bauen.
|
||||
#
|
||||
# Voraussetzungen auf dem Build-Host:
|
||||
# - Docker mit BuildKit, Architektur amd64 (empfohlen: interner Server, der die
|
||||
# Test-Instanz baut). Auf arm64 (z. B. Mac) läuft es via Emulation, aber langsam.
|
||||
# - Vorher an der Registry angemeldet: docker login "$REGISTRY_HOST"
|
||||
#
|
||||
# Aufruf (im Repo-Root, auf dem gewünschten Commit ausgecheckt):
|
||||
# REGISTRY=git.certvia.de/msolarczek TAG=$(git rev-parse --short HEAD) ./scripts/build-and-push-images.sh
|
||||
#
|
||||
# Env-Variablen:
|
||||
# REGISTRY Image-Präfix (Default: git.certvia.de/msolarczek)
|
||||
# TAG Image-Tag (Default: kurzer Git-SHA des aktuellen HEAD)
|
||||
# PLATFORM Zielplattform (Default: linux/amd64 — passend zum Prod-Host)
|
||||
# ALSO_MAIN wenn "true": zusätzlich das bewegliche Tag :main setzen/pushen
|
||||
set -euo pipefail
|
||||
|
||||
REGISTRY="${REGISTRY:-git.certvia.de/msolarczek}"
|
||||
TAG="${TAG:-$(git rev-parse --short HEAD)}"
|
||||
PLATFORM="${PLATFORM:-linux/amd64}"
|
||||
ALSO_MAIN="${ALSO_MAIN:-false}"
|
||||
REGISTRY_HOST="${REGISTRY%%/*}"
|
||||
|
||||
echo ">> Registry: $REGISTRY"
|
||||
echo ">> Tag: $TAG"
|
||||
echo ">> Plattform: $PLATFORM"
|
||||
echo ">> Login-Host: $REGISTRY_HOST (vorher: docker login $REGISTRY_HOST)"
|
||||
echo
|
||||
|
||||
export DOCKER_BUILDKIT=1
|
||||
|
||||
# target -> Image-Name (siehe docker-compose.coolify.prebuilt.yml)
|
||||
build_one() {
|
||||
local target="$1" name="$2"
|
||||
echo ">> Baue $name (target=$target) ..."
|
||||
docker build --platform "$PLATFORM" --target "$target" \
|
||||
-t "$REGISTRY/$name:$TAG" \
|
||||
$( [ "$ALSO_MAIN" = "true" ] && echo -t "$REGISTRY/$name:main" ) \
|
||||
.
|
||||
}
|
||||
|
||||
# migrate + runner teilen sich die teuren Stages deps/builder (npm ci + next build).
|
||||
# Sequentiell auf demselben Host -> zweiter Build nutzt den Layer-Cache des ersten.
|
||||
build_one runner certvia-app
|
||||
build_one migrate certvia-migrate
|
||||
build_one garage certvia-garage
|
||||
|
||||
echo
|
||||
echo ">> Push ..."
|
||||
for name in certvia-app certvia-migrate certvia-garage; do
|
||||
docker push "$REGISTRY/$name:$TAG"
|
||||
[ "$ALSO_MAIN" = "true" ] && docker push "$REGISTRY/$name:main" || true
|
||||
done
|
||||
|
||||
echo
|
||||
echo ">> Fertig. In Coolify (Prod) setzen: IMAGE_TAG=$TAG (und ggf. REGISTRY=$REGISTRY)"
|
||||
Reference in New Issue
Block a user