MarketingSystemDataTool/scripts/deploy_image.sh

70 lines
2.2 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ENV=${1:-test}
IMAGE=${2:-marketingsystemdatatool_msdt:latest}
CMD=${3:-up}
PLATFORM=${PLATFORM:-}
if [ -z "$PLATFORM" ]; then
ARCH=$(uname -m)
case "$ARCH" in
x86_64) PLATFORM="linux/amd64" ;;
aarch64) PLATFORM="linux/arm64" ;;
*) PLATFORM="linux/amd64" ;;
esac
fi
ROOT_DIR=$(cd "$(dirname "$0")/.." && pwd)
if [ -f "$ROOT_DIR/.env.$ENV" ]; then
set -a
. "$ROOT_DIR/.env.$ENV"
set +a
fi
case "$CMD" in
up)
docker rm -f msdt >/dev/null 2>&1 || true
PLATFORM_FLAG=""
if [ -n "$PLATFORM" ]; then PLATFORM_FLAG="--platform $PLATFORM"; fi
IMG_ARCH=""
if docker image inspect "$IMAGE" >/dev/null 2>&1; then
IMG_ARCH=$(docker image inspect "$IMAGE" --format '{{.Architecture}}' 2>/dev/null || echo "")
fi
if [ -n "$IMG_ARCH" ]; then
HOST_ARCH=$(uname -m)
case "$HOST_ARCH" in x86_64) HOST_ARCH="amd64" ;; aarch64) HOST_ARCH="arm64" ;; *) HOST_ARCH="amd64" ;; esac
if [ "$IMG_ARCH" != "$HOST_ARCH" ]; then
docker pull --platform "$PLATFORM" "$IMAGE" >/dev/null 2>&1 || true
PLATFORM_FLAG="--platform $PLATFORM"
fi
else
docker pull --platform "$PLATFORM" "$IMAGE" >/dev/null 2>&1 || true
fi
docker run -d --name msdt $PLATFORM_FLAG \
-p 8077:8077 \
-e APP_ENV="$ENV" \
-e MARKETING_DB_HOST="${MARKETING_DB_HOST:-}" \
-e MARKETING_DB_PORT="${MARKETING_DB_PORT:-}" \
-e MARKETING_DB_USER="${MARKETING_DB_USER:-}" \
-e MARKETING_DB_PASSWORD="${MARKETING_DB_PASSWORD:-}" \
-e MARKETING_DB_NAME="${MARKETING_DB_NAME:-}" \
-e YMT_DB_HOST="${YMT_DB_HOST:-}" \
-e YMT_DB_PORT="${YMT_DB_PORT:-}" \
-e YMT_DB_USER="${YMT_DB_USER:-}" \
-e YMT_DB_PASSWORD="${YMT_DB_PASSWORD:-}" \
-e YMT_DB_NAME="${YMT_DB_NAME:-}" \
-v "$ROOT_DIR/server/storage:/app/storage" \
"$IMAGE" ;;
down)
docker rm -f msdt >/dev/null 2>&1 || true ;;
restart)
docker restart msdt ;;
logs)
docker logs -f msdt ;;
*)
echo "usage: deploy_image.sh <env> <image> [up|down|restart|logs]" >&2
echo "env overrides: set PLATFORM=linux/amd64 or PLATFORM=linux/arm64 if needed" >&2
exit 1 ;;
esac