68 lines
1.8 KiB
Bash
68 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# Container startup: install optional offline deps, then launch Gateway.
|
|
set -eu
|
|
|
|
cd /app/backend
|
|
|
|
VENDOR_DIR="/app/backend/.deer-flow/python-vendor"
|
|
WHEELHOUSE="/app/wheelhouse"
|
|
mkdir -p "${VENDOR_DIR}"
|
|
|
|
export PYTHONPATH=".:${VENDOR_DIR}"
|
|
|
|
pip_install_offline() {
|
|
local packages="$1"
|
|
if [ -d "${WHEELHOUSE}" ]; then
|
|
uv pip install \
|
|
--target "${VENDOR_DIR}" \
|
|
--no-index \
|
|
--find-links "${WHEELHOUSE}" \
|
|
${packages}
|
|
elif [ -n "${UV_INDEX_URL:-}" ] || [ -n "${PIP_INDEX_URL:-}" ]; then
|
|
uv pip install --target "${VENDOR_DIR}" ${packages}
|
|
else
|
|
uv pip install --target "${VENDOR_DIR}" ${packages}
|
|
fi
|
|
}
|
|
|
|
pip_install_online() {
|
|
local packages="$1"
|
|
if [ -n "${UV_INDEX_URL:-}" ]; then
|
|
uv pip install --target "${VENDOR_DIR}" ${packages}
|
|
elif [ -n "${PIP_INDEX_URL:-}" ]; then
|
|
uv pip install --target "${VENDOR_DIR}" --index-url "${PIP_INDEX_URL}" ${packages}
|
|
else
|
|
uv pip install --target "${VENDOR_DIR}" ${packages}
|
|
fi
|
|
}
|
|
|
|
install_if_missing() {
|
|
local module="$1"
|
|
local packages="$2"
|
|
if uv run --no-sync python -c "import ${module}" >/dev/null 2>&1; then
|
|
return 0
|
|
fi
|
|
echo "Installing ${packages} into ${VENDOR_DIR}"
|
|
if [ -d "${WHEELHOUSE}" ] && ls "${WHEELHOUSE}"/*.whl >/dev/null 2>&1; then
|
|
pip_install_offline "${packages}"
|
|
else
|
|
pip_install_online "${packages}"
|
|
fi
|
|
}
|
|
|
|
if [ -n "${MYSQL_DATABASE_URL:-}" ]; then
|
|
install_if_missing "asyncmy" "${MYSQL_PIP_PACKAGES:-asyncmy==0.2.10}"
|
|
fi
|
|
|
|
if [ "${SCHEDULER_INSTALL_DEPS:-1}" = "1" ]; then
|
|
install_if_missing "croniter" "${SCHEDULER_PIP_PACKAGES:-croniter==6.2.2}"
|
|
fi
|
|
|
|
WORKERS="${GATEWAY_WORKERS:-2}"
|
|
echo "Starting Gateway on 0.0.0.0:8001 (workers=${WORKERS})"
|
|
|
|
exec env PYTHONPATH=".:${VENDOR_DIR}" uv run --no-sync uvicorn app.gateway.app:app \
|
|
--host 0.0.0.0 \
|
|
--port 8001 \
|
|
--workers "${WORKERS}"
|