Skip to content
Snippets Groups Projects
Dockerfile 2.47 KiB
Newer Older
FROM rocker/rstudio:4.3.3 AS rstudio
Fortune Iriaye's avatar
Fortune Iriaye committed

Fortune Iriaye's avatar
Fortune Iriaye committed
# Set noninteractive mode to prevent prompts during installation
Fortune Iriaye's avatar
Fortune Iriaye committed
ENV DEBIAN_FRONTEND=noninteractive
Fortune Iriaye's avatar
Fortune Iriaye committed

Fortune Iriaye's avatar
Fortune Iriaye committed
# Install required system dependencies
Fortune Iriaye's avatar
Fortune Iriaye committed
RUN apt-get update && apt-get install -y \
    wget \
Fortune Iriaye's avatar
Fortune Iriaye committed
    sudo \
    curl \
Fortune Iriaye's avatar
Fortune Iriaye committed
    git \
Fortune Iriaye's avatar
Fortune Iriaye committed
    build-essential \
    libcurl4-openssl-dev || apt-get install -y libcurl4-gnutls-dev \
Fortune Iriaye's avatar
Fortune Iriaye committed
    libssl-dev \
Fortune Iriaye's avatar
Fortune Iriaye committed
    libxml2-dev \
    libxt-dev \
Fortune Iriaye's avatar
Fortune Iriaye committed
    pandoc \
    libclang-dev \
    libpq-dev \
    libgit2-dev \
Fortune Iriaye's avatar
Fortune Iriaye committed
    gdebi-core \
Fortune Iriaye's avatar
Fortune Iriaye committed
    psmisc \
Fortune Iriaye's avatar
Fortune Iriaye committed
    && rm -rf /var/lib/apt/lists/*

# Install Miniconda
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh && \
    bash miniconda.sh -b -p /opt/miniconda && \
    rm miniconda.sh

# Set environment variables for Conda
ENV PATH="/opt/miniconda/bin:$PATH"
Fortune Iriaye's avatar
Fortune Iriaye committed

# Create .condarc file for channel priority
RUN echo "channels:\n  - conda-forge\n  - bioconda" > /root/.condarc

# Create Conda environment and install dependencies
RUN conda create --name neuroestimator -y \
Fortune Iriaye's avatar
Fortune Iriaye committed
    h5py=2.10.0 \
# Activate the Conda environment and install Tensorflow via Pip
RUN /bin/bash -c "source activate neuroestimator && \
    pip install tensorflow==1.15.0 tensorflow-estimator==1.15.1"

# Create an Rstudio User

RUN id -u rstudio >/dev/null 2>&1 || useradd -m -s /bin/bash rstudio && \
    echo "rstudio:rstudio" | chpasswd && \
    usermod -aG sudo rstudio
Fortune Iriaye's avatar
Fortune Iriaye committed

# Ensure RStudio uses Conda's R
RUN echo 'export RSTUDIO_WHICH_R="/opt/miniconda/envs/neuroestimator/bin/R"' >> /etc/profile.d/rstudio.sh

# Install NEUROeSTIMator in the Conda environment
RUN conda run -n neuroestimator Rscript -e "install.packages('remotes')"
RUN conda run -n neuroestimator Rscript -e "remotes::install_version('dplyr',version='1.0.9')"
RUN conda run -n neuroestimator Rscript -e "remotes::install_version('keras',version='2.3.0')"
RUN conda run -n neuroestimator Rscript -e "remotes::install_version('tensorflow',version='2.2.0')"
RUN conda run -n neuroestimator Rscript -e "remotes::install_version('reticulate',version='1.24')"
RUN conda run -n neuroestimator Rscript -e "remotes::install_git('https://research-git.uiowa.edu/michaelson-lab-public/neuroestimator')"
Fortune Iriaye's avatar
Fortune Iriaye committed

# Ensure Conda environment is activated on container start
SHELL ["/bin/bash", "-c"]

# Expose RStudio Server port
EXPOSE 8787
Fortune Iriaye's avatar
Fortune Iriaye committed

Fortune Iriaye's avatar
Fortune Iriaye committed
# Set the entrypoint to start RStudio Server
Fortune Iriaye's avatar
Fortune Iriaye committed
ENTRYPOINT ["/bin/bash", "-c", "source activate neuroestimator && /usr/lib/rstudio-server/bin/rserver --server-user=$(whoami) --server-daemonize=0"]