FROM debian:bookworm-slim # Avoid prompts from apt ENV DEBIAN_FRONTEND=noninteractive # Install base packages RUN apt-get update && apt-get install -y \ bash \ curl \ wget \ git \ python3 \ python3-pip \ nodejs \ npm \ build-essential \ sudo \ && rm -rf /var/lib/apt/lists/* # Create symbolic link for python RUN ln -s /usr/bin/python3 /usr/bin/python # Install Rust (for root - will be accessible to user) RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y ENV PATH="/root/.cargo/bin:${PATH}" # Install Pandoc RUN apt-get update && apt-get install -y \ pandoc \ && rm -rf /var/lib/apt/lists/* # Install lightweight LaTeX RUN apt-get update && apt-get install -y \ texlive-latex-base \ texlive-fonts-recommended \ texlive-fonts-extra \ && rm -rf /var/lib/apt/lists/* # Install mdBook and mdbook-pdf using cargo RUN /root/.cargo/bin/cargo install --root /usr/local mdbook mdbook-pdf # Install Typst RUN curl -L https://github.com/typst/typst/releases/latest/download/typst-x86_64-unknown-linux-musl.tar.xz \ | tar xJ -C /tmp && cp /tmp/typst-x86_64-unknown-linux-musl/typst /usr/local/bin && chmod +x /usr/local/bin/typst # Install Marp CLI RUN npm install -g @marp-team/marp-cli # Install Markwhen RUN npm install -g @markwhen/cli # Install spell/grammar checking tools RUN apt-get update && apt-get install -y \ hunspell \ hunspell-en-us \ && rm -rf /var/lib/apt/lists/* # Install vale for advanced style and grammar checking RUN curl -L https://github.com/errata-ai/vale/releases/download/v3.12.0/vale_3.12.0_Linux_64-bit.tar.gz \ | tar xz -C /tmp && cp /tmp/vale /usr/local/bin && chmod +x /usr/local/bin/vale # Install text statistics tool for reading time estimation RUN pip3 install mdstat textstat # Install additional text processing tools RUN apt-get update && apt-get install -y \ aspell \ aspell-en \ && rm -rf /var/lib/apt/lists/* # Add entrypoint script COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh # Create a working directory WORKDIR /workspace # Use the entrypoint script to handle user creation ENTRYPOINT ["/entrypoint.sh"]