#!/bin/bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" MANAGER_DIR="${ROOT_DIR}/manager-solution" APP_IMAGE_NAME="${APP_IMAGE_NAME:-fis}" MANAGER_IMAGE_NAME="${MANAGER_IMAGE_NAME:-fis-manager:local}" MANAGER_COMPOSE_FILE="${MANAGER_DIR}/docker-compose.yml" APP_IMAGE_ARCHIVE="${APP_IMAGE_ARCHIVE:-}" MANAGER_IMAGE_ARCHIVE="${MANAGER_IMAGE_ARCHIVE:-}" SKIP_BUILD="${SKIP_BUILD:-0}" SKIP_MANAGER_BUILD="${SKIP_MANAGER_BUILD:-0}" PULL_APP_IMAGE="${PULL_APP_IMAGE:-0}" PULL_MANAGER_IMAGE="${PULL_MANAGER_IMAGE:-0}" echo "Project root: ${ROOT_DIR}" echo "Manager dir: ${MANAGER_DIR}" if [[ ! -f "${MANAGER_DIR}/manager/config.json" ]]; then echo "Missing manager config: ${MANAGER_DIR}/manager/config.json" >&2 exit 1 fi ensure_image_exists() { local image_name="$1" if ! docker image inspect "${image_name}" >/dev/null 2>&1; then echo "Docker image not found locally: ${image_name}" >&2 exit 1 fi } if [[ -n "${APP_IMAGE_ARCHIVE}" ]]; then echo "Loading prebuilt app image from ${APP_IMAGE_ARCHIVE}" docker load -i "${APP_IMAGE_ARCHIVE}" elif [[ "${PULL_APP_IMAGE}" == "1" ]]; then echo "Pulling app image ${APP_IMAGE_NAME}" docker pull "${APP_IMAGE_NAME}" elif [[ "${SKIP_BUILD}" != "1" ]]; then echo "Building app image ${APP_IMAGE_NAME}" docker build -t "${APP_IMAGE_NAME}" "${ROOT_DIR}" else echo "Skipping build. Expecting image ${APP_IMAGE_NAME} to already exist locally." fi ensure_image_exists "${APP_IMAGE_NAME}" if [[ -n "${MANAGER_IMAGE_ARCHIVE}" ]]; then echo "Loading prebuilt manager image from ${MANAGER_IMAGE_ARCHIVE}" docker load -i "${MANAGER_IMAGE_ARCHIVE}" elif [[ "${PULL_MANAGER_IMAGE}" == "1" ]]; then echo "Pulling manager image ${MANAGER_IMAGE_NAME}" docker pull "${MANAGER_IMAGE_NAME}" fi if [[ "${SKIP_MANAGER_BUILD}" == "1" ]]; then echo "Skipping manager image build. Expecting image ${MANAGER_IMAGE_NAME} to already exist locally." ensure_image_exists "${MANAGER_IMAGE_NAME}" fi cd "${MANAGER_DIR}" export FIS_APP_IMAGE="${APP_IMAGE_NAME}" export FIS_MANAGER_IMAGE="${MANAGER_IMAGE_NAME}" if [[ "${SKIP_MANAGER_BUILD}" == "1" ]]; then docker compose -f "${MANAGER_COMPOSE_FILE}" up -d else docker compose -f "${MANAGER_COMPOSE_FILE}" up -d --build fi docker compose -f "${MANAGER_COMPOSE_FILE}" logs -f