# API + Command Center UI. Stays slim — the heavy Ghidra lifting lives in the worker image. FROM python:3.12-slim WORKDIR /app # Copy metadata first for layer caching, then the source. COPY pyproject.toml README.md ./ COPY ams ./ams COPY ghidra_scripts ./ghidra_scripts COPY snapshots ./snapshots # Editable install keeps ams + ghidra_scripts co-located (the worker resolves the script # path relative to the package). The API needs the queue client too, to enqueue jobs. RUN pip install --no-cache-dir -e ".[api]" rq redis "psycopg[binary]>=3.1" ENV AMS_UPLOAD_DIR=/data/uploads EXPOSE 8000 CMD ["uvicorn", "ams.api.app:create_app", "--factory", "--host", "0.0.0.0", "--port", "8000"]