phase 0
This commit is contained in:
+64
@@ -0,0 +1,64 @@
|
||||
# STEP Parser — Phase 0 CLI container
|
||||
#
|
||||
# Goal: prove the heavy native stack runs on linux/amd64 (Unraid target):
|
||||
# - CAD kernel build123d → cadquery-ocp (OpenCASCADE)
|
||||
# - offscreen render pyrender via OSMesa (software GL, no GPU needed)
|
||||
# - diagram export cairosvg (cairo / pango)
|
||||
#
|
||||
# Build for Unraid (x86_64) even from an arm64 Mac (uses QEMU emulation):
|
||||
# docker buildx build --platform linux/amd64 -t step-parser:dev --load .
|
||||
# or just: ./build.sh (build.sh passes --platform linux/amd64)
|
||||
FROM python:3.11-slim-bookworm
|
||||
|
||||
ENV PYTHONUNBUFFERED=1 \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
PIP_NO_CACHE_DIR=1 \
|
||||
# Force pyrender/PyOpenGL onto the software rasterizer — no GPU on Unraid.
|
||||
PYOPENGL_PLATFORM=osmesa
|
||||
|
||||
# System libraries grouped by which dependency needs them:
|
||||
# OpenCASCADE / OCP runtime : libgl1 libglu1-mesa X11 libs fontconfig libgomp1
|
||||
# pyrender offscreen (OSMesa): libosmesa6
|
||||
# cairosvg : libcairo2 libpango* libgdk-pixbuf libffi8
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgl1 \
|
||||
libglu1-mesa \
|
||||
libosmesa6 \
|
||||
libxrender1 \
|
||||
libxext6 \
|
||||
libsm6 \
|
||||
libx11-6 \
|
||||
libxi6 \
|
||||
libfontconfig1 \
|
||||
libglib2.0-0 \
|
||||
libgomp1 \
|
||||
libcairo2 \
|
||||
libpango-1.0-0 \
|
||||
libpangocairo-1.0-0 \
|
||||
libgdk-pixbuf-2.0-0 \
|
||||
libffi8 \
|
||||
ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY requirements.txt .
|
||||
# pyrender hard-pins PyOpenGL==3.1.0, but the OSMesa offscreen backend needs
|
||||
# OSMesaCreateContextAttribs, which only exists in PyOpenGL >=3.1.5. Install
|
||||
# pyrender's pin first, then force-upgrade PyOpenGL (--no-deps leaves pyrender
|
||||
# itself untouched, avoiding the resolver conflict).
|
||||
RUN pip install --upgrade pip \
|
||||
&& pip install -r requirements.txt \
|
||||
&& pip install --no-deps --upgrade "PyOpenGL==3.1.7"
|
||||
|
||||
# The skill source lives in skill.src/ in the repo root; copy it into the image.
|
||||
# step_processor.py adds its own dir to sys.path[0], so `import modules` resolves
|
||||
# regardless of the working directory.
|
||||
COPY skill.src ./skill.src
|
||||
|
||||
# Generated artifacts (xlsx, png, svg, _EN.step) are written next to the input
|
||||
# STEP file. Mount a host directory here and process files inside it.
|
||||
VOLUME ["/data"]
|
||||
|
||||
ENTRYPOINT ["python", "skill.src/step_processor.py"]
|
||||
CMD ["--help"]
|
||||
Reference in New Issue
Block a user