name: spectarr services: spectarr: build: context: . additional_contexts: msconvert_cli: ${SPECTARR_MSCONVERT_CLI_SOURCE:-../msconvert-cli} mzmlpy_source: ${SPECTARR_MZMLPY_SOURCE:-../mzmlpy} spxtacular_source: ${SPECTARR_SPXTACULAR_SOURCE:-../spxtacular} args: SPECTARR_INSTALL_OPENMASSSPEC: ${SPECTARR_INSTALL_OPENMASSSPEC:-true} SPECTARR_DOTNET_RUNTIME_IMAGE: ${SPECTARR_DOTNET_RUNTIME_IMAGE:-mcr.microsoft.com/dotnet/runtime:10.0@sha256:b89586dc17781f25531909993658aa8161205ae38b8cec8847df4a8221a403d5} environment: SPECTARR_ENVIRONMENT: ${SPECTARR_ENVIRONMENT:-development} SPECTARR_DATABASE_URL: sqlite:////data/spectarr.db SPECTARR_JOB_LEASE_SECONDS: ${SPECTARR_JOB_LEASE_SECONDS:-300} SPECTARR_STORAGE_ROOT: /data/storage SPECTARR_LIBRARY_ROOT: /data/storage/library SPECTARR_LIBRARY_LINK_MODE: ${SPECTARR_LIBRARY_LINK_MODE:-auto} SPECTARR_LIBRARY_PROJECT_TEMPLATE: ${SPECTARR_LIBRARY_PROJECT_TEMPLATE:-{project_name}__{project_id:8}} SPECTARR_LIBRARY_FILENAME_TEMPLATE: ${SPECTARR_LIBRARY_FILENAME_TEMPLATE:-{run_name}__{sample_name}__{run_id:8}{extension}} SPECTARR_IMPORT_ROOTS: '["/imports"]' SPECTARR_CORS_ORIGINS: ${SPECTARR_CORS_ORIGINS:-[]} SPECTARR_TRUSTED_HOSTS: ${SPECTARR_TRUSTED_HOSTS:-["localhost"]} SPECTARR_WORKER_TOKEN: ${SPECTARR_WORKER_TOKEN:-} SPECTARR_AUTH_ENABLED: ${SPECTARR_AUTH_ENABLED:-true} SPECTARR_RESTORE_MODE: ${SPECTARR_RESTORE_MODE:-false} SPECTARR_REMOTE_IMPORTS_ENABLED: ${SPECTARR_REMOTE_IMPORTS_ENABLED:-true} SPECTARR_REMOTE_DOWNLOAD_CONCURRENCY: ${SPECTARR_REMOTE_DOWNLOAD_CONCURRENCY:-2} SPECTARR_AUTH_MODE: ${SPECTARR_AUTH_MODE:-password} SPECTARR_SESSION_HOURS: ${SPECTARR_SESSION_HOURS:-24} SPECTARR_LOCAL_USER: ${SPECTARR_LOCAL_USER:-admin} SPECTARR_ALLOW_REMOTE_NO_AUTH: ${SPECTARR_ALLOW_REMOTE_NO_AUTH:-false} SPECTARR_BIND_ADDRESS: ${SPECTARR_BIND_ADDRESS:-127.0.0.1} SPECTARR_SECRET_KEY: ${SPECTARR_SECRET_KEY:-} SPECTARR_SPECTRUM_READER_TIMEOUT_SECONDS: ${SPECTARR_SPECTRUM_READER_TIMEOUT_SECONDS:-30} SPECTARR_DOCKER_DATA_ROOT: ${SPECTARR_DOCKER_DATA_ROOT:-} SPECTARR_MSCONVERT_IMAGE: ${SPECTARR_MSCONVERT_IMAGE:-proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses:skyline_26.1.0.266-578b175@sha256:448a833eb92eac2ca731f2461c046963c0c2afafb3550b4dfb6fc3914cec7b0e} SPECTARR_MCP_ALLOW_WRITES: ${SPECTARR_MCP_ALLOW_WRITES:-false} SPECTARR_MCP_PUBLIC_URL: ${SPECTARR_MCP_PUBLIC_URL:-} SPECTARR_MCP_TOKEN: ${SPECTARR_MCP_TOKEN:-} SPECTARR_API_KEY: ${SPECTARR_API_KEY:-} SPECTARR_WEBHOOK_ALLOW_HTTP: ${SPECTARR_WEBHOOK_ALLOW_HTTP:-false} SPECTARR_WEBHOOK_ALLOW_PRIVATE_NETWORKS: ${SPECTARR_WEBHOOK_ALLOW_PRIVATE_NETWORKS:-false} SPECTARR_UID: ${SPECTARR_UID:-1000} SPECTARR_GID: ${SPECTARR_GID:-1000} volumes: - ${SPECTARR_DATA_DIR:-./data}:/data - ${SPECTARR_STORAGE_DIR:-${SPECTARR_DATA_DIR:-./data}/storage}:/data/storage - ${SPECTARR_IMPORTS_DIR:-./imports}:/imports:ro - type: bind source: ${DOCKER_SOCKET:-/var/run/docker.sock} target: /var/run/docker.sock bind: create_host_path: false ports: - "${SPECTARR_BIND_ADDRESS:-127.0.0.1}:${SPECTARR_PORT:-3280}:8000" - "${SPECTARR_MCP_BIND_ADDRESS:-127.0.0.1}:${SPECTARR_MCP_PORT:-8281}:8001" healthcheck: test: ["CMD", "python", "-c", "import urllib.request\nurllib.request.urlopen('http://127.0.0.1:8000/health', timeout=3)"] interval: 10s timeout: 5s retries: 10 security_opt: - no-new-privileges:true cap_drop: - NET_RAW restart: unless-stopped stop_grace_period: 45s