Dockerfile54 lines · 1208 chars FROM node:lts AS builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 \
python3-dev \
python3-pip \
git \
build-essential \
ca-certificates \
curl && \
ln -s /usr/bin/python3 /usr/bin/python && \
rm -rf /var/lib/apt/lists/*
# Install Emscripten SDK to provide emcc for shader compilation
RUN mkdir -p /emsdk && \
git clone https://github.com/emscripten-core/emsdk.git /emsdk && \
cd /emsdk && \
./emsdk install latest && \
./emsdk activate latest
ENV PATH="/emsdk/upstream/emscripten:/emsdk:${PATH}"
WORKDIR /workspace
COPY package.json ./
RUN npm install
COPY . .
# Build steps
RUN npm run shader:wasm
RUN npm run makeShaderList
RUN npm run shader:webgpu
RUN npm run build
RUN npm run build:core
FROM node:lts
WORKDIR /workspace
# Copy built artifacts from builder
COPY --from=builder /workspace/dist /workspace/dist
COPY --from=builder /workspace/package.json /workspace/package.json
# Install runtime dependencies and http-server for serving
RUN npm install --omit=dev
RUN npm install -g http-server
EXPOSE 8080
CMD ["npm", "run", "server"]