feat: add offline docker bundle for enterprise clean releases
This commit is contained in:
58
scripts/build_offline_docker_bundle.sh
Executable file
58
scripts/build_offline_docker_bundle.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# [DEF:scripts.build_offline_docker_bundle:Module]
|
||||
# @PURPOSE: Build and export an offline Docker bundle for enterprise-clean releases.
|
||||
# [/DEF:scripts.build_offline_docker_bundle:Module]
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
DIST_ROOT="${PROJECT_ROOT}/dist/docker"
|
||||
|
||||
TAG="${1:-v1.0.0-rc2}"
|
||||
POSTGRES_IMAGE="${POSTGRES_IMAGE:-postgres:16-alpine}"
|
||||
BACKEND_IMAGE="ss-tools-backend:${TAG}"
|
||||
FRONTEND_IMAGE="ss-tools-frontend:${TAG}"
|
||||
|
||||
mkdir -p "${DIST_ROOT}"
|
||||
|
||||
cd "${PROJECT_ROOT}"
|
||||
|
||||
echo "[offline-bundle] building backend image ${BACKEND_IMAGE}"
|
||||
docker build -f docker/backend.Dockerfile -t "${BACKEND_IMAGE}" .
|
||||
|
||||
echo "[offline-bundle] building frontend image ${FRONTEND_IMAGE}"
|
||||
docker build -f docker/frontend.Dockerfile -t "${FRONTEND_IMAGE}" .
|
||||
|
||||
echo "[offline-bundle] pulling postgres image ${POSTGRES_IMAGE}"
|
||||
docker pull "${POSTGRES_IMAGE}"
|
||||
|
||||
echo "[offline-bundle] exporting tar archives"
|
||||
docker save -o "${DIST_ROOT}/backend.${TAG}.tar" "${BACKEND_IMAGE}"
|
||||
docker save -o "${DIST_ROOT}/frontend.${TAG}.tar" "${FRONTEND_IMAGE}"
|
||||
docker save -o "${DIST_ROOT}/postgres.${TAG}.tar" "${POSTGRES_IMAGE}"
|
||||
|
||||
echo "[offline-bundle] calculating checksums"
|
||||
(
|
||||
cd "${DIST_ROOT}"
|
||||
sha256sum "backend.${TAG}.tar" "frontend.${TAG}.tar" "postgres.${TAG}.tar" > "sha256sums.${TAG}.txt"
|
||||
)
|
||||
|
||||
cat > "${DIST_ROOT}/manifest.${TAG}.txt" <<EOF
|
||||
release_tag=${TAG}
|
||||
backend_image=${BACKEND_IMAGE}
|
||||
frontend_image=${FRONTEND_IMAGE}
|
||||
postgres_image=${POSTGRES_IMAGE}
|
||||
compose_file=docker-compose.enterprise-clean.yml
|
||||
env_template=.env.enterprise-clean.example
|
||||
generated_at_utc=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||
EOF
|
||||
|
||||
cp "${PROJECT_ROOT}/docker-compose.enterprise-clean.yml" "${DIST_ROOT}/docker-compose.enterprise-clean.yml"
|
||||
cp "${PROJECT_ROOT}/.env.enterprise-clean.example" "${DIST_ROOT}/.env.enterprise-clean.example"
|
||||
|
||||
echo "[offline-bundle] bundle created in ${DIST_ROOT}"
|
||||
echo "[offline-bundle] next step:"
|
||||
echo " docker load -i ${DIST_ROOT}/backend.${TAG}.tar"
|
||||
echo " docker load -i ${DIST_ROOT}/frontend.${TAG}.tar"
|
||||
echo " docker load -i ${DIST_ROOT}/postgres.${TAG}.tar"
|
||||
Reference in New Issue
Block a user