Use the vendored Hammerstad-Jensen/Cohn engine for microstrip, stripline, and coupled-diff advice. Skip OpenEMS/pcbnew and refuse CPWG rather than inventing a number. Co-authored-by: Cursor <cursoragent@cursor.com>
34 lines
1.1 KiB
Docker
34 lines
1.1 KiB
Docker
FROM python:3.12-slim
|
|
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# Install dependencies first (layer caching).
|
|
# Open-core: the private gateway repo adds backend/requirements-gateway.txt
|
|
# (Stripe, etc.); a plain core checkout has no such file and skips that step.
|
|
COPY backend/requirements*.txt /app/backend/
|
|
RUN pip install --no-cache-dir -r /app/backend/requirements.txt \
|
|
&& if [ -f /app/backend/requirements-gateway.txt ]; then \
|
|
pip install --no-cache-dir -r /app/backend/requirements-gateway.txt; \
|
|
fi
|
|
|
|
# Copy application code
|
|
COPY backend/ /app/backend/
|
|
|
|
# Copy runtime assets needed by the backend
|
|
# Taxonomy: fallback for local mode; GCS mode downloads from bucket
|
|
COPY taxonomy/ /app/taxonomy/
|
|
|
|
# Extraction skills (SKILL.md + validate.py) — required for DeepSeek/Gemini
|
|
COPY skills/ /app/skills/
|
|
|
|
# Changelog: single source of truth for the user-facing Pinscope version.
|
|
COPY frontend/content/changelog.md /app/changelog.md
|
|
|
|
# ImpedenceFinder closed-form engine (no OpenEMS / pcbnew).
|
|
COPY vendor/ /app/vendor/
|
|
|
|
EXPOSE 8080
|
|
|
|
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8080"]
|