many fixes
This commit is contained in:
+88
-2
@@ -20,6 +20,9 @@ ENV_KEYS=(
|
||||
DUCK_API_PID_FILE
|
||||
DUCK_API_LOG_FILE
|
||||
DUCK_API_COMMAND
|
||||
DUCK_QDRANT_MANAGED
|
||||
DUCK_QDRANT_COMPOSE_FILE
|
||||
DUCK_QDRANT_SERVICE
|
||||
)
|
||||
declare -A ENV_OVERRIDES=()
|
||||
for key in "${ENV_KEYS[@]}"; do
|
||||
@@ -43,14 +46,17 @@ API_PID_FILE="${DUCK_API_PID_FILE:-${ROOT_DIR}/data/duck-api.pid}"
|
||||
API_LOG_FILE="${DUCK_API_LOG_FILE:-${ROOT_DIR}/data/duck-api.log}"
|
||||
API_URL="http://${DUCK_API_HOST:-127.0.0.1}:${DUCK_API_PORT:-8000}"
|
||||
LLAMA_SCRIPT="${ROOT_DIR}/scripts/llama/start_mtp_main.sh"
|
||||
QDRANT_MANAGED="${DUCK_QDRANT_MANAGED:-1}"
|
||||
QDRANT_COMPOSE_FILE="${DUCK_QDRANT_COMPOSE_FILE:-${ROOT_DIR}/docker-compose.memory.yml}"
|
||||
QDRANT_SERVICE="${DUCK_QDRANT_SERVICE:-qdrant}"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage: scripts/duck-mtp.sh <command>
|
||||
|
||||
Commands:
|
||||
start Start MTP llama-server and DuckLM API in the background
|
||||
stop Stop DuckLM API and managed MTP llama-server
|
||||
start Start Qdrant, MTP llama-server, and DuckLM API in the background
|
||||
stop Stop DuckLM API, managed MTP llama-server, and Qdrant
|
||||
restart Stop and start the whole local DuckLM stack
|
||||
status Print process and HTTP health status
|
||||
Use "status --probe" to include live model/vector checks
|
||||
@@ -63,11 +69,77 @@ Environment:
|
||||
DUCK_API_PID_FILE API PID file path
|
||||
DUCK_API_LOG_FILE API log file path
|
||||
DUCK_API_COMMAND API command override, default ".venv/bin/python -m duck_core.api"
|
||||
DUCK_QDRANT_MANAGED Set to 0 to skip Docker Compose Qdrant lifecycle
|
||||
DUCK_QDRANT_COMPOSE_FILE
|
||||
Compose file path, default docker-compose.memory.yml
|
||||
DUCK_QDRANT_SERVICE Compose service name, default qdrant
|
||||
|
||||
MTP llama-server environment is handled by scripts/llama/start_mtp_main.sh.
|
||||
EOF
|
||||
}
|
||||
|
||||
qdrant_enabled() {
|
||||
[[ "${QDRANT_MANAGED}" != "0" && "${QDRANT_MANAGED,,}" != "false" && "${QDRANT_MANAGED,,}" != "no" ]]
|
||||
}
|
||||
|
||||
docker_compose() {
|
||||
docker compose -f "${QDRANT_COMPOSE_FILE}" "$@"
|
||||
}
|
||||
|
||||
start_qdrant() {
|
||||
if ! qdrant_enabled; then
|
||||
echo "Qdrant management: disabled"
|
||||
return 0
|
||||
fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "Docker not found; cannot start Qdrant" >&2
|
||||
return 1
|
||||
fi
|
||||
if [[ ! -f "${QDRANT_COMPOSE_FILE}" ]]; then
|
||||
echo "Qdrant compose file not found: ${QDRANT_COMPOSE_FILE}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Starting Qdrant..."
|
||||
docker_compose up -d "${QDRANT_SERVICE}"
|
||||
}
|
||||
|
||||
stop_qdrant() {
|
||||
if ! qdrant_enabled; then
|
||||
echo "Qdrant management: disabled"
|
||||
return 0
|
||||
fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "Docker not found; cannot stop Qdrant" >&2
|
||||
return 1
|
||||
fi
|
||||
if [[ ! -f "${QDRANT_COMPOSE_FILE}" ]]; then
|
||||
echo "Qdrant compose file not found: ${QDRANT_COMPOSE_FILE}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Stopping Qdrant..."
|
||||
docker_compose down
|
||||
}
|
||||
|
||||
status_qdrant() {
|
||||
if ! qdrant_enabled; then
|
||||
echo "Qdrant status: disabled"
|
||||
return 0
|
||||
fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "Qdrant status: Docker not found"
|
||||
return 1
|
||||
fi
|
||||
if [[ ! -f "${QDRANT_COMPOSE_FILE}" ]]; then
|
||||
echo "Qdrant status: compose file not found (${QDRANT_COMPOSE_FILE})"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Qdrant status:"
|
||||
docker_compose ps "${QDRANT_SERVICE}"
|
||||
}
|
||||
|
||||
api_is_running() {
|
||||
[[ -f "${API_PID_FILE}" ]] || return 1
|
||||
local pid
|
||||
@@ -157,6 +229,7 @@ stop_api() {
|
||||
}
|
||||
|
||||
start_stack() {
|
||||
start_qdrant
|
||||
"${LLAMA_SCRIPT}" start
|
||||
start_api
|
||||
echo
|
||||
@@ -167,6 +240,7 @@ start_stack() {
|
||||
stop_stack() {
|
||||
stop_api
|
||||
"${LLAMA_SCRIPT}" stop
|
||||
stop_qdrant
|
||||
}
|
||||
|
||||
status_stack() {
|
||||
@@ -210,6 +284,11 @@ status_stack() {
|
||||
if [[ "${llama_rc}" != "0" && "${rc}" == "0" ]]; then
|
||||
rc="${llama_rc}"
|
||||
fi
|
||||
local qdrant_rc=0
|
||||
status_qdrant || qdrant_rc=$?
|
||||
if [[ "${qdrant_rc}" != "0" && "${rc}" == "0" ]]; then
|
||||
rc="${qdrant_rc}"
|
||||
fi
|
||||
return "${rc}"
|
||||
}
|
||||
|
||||
@@ -296,6 +375,13 @@ logs_stack() {
|
||||
echo
|
||||
echo "==> llama-server log: ${DUCK_LLAMA_LOG_FILE:-${ROOT_DIR}/data/llama-mtp.log} <=="
|
||||
"${LLAMA_SCRIPT}" logs --lines "${lines}"
|
||||
echo
|
||||
echo "==> Qdrant log <=="
|
||||
if qdrant_enabled && command -v docker >/dev/null 2>&1 && [[ -f "${QDRANT_COMPOSE_FILE}" ]]; then
|
||||
docker_compose logs --tail "${lines}" "${QDRANT_SERVICE}"
|
||||
else
|
||||
status_qdrant || true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
+88
-2
@@ -20,6 +20,9 @@ ENV_KEYS=(
|
||||
DUCK_API_PID_FILE
|
||||
DUCK_API_LOG_FILE
|
||||
DUCK_API_COMMAND
|
||||
DUCK_QDRANT_MANAGED
|
||||
DUCK_QDRANT_COMPOSE_FILE
|
||||
DUCK_QDRANT_SERVICE
|
||||
)
|
||||
declare -A ENV_OVERRIDES=()
|
||||
for key in "${ENV_KEYS[@]}"; do
|
||||
@@ -43,14 +46,17 @@ API_PID_FILE="${DUCK_API_PID_FILE:-${ROOT_DIR}/data/duck-api.pid}"
|
||||
API_LOG_FILE="${DUCK_API_LOG_FILE:-${ROOT_DIR}/data/duck-api.log}"
|
||||
API_URL="http://${DUCK_API_HOST:-127.0.0.1}:${DUCK_API_PORT:-8000}"
|
||||
LLAMA_SCRIPT="${ROOT_DIR}/scripts/llama/start_main.sh"
|
||||
QDRANT_MANAGED="${DUCK_QDRANT_MANAGED:-1}"
|
||||
QDRANT_COMPOSE_FILE="${DUCK_QDRANT_COMPOSE_FILE:-${ROOT_DIR}/docker-compose.memory.yml}"
|
||||
QDRANT_SERVICE="${DUCK_QDRANT_SERVICE:-qdrant}"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage: scripts/duck.sh <command>
|
||||
|
||||
Commands:
|
||||
start Start llama-server and DuckLM API in the background
|
||||
stop Stop DuckLM API and managed llama-server
|
||||
start Start Qdrant, llama-server, and DuckLM API in the background
|
||||
stop Stop DuckLM API, managed llama-server, and Qdrant
|
||||
restart Stop and start the whole local DuckLM stack
|
||||
status Print process and HTTP health status
|
||||
Use "status --probe" to include live model/vector checks
|
||||
@@ -63,11 +69,77 @@ Environment:
|
||||
DUCK_API_PID_FILE API PID file path
|
||||
DUCK_API_LOG_FILE API log file path
|
||||
DUCK_API_COMMAND API command override, default ".venv/bin/python -m duck_core.api"
|
||||
DUCK_QDRANT_MANAGED Set to 0 to skip Docker Compose Qdrant lifecycle
|
||||
DUCK_QDRANT_COMPOSE_FILE
|
||||
Compose file path, default docker-compose.memory.yml
|
||||
DUCK_QDRANT_SERVICE Compose service name, default qdrant
|
||||
|
||||
llama-server environment is handled by scripts/llama/start_main.sh.
|
||||
EOF
|
||||
}
|
||||
|
||||
qdrant_enabled() {
|
||||
[[ "${QDRANT_MANAGED}" != "0" && "${QDRANT_MANAGED,,}" != "false" && "${QDRANT_MANAGED,,}" != "no" ]]
|
||||
}
|
||||
|
||||
docker_compose() {
|
||||
docker compose -f "${QDRANT_COMPOSE_FILE}" "$@"
|
||||
}
|
||||
|
||||
start_qdrant() {
|
||||
if ! qdrant_enabled; then
|
||||
echo "Qdrant management: disabled"
|
||||
return 0
|
||||
fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "Docker not found; cannot start Qdrant" >&2
|
||||
return 1
|
||||
fi
|
||||
if [[ ! -f "${QDRANT_COMPOSE_FILE}" ]]; then
|
||||
echo "Qdrant compose file not found: ${QDRANT_COMPOSE_FILE}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Starting Qdrant..."
|
||||
docker_compose up -d "${QDRANT_SERVICE}"
|
||||
}
|
||||
|
||||
stop_qdrant() {
|
||||
if ! qdrant_enabled; then
|
||||
echo "Qdrant management: disabled"
|
||||
return 0
|
||||
fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "Docker not found; cannot stop Qdrant" >&2
|
||||
return 1
|
||||
fi
|
||||
if [[ ! -f "${QDRANT_COMPOSE_FILE}" ]]; then
|
||||
echo "Qdrant compose file not found: ${QDRANT_COMPOSE_FILE}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Stopping Qdrant..."
|
||||
docker_compose down
|
||||
}
|
||||
|
||||
status_qdrant() {
|
||||
if ! qdrant_enabled; then
|
||||
echo "Qdrant status: disabled"
|
||||
return 0
|
||||
fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "Qdrant status: Docker not found"
|
||||
return 1
|
||||
fi
|
||||
if [[ ! -f "${QDRANT_COMPOSE_FILE}" ]]; then
|
||||
echo "Qdrant status: compose file not found (${QDRANT_COMPOSE_FILE})"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Qdrant status:"
|
||||
docker_compose ps "${QDRANT_SERVICE}"
|
||||
}
|
||||
|
||||
api_is_running() {
|
||||
[[ -f "${API_PID_FILE}" ]] || return 1
|
||||
local pid
|
||||
@@ -157,6 +229,7 @@ stop_api() {
|
||||
}
|
||||
|
||||
start_stack() {
|
||||
start_qdrant
|
||||
"${LLAMA_SCRIPT}" start
|
||||
start_api
|
||||
echo
|
||||
@@ -167,6 +240,7 @@ start_stack() {
|
||||
stop_stack() {
|
||||
stop_api
|
||||
"${LLAMA_SCRIPT}" stop
|
||||
stop_qdrant
|
||||
}
|
||||
|
||||
status_stack() {
|
||||
@@ -210,6 +284,11 @@ status_stack() {
|
||||
if [[ "${llama_rc}" != "0" && "${rc}" == "0" ]]; then
|
||||
rc="${llama_rc}"
|
||||
fi
|
||||
local qdrant_rc=0
|
||||
status_qdrant || qdrant_rc=$?
|
||||
if [[ "${qdrant_rc}" != "0" && "${rc}" == "0" ]]; then
|
||||
rc="${qdrant_rc}"
|
||||
fi
|
||||
return "${rc}"
|
||||
}
|
||||
|
||||
@@ -296,6 +375,13 @@ logs_stack() {
|
||||
echo
|
||||
echo "==> llama-server log: ${DUCK_LLAMA_LOG_FILE:-${ROOT_DIR}/data/llama-main.log} <=="
|
||||
"${LLAMA_SCRIPT}" logs --lines "${lines}"
|
||||
echo
|
||||
echo "==> Qdrant log <=="
|
||||
if qdrant_enabled && command -v docker >/dev/null 2>&1 && [[ -f "${QDRANT_COMPOSE_FILE}" ]]; then
|
||||
docker_compose logs --tail "${lines}" "${QDRANT_SERVICE}"
|
||||
else
|
||||
status_qdrant || true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user