Dockerfile.docs•2 kB
# Documentation testing container
# Generated by DocuMCP
FROM node:20-alpine
WORKDIR /app
# Copy package.json for version reference in config (needed by docusaurus.config.js)
COPY package.json ./package.json
# Create docs-site directory structure and copy everything there
# The config expects path: "." so docs must be in same directory as config
RUN mkdir -p docs-site/src/css
# Copy all docs content to docs-site/ (config expects docs in same dir)
COPY docs/ docs-site/
# Remove config files from docs content (we'll use them from docs-site root)
RUN rm -f docs-site/docusaurus.config.js docs-site/sidebars.js 2>/dev/null || true
# Copy config files to docs-site root where Docusaurus expects them
COPY docs/docusaurus.config.js docs-site/docusaurus.config.js
COPY docs/sidebars.js docs-site/sidebars.js
COPY docs/src/css/custom.css docs-site/src/css/custom.css
# Generate package.json
RUN echo '{ \
"name": "documcp-docs", \
"version": "0.0.0", \
"private": true, \
"scripts": { \
"docusaurus": "docusaurus", \
"start": "docusaurus start", \
"build": "docusaurus build", \
"swizzle": "docusaurus swizzle", \
"deploy": "docusaurus deploy", \
"clear": "docusaurus clear", \
"serve": "docusaurus serve --port 3001" \
}, \
"dependencies": { \
"@docusaurus/core": "^3.0.0", \
"@docusaurus/preset-classic": "^3.0.0", \
"@mdx-js/react": "^3.0.0", \
"clsx": "^2.0.0", \
"prism-react-renderer": "^2.1.0", \
"react": "^18.0.0", \
"react-dom": "^18.0.0" \
}, \
"devDependencies": { \
"@docusaurus/types": "^3.0.0" \
} \
}' > docs-site/package.json
# Install dependencies
RUN cd docs-site && npm install
# Build documentation
RUN cd docs-site && npm run build
# Expose port
EXPOSE 3001
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3001/ || exit 1
# Start server
CMD ["sh", "-c", "cd docs-site && npm run serve"]