71 lines
2.4 KiB
Bash
Executable File
71 lines
2.4 KiB
Bash
Executable File
#!/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
|
|
|
|
echo "Validating manager config"
|
|
python3 "${MANAGER_DIR}/manager/validate_config.py" "${MANAGER_DIR}/manager/config.json" >/dev/null
|
|
|
|
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
|