- Create layered container architecture: Base, Light, Full, Computational - Implement non-root user management with UID/GID mapping - Add Markwhen timeline tool to documentation stack - Create wrapper scripts for environment variable handling - Update documentation across all containers - Establish naming convention using RCEO-AIOS-Public-Tools- prefix - Add organizational rule to keep repository root clean - Remove old unorganized container files
42 lines
1.5 KiB
Docker
42 lines
1.5 KiB
Docker
FROM rceo-aios-public-tools-docmaker-full:latest
|
|
|
|
# Avoid prompts from apt
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Install computational tools
|
|
RUN apt-get update && apt-get install -y \
|
|
r-base \
|
|
r-base-dev \
|
|
bc \
|
|
octave \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Python scientific packages
|
|
RUN pip3 install pandas numpy matplotlib scipy jupyter
|
|
|
|
# Install R packages (commonly used ones)
|
|
RUN R -e "install.packages(c('knitr', 'rmarkdown', 'dplyr', 'ggplot2'), repos='https://cran.rstudio.com/')"
|
|
|
|
# Install IRkernel for R in Jupyter
|
|
RUN R -e "install.packages('IRkernel', repos='https://cran.rstudio.com/')"
|
|
|
|
# Create Jupyter config directory and set up notebook directory
|
|
RUN mkdir -p /workspace/notebooks
|
|
|
|
# Create Jupyter startup script
|
|
RUN echo '#!/bin/bash' > /jupyter_start.sh && \
|
|
echo '# Install R kernel for Jupyter if R is available' >> /jupyter_start.sh && \
|
|
echo 'if command -v R &> /dev/null; then' >> /jupyter_start.sh && \
|
|
echo ' R -e "IRkernel::installspec()" 2>/dev/null || true' >> /jupyter_start.sh && \
|
|
echo 'fi' >> /jupyter_start.sh && \
|
|
echo '# Run Jupyter as the proper user' >> /jupyter_start.sh && \
|
|
echo 'exec su -p ReachableCEO-Tools -c "jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root --notebook-dir=/workspace/notebooks"' >> /jupyter_start.sh && \
|
|
chmod +x /jupyter_start.sh
|
|
|
|
# Expose Jupyter on port 8888
|
|
EXPOSE 8888
|
|
|
|
# Create a working directory
|
|
WORKDIR /workspace
|
|
|
|
# The entrypoint from the base image handles user creation |