Files
videoroll/scripts/build_export_prod.sh

79 lines
2.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"
ENV_FILE="${ENV_FILE:-deploy_compose/.env}"
APP_IMAGE="${APP_IMAGE:-videoroll:prod}"
WEB_IMAGE="${WEB_IMAGE:-videoroll-web:prod}"
INCLUDE_BASE_IMAGES="${INCLUDE_BASE_IMAGES:-1}"
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
OUTPUT_TAR="${OUTPUT_TAR:-$ROOT_DIR/videoroll-prod-bundle-${TIMESTAMP}.tar}"
if [[ ! -f "$ENV_FILE" ]]; then
echo "env file not found: $ENV_FILE" >&2
exit 1
fi
set -a
. "$ENV_FILE"
set +a
DOCKER_BIN="${DOCKER_BIN:-docker}"
if ! "$DOCKER_BIN" info >/dev/null 2>&1; then
if command -v sudo >/dev/null 2>&1; then
DOCKER_BIN="sudo docker"
fi
fi
docker_run() {
# shellcheck disable=SC2086
$DOCKER_BIN "$@"
}
echo "Using env file: $ENV_FILE"
echo "Building app image: $APP_IMAGE"
docker_run build \
-t "$APP_IMAGE" \
--build-arg INSTALL_ASR="${INSTALL_ASR:-1}" \
--build-arg YTDLP_VERSION="${YTDLP_VERSION:-latest}" \
-f Dockerfile \
.
echo "Building web image: $WEB_IMAGE"
docker_run build \
-t "$WEB_IMAGE" \
--build-arg VITE_ORCHESTRATOR_URL="${VITE_ORCHESTRATOR_URL:-}" \
--build-arg VITE_SUBTITLE_SERVICE_URL="${VITE_SUBTITLE_SERVICE_URL:-}" \
--build-arg VITE_YOUTUBE_INGEST_URL="${VITE_YOUTUBE_INGEST_URL:-}" \
--build-arg VITE_BILIBILI_PUBLISHER_URL="${VITE_BILIBILI_PUBLISHER_URL:-}" \
-f src/web/Dockerfile \
src/web
IMAGES=("$APP_IMAGE" "$WEB_IMAGE")
if [[ "$INCLUDE_BASE_IMAGES" == "1" ]]; then
echo "Pulling base service images"
docker_run pull redis:7
docker_run pull minio/minio:latest
docker_run pull minio/mc:latest
IMAGES+=("redis:7" "minio/minio:latest" "minio/mc:latest")
fi
echo "Exporting images to: $OUTPUT_TAR"
docker_run save -o "$OUTPUT_TAR" "${IMAGES[@]}"
if command -v sha256sum >/dev/null 2>&1; then
sha256sum "$OUTPUT_TAR" | tee "${OUTPUT_TAR}.sha256"
fi
echo
echo "Done."
echo "Bundle: $OUTPUT_TAR"
if [[ -f "${OUTPUT_TAR}.sha256" ]]; then
echo "SHA256: ${OUTPUT_TAR}.sha256"
fi
echo
echo "Import on target machine:"
echo " docker load -i $(basename "$OUTPUT_TAR")"