services: resume-matcher: image: ghcr.io/srbhr/resume-matcher build: context: . # Optional, for slow networks (empty by default = no change): # DEBIAN_MIRROR=https://mirrors.edge.kernel.org/debian docker compose build args: - DEBIAN_MIRROR=${DEBIAN_MIRROR:-} - DEBIAN_SECURITY_MIRROR=${DEBIAN_SECURITY_MIRROR:-} - PIP_INDEX_URL=${PIP_INDEX_URL:-} - PLAYWRIGHT_DOWNLOAD_HOST=${PLAYWRIGHT_DOWNLOAD_HOST:-} container_name: resume-matcher ports: # Reachable from this machine only. To open it from a phone or another computer, # set BIND_ADDRESS=0.0.0.0 and add the address you will use to ALLOWED_HOSTS. - "${BIND_ADDRESS:-127.0.0.1}:${PORT:-3000}:3000" # Makes host.docker.internal (your machine, e.g. for Ollama) resolve on Linux too. # Docker Desktop (macOS/Windows) already provides it. extra_hosts: - "host.docker.internal:host-gateway" volumes: - resume-data:/app/backend/data #secrets: # - llm_api_key environment: # domain in reverse proxy - FRONTEND_BASE_URL=${FRONTEND_BASE_URL:-http://localhost:3000} # Extra hostnames the app answers for (comma-separated), besides localhost and the # FRONTEND_BASE_URL host, e.g. 192.168.1.20 for LAN access. "*" allows any. - ALLOWED_HOSTS=${ALLOWED_HOSTS:-} # Logging configuration: DEBUG, INFO, WARNING, ERROR - LOG_LEVEL=${LOG_LEVEL:-INFO} #- LOG_LEVEL_FILE=${LOG_LEVEL_FILE:-} # Debug level for LiteLLM: DEBUG, INFO, WARNING, ERROR - LOG_LLM=${LOG_LLM:-WARNING} #- LOG_LLM_FILE=${LOG_LLM_FILE:-} # LLM Configuration - configure via Settings UI or set env vars for explicit overrides # Supported providers: openai, anthropic, openrouter, gemini, deepseek, ollama # Defaults are defined in apps/backend/app/config.py - LLM_PROVIDER=${LLM_PROVIDER:-openai} - LLM_MODEL=${LLM_MODEL:-} # Optional Docker Secret file path (same behavior as Postgres-style *_FILE) #- LLM_API_KEY_FILE=${LLM_API_KEY_FILE:-/run/secrets/llm_api_key} - LLM_API_KEY=${LLM_API_KEY:-} # Ollama (or LM Studio, llama.cpp) running on this machine, outside Docker: inside # the container "localhost" is the container itself, so use host.docker.internal: # - LLM_API_BASE=http://host.docker.internal:11434 # On Linux, Ollama must also listen beyond 127.0.0.1 (see SETUP.md, "Using Ollama # with Docker"). - LLM_API_BASE=${LLM_API_BASE:-} # CORS origins (JSON array format). FRONTEND_BASE_URL is auto-included. #- CORS_ORIGINS=["http://localhost:3000","http://127.0.0.1:3000"] restart: unless-stopped # Fast iteration: `docker compose watch` (Compose 2.22+). Backend code is synced into # the running container and the app restarts; no image rebuild. Frontend, dependency # and image changes rebuild the image (Chromium and Python deps stay cached). # Plain `docker compose up` ignores this block. develop: watch: - action: sync+restart path: ./apps/backend/app target: /app/backend/app ignore: - __pycache__/ - action: rebuild path: ./apps/frontend ignore: - node_modules/ - .next/ - action: rebuild path: ./apps/backend/pyproject.toml - action: rebuild path: ./Dockerfile - action: rebuild path: ./docker #secrets: # llm_api_key: # file: ./secrets/llm_api_key volumes: resume-data: driver: local