#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=lib.sh source "${SCRIPT_DIR}/lib.sh" CONFIG_IN_CONTAINER="${CONFIG_IN_CONTAINER:-/workspace/mvp/v1.1/py/configs/dev.yaml}" LOG_PATH="${LOG_PATH:-/private/common/logs/mvp_v2_api.log}" PID_PATH="${PID_PATH:-/private/common/run/mvp_v2_api.pid}" echo "[host] starting mvp v2 api in head container: ${HEAD_CONTAINER}" dexec bash -lc "mkdir -p \"$(dirname "${LOG_PATH}")\" \"$(dirname "${PID_PATH}")\"" # Note: requires /workspace/mvp/v2.0/py to be present in the container (mounted or copied). # Escape $ so that the command substitution happens in the container, not on the host. dexec bash -lc "if test -f '${PID_PATH}'; then pid=\$(cat '${PID_PATH}'); if kill -0 \"\${pid}\" >/dev/null 2>&1; then echo 'already_running'; exit 0; fi; fi" if [[ -z "${MVP_INTERNAL_TOKEN:-}" ]]; then echo "ERROR: MVP_INTERNAL_TOKEN env var must be set on host (will be passed into container)" >&2 exit 1 fi docker exec -d -e MVP_INTERNAL_TOKEN="${MVP_INTERNAL_TOKEN}" "${HEAD_CONTAINER}" bash -lc "nohup python3 /workspace/mvp/v2/py/server.py --config '${CONFIG_IN_CONTAINER}' >>'${LOG_PATH}' 2>&1 & echo \$! >'${PID_PATH}'" echo "[host] started; pid stored in ${PID_PATH} (container path)" echo "[host] logs: ${LOG_PATH} (container path)"