auto start container in deploy.sh
This commit is contained in:
55
deploy.sh
55
deploy.sh
@@ -2,9 +2,9 @@
|
|||||||
# Deploy/start the API. Choose runner with the first argument.
|
# Deploy/start the API. Choose runner with the first argument.
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# ./deploy.sh # auto: conda if active, otherwise uv
|
# ./deploy.sh # db + minio containers, then host API (auto runner)
|
||||||
# ./deploy.sh conda # host API via conda
|
# ./deploy.sh conda # db + minio containers, then host API via conda
|
||||||
# ./deploy.sh uv # host API via uv
|
# ./deploy.sh uv # db + minio containers, then host API via uv
|
||||||
# ./deploy.sh docker # Docker stack: api + db + minio
|
# ./deploy.sh docker # Docker stack: api + db + minio
|
||||||
# ./deploy.sh --help
|
# ./deploy.sh --help
|
||||||
|
|
||||||
@@ -17,14 +17,52 @@ usage() {
|
|||||||
Deploy/start the API. Choose runner with the first argument.
|
Deploy/start the API. Choose runner with the first argument.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
./deploy.sh # auto: conda if active, otherwise uv
|
./deploy.sh # db + minio containers, then host API (auto runner)
|
||||||
./deploy.sh conda # host API via conda
|
./deploy.sh conda # db + minio containers, then host API via conda
|
||||||
./deploy.sh uv # host API via uv
|
./deploy.sh uv # db + minio containers, then host API via uv
|
||||||
./deploy.sh docker # Docker stack: api + db + minio
|
./deploy.sh docker # Docker stack: api + db + minio
|
||||||
./deploy.sh --help
|
./deploy.sh --help
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ensure_host_dependency_containers() {
|
||||||
|
if [[ "${START_DEPENDENCY_CONTAINERS:-1}" == "0" ]]; then
|
||||||
|
echo "START_DEPENDENCY_CONTAINERS=0: not starting db/minio containers"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local compose_file="${COMPOSE_FILE:-docker-compose.yml}"
|
||||||
|
echo "Starting dependency containers: db + minio (${compose_file})..."
|
||||||
|
docker compose -f "$ROOT/${compose_file}" up -d db minio
|
||||||
|
|
||||||
|
local db_container
|
||||||
|
db_container="$(docker compose -f "$ROOT/${compose_file}" ps -q db)"
|
||||||
|
if [[ -z "$db_container" ]]; then
|
||||||
|
echo "Failed to find db container after docker compose up." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Waiting for PostgreSQL container to become healthy..."
|
||||||
|
local status
|
||||||
|
for _ in {1..60}; do
|
||||||
|
status="$(docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{else}}{{.State.Status}}{{end}}' "$db_container")"
|
||||||
|
if [[ "$status" == "healthy" || "$status" == "running" ]]; then
|
||||||
|
echo "PostgreSQL container is ${status}."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "PostgreSQL container did not become ready in time." >&2
|
||||||
|
docker compose -f "$ROOT/${compose_file}" ps db >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
start_host_api() {
|
||||||
|
ensure_host_dependency_containers
|
||||||
|
exec "$@"
|
||||||
|
}
|
||||||
|
|
||||||
runner="${1:-auto}"
|
runner="${1:-auto}"
|
||||||
case "$runner" in
|
case "$runner" in
|
||||||
-h|--help|help)
|
-h|--help|help)
|
||||||
@@ -33,11 +71,12 @@ case "$runner" in
|
|||||||
;;
|
;;
|
||||||
auto)
|
auto)
|
||||||
shift || true
|
shift || true
|
||||||
exec "$ROOT/start_api.sh" "$@"
|
start_host_api "$ROOT/start_api.sh" "$@"
|
||||||
;;
|
;;
|
||||||
conda|uv|system|python)
|
conda|uv|system|python)
|
||||||
shift || true
|
shift || true
|
||||||
API_RUNNER="$runner" exec "$ROOT/start_api.sh" "$@"
|
export API_RUNNER="$runner"
|
||||||
|
start_host_api "$ROOT/start_api.sh" "$@"
|
||||||
;;
|
;;
|
||||||
docker)
|
docker)
|
||||||
shift || true
|
shift || true
|
||||||
|
|||||||
Reference in New Issue
Block a user