|
| 1 | +FROM node:20-alpine |
| 2 | + |
| 3 | +LABEL org.opencontainers.image.title="SKaiNET Antora" \ |
| 4 | + org.opencontainers.image.description="Antora site generator with built-in Mermaid rendering" \ |
| 5 | + org.opencontainers.image.source="https://github.com/SKaiNET-developers/SKaiNET-transformers" |
| 6 | + |
| 7 | +# Chromium for mermaid-cli (puppeteer) |
| 8 | +RUN apk add --no-cache chromium font-noto |
| 9 | + |
| 10 | +ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser \ |
| 11 | + PUPPETEER_SKIP_DOWNLOAD=true |
| 12 | + |
| 13 | +WORKDIR /antora |
| 14 | + |
| 15 | +# Install Antora + extensions + mermaid-cli in one layer |
| 16 | +RUN npm i --save-exact \ |
| 17 | + @antora/cli@3.1 \ |
| 18 | + @antora/site-generator@3.1 \ |
| 19 | + asciidoctor-kroki@0.18 \ |
| 20 | + @mermaid-js/mermaid-cli@11 \ |
| 21 | + && npm cache clean --force |
| 22 | + |
| 23 | +# Mermaid-cli config: use installed Chromium, no sandbox (container) |
| 24 | +RUN echo '{ \ |
| 25 | + "executablePath": "/usr/bin/chromium-browser", \ |
| 26 | + "args": ["--no-sandbox", "--disable-gpu", "--disable-dev-shm-usage"] \ |
| 27 | +}' > /antora/puppeteer-config.json |
| 28 | + |
| 29 | +# Pre-generate a simple diagram to warm up and verify the stack works |
| 30 | +RUN echo 'graph TD; A-->B;' > /tmp/test.mmd \ |
| 31 | + && npx mmdc -i /tmp/test.mmd -o /tmp/test.svg -p /antora/puppeteer-config.json \ |
| 32 | + && rm /tmp/test.mmd /tmp/test.svg |
| 33 | + |
| 34 | +ENTRYPOINT ["npx", "antora"] |
| 35 | +CMD ["--stacktrace", "antora-playbook.yml"] |
0 commit comments