# Local run only. Production is Google Cloud Run — see commands.md. # # docker compose run --rm ingest -> ingest the corpus into Qdrant (once) # docker compose up -> the Streamlit app at http://localhost:8501 # docker compose run --rm eval -> one LangSmith evaluation run, then exit # # `docker compose up` also bootstraps ingestion on first run if the Qdrant # collection is missing, so the explicit `ingest` step is optional. # # All read secrets from .env. Calls to Vertex AI Gemini and Cloud Storage # use your local gcloud Application Default Credentials, mounted read-only # below — run `gcloud auth application-default login` first. # # Linux / macOS : ADC lives at ~/.config/gcloud (the default below) # Windows : set GCLOUD_CONFIG=%APPDATA%\gcloud before `docker compose up` # # The app runs in "open local mode" (no Google login) unless you also mount # a Streamlit [auth] secrets file at /app/.streamlit/secrets.toml. x-gcloud-adc: &gcloud-adc - ${GCLOUD_CONFIG:-~/.config/gcloud}:/root/.config/gcloud:ro services: app: build: . command: > streamlit run app.py --server.port=8501 --server.address=0.0.0.0 --server.headless=true --server.enableCORS=false --server.enableXsrfProtection=false ports: - "8501:8501" env_file: [.env] volumes: *gcloud-adc # One-off jobs, not services. profiles:[tools] keeps them out of # `docker compose up`. ingest: build: . command: python ingest.py env_file: [.env] volumes: *gcloud-adc profiles: [tools] eval: build: . command: python evaluate.py env_file: [.env] volumes: *gcloud-adc profiles: [tools]