dwg-converter / Dockerfile
Atmint's picture
Update Dockerfile
c442c81 verified
Raw
History Blame Contribute Delete
2.51 kB
# Use Node.js 20 on Debian Bookworm
FROM node:20-bookworm
# Avoid prompts during package installation
ENV DEBIAN_FRONTEND=noninteractive
# 1. Install Linux dependencies for ODA File Converter and headless execution
RUN apt-get update && apt-get install -y \
wget \
xvfb \
libxcb-util1 \
libxcb-cursor0 \
libxcb-shape0 \
libgl1 \
libfontconfig1 \
libxrender1 \
libxext6 \
libxcursor1 \
libxcursor-dev \
libtiff6 \
libtiff-dev \
libxkbcommon0 \
libxkbcommon-x11-0 \
libglib2.0-0 \
libdbus-1-3 \
libxcb-xinerama0 \
libxcb-keysyms1 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-render-util0 \
libxcb-randr0 \
libxcb-xtest0 \
libxcb-xfixes0 \
libxcb-sync1 \
libxcb-shm0 \
libsm6 \
libice6 \
libx11-xcb1 \
libxi6 \
libnss3 \
libasound2 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libgbm1 \
libxcomposite1 \
libxdamage1 \
libxrandr2 \
gdal-bin \
zip \
&& rm -rf /var/lib/apt/lists/*
# Fix potential missing symlink for libxcb-util.so.0 required by older QT apps
RUN cd /usr/lib/x86_64-linux-gnu && \
if [ ! -f libxcb-util.so.0 ] && [ -f libxcb-util.so.1 ]; then ln -s libxcb-util.so.1 libxcb-util.so.0; fi && \
if [ ! -f libtiff.so.5 ] && [ -f libtiff.so.6 ]; then ln -s libtiff.so.6 libtiff.so.5; fi && \
if [ ! -f libXcursor.so ] && [ -f libXcursor.so.1 ]; then ln -s libXcursor.so.1 libXcursor.so; fi
# 2. Install ODA File Converter
# Since the official URL changes frequently, we expect the .deb file to be in this folder
COPY ODAFileConverter*.deb /tmp/odafileconverter.deb
RUN apt-get update && \
apt-get install -y /tmp/odafileconverter.deb || apt-get install -y -f && \
rm /tmp/odafileconverter.deb && \
rm -rf /var/lib/apt/lists/*
ENV PATH="/usr/bin:${PATH}"
# We use the existing 'node' user (UID 1000) for Hugging Face Spaces compatibility
# Set up working directory for the microservice
WORKDIR /app
RUN chown -R node:node /app
# Copy package files
COPY --chown=node:node package*.json ./
# Install npm dependencies
RUN npm install
# Copy the rest of the microservice
COPY --chown=node:node . .
# Switch to the non-root user
USER node
# Expose port (Hugging Face Spaces requires 7860)
EXPOSE 7860
ENV PORT=7860
# Run Xvfb in the background and start the Express server
CMD ["sh", "-c", "Xvfb :99 -screen 0 1024x768x24 -ac -nolisten tcp & export DISPLAY=:99 && node server.js"]