# VitePress Docker Image FROM node:25 LABEL maintainer="xeden3" LABEL description="VitePress Documentation with PDF Export Support" # Install Chrome dependencies for PDF export (Debian) RUN apt-get update && apt-get install -y \ chromium \ chromium-driver \ tzdata \ fonts-liberation \ libnss3 \ libatk-bridge2.0-0 \ libxcomposite1 \ libxdamage1 \ libxrandr2 \ libgbm1 \ libasound2 \ libpangocairo-1.0-0 \ libgtk-3-0 \ libxss1 \ libglib2.0-0 \ libxkbcommon0 \ libdrm2 \ libcups2 \ libdbus-1-3 \ # 中文字体支持(开源字体,Docker环境默认使用) fonts-wqy-microhei \ fonts-wqy-zenhei \ xfonts-intl-chinese \ fonts-noto-cjk \ # 俄语字体支持(DejaVu 字体包含 Cyrillic 字符) fonts-dejavu-core \ # 字体缓存工具 fontconfig \ && fc-cache -fv \ && rm -rf /var/lib/apt/lists/* # 提示:如果需要使用微软雅黑字体,可以从 Windows 系统复制字体文件到容器 # Windows 字体目录:C:\Windows\Fonts\msyh.ttc (微软雅黑) # 将字体复制到容器:docker cp msyh.ttc :/usr/share/fonts/truetype/ # 然后运行:fc-cache -fv # Set environment variables ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium \ NODE_ENV=development \ CHROME_BIN=/usr/bin/chromium WORKDIR /app # Copy package files for main app COPY package*.json ./ # Install main dependencies (vitepress, etc.) RUN export NODE_ENV=development && \ rm -rf node_modules package-lock.json && \ npm install && \ npm install vitepress-export-pdf -D && \ npm install vitepress-plugin-mermaid mermaid && \ npm install medium-zoom markdown-it-mathjax3 # Copy API service COPY docker/api/package*.json ./api/ WORKDIR /app/api # Install API dependencies RUN npm install # Go back to app directory WORKDIR /app # Copy API service files COPY docker/api/ ./api/ # Copy entry point script COPY docker/docker-entrypoint.sh /docker-entrypoint.sh RUN chmod +x /docker-entrypoint.sh # Create log directory RUN mkdir -p /var/log # Create working directory for docs WORKDIR /app # Expose ports EXPOSE ${VITEPRESS_PORT:-3000} ${API_PORT:-3001} # Volume for docs and PDF output VOLUME ["/app/docs"] WORKDIR /app # Entry point ENTRYPOINT ["/docker-entrypoint.sh"] CMD []