Dieses Repo ist ein Kopie des Tutorials: http://haines-lab.com/post/2022-01-23-automating-computational-reproducibility-with-r-using-renv-docker-and-github-actions/
- anlegen von Scripten und installieren von Packages wie gewohnt
- an Ende erzeugen wir mit renv einen Snapshot, welche Libraries und Abhängikeiten wir genutzt haben
renv::snapshot()
- Im Project-Directory erscheint eine renv.lock-File, in der alle Libraries hinterlegt sind.
- Wenn wir das Projekt auf einem anderen Rechner starten, können wir sämtliche Libraries und Abhängikeit ganz einfach installieren
renv::restore()
- Wir wollen nun ein Image Docker erstellen, R darauf installieren dann alle R-Packages aus der renv.lock-File installieren. Dafür sind folgende Schritte notwendig.
- check R Version (R --version im Terminal)
- check der renv Version in der renv.lock-File. Suchen nach renv
- mit diesen beiden Infos können wir eine Dockerfile erstellen
# Dockerfile
# Start with R version 4.1.0
FROM rocker/r-ver:4.1.0
# Install some linux libraries that R packages need
RUN apt-get update && apt-get install -y libcurl4-openssl-dev libssl-dev libxml2-dev
# Use renv version 0.15.2
ENV RENV_VERSION 0.15.2
# Install renv
RUN Rscript -e "install.packages('remotes', repos = c(CRAN = 'https://cloud.r-project.org'))"
RUN Rscript -e "remotes::install_github('rstudio/renv@${RENV_VERSION}')"
# Create a directory named after our project directory
WORKDIR /computational-reproducibility-in-r
# Copy the lockfile over to the Docker image
COPY renv.lock renv.lock
# Install all R packages specified in renv.lock
RUN Rscript -e 'renv::restore()'
# Default to bash terminal when running docker image
CMD ["bash"]
- Um das Image zu erstellen, geben wir folgendes in Terminal ein:
docker build -t my-docker-image .
- Das Image mit dem Namen my-docker-image wird erstellt.
- Je nach Fehlermeldung, müssen ggf. noch Packages auf dem Ubuntu Server, wie z.B. libssl-dev installiert werden.
- Um unseren Docker zu den lokalen Files zu verbinden, nutzen wir folgenden Code:
docker run -it -v ~/computational-reproducibility-in-r:/computational-reproducibility-in-r my-docker-image
- -it startet den interactive Mode, sodas wir Befehle selber ausführen können
- -v Flag und der folgende Pfad geben dem Docker an, das lokale Projekt mit dem Projekt in der Dockerfile zu verbinden (WORKDIR)
- Sind die Verzeichnisse mounted