@kevinlanning
I think approaching Git with Github from the standpoint of making it optional is good- there is a need to learn it, but I don't think that should be the cornerstone of the class---in teaching a beginner, you want them to get up and running inside the IDE as quick as possible to start iterative development. Git is clearly helpful to revert changes, but I'm not sure that's a dealbreaker for me on teaching someone code in general.
I'm no developer by any means, but I managed to learn it in a weekend, so I'd be more than willing to help you create a simple Dockerfile for your class. It could be as simple as the following:
- Use rocker's base image with RStudio, R, and the tidyverse preconfigured
- Add system packages
- Copy any data/lessons into home directory for easy startup
- Add R packages
I have a bunch of packages I wanted, but it could be very short for you depending on what packages you want to use.
FROM rocker/tidyverse:latest
LABEL maintainer="Your_Name"
#Copy files from github repo into their environment so all files are ready to go
COPY example_data/geno_data.rda /home/ids_materials/
#system packages below
RUN apt-get update -qq \
&& apt-get -y --no-install-recommends install \
libarchive-dev \
liblzma-dev \
libbz2-dev \
clang \
ccache \
xsel \
xclip \
&& Rscript -e "devtools::install_cran(c('ggstance','ggrepel','ggthemes', \
'tidytext','readtext','textclean','janitor','dataMaid','datapasta', \
'tidyquant','timetk','tibbletime','sweep','broom','prophet', \
'forecast','prophet','lime','sparklyr','h2o','rsparkling','unbalanced','yardstick', \
'formattable','httr','rvest','xml2','jsonlite','assertr', 'testthat','assertthat', \
'corrr','officer','devtools','pacman','naniar','writexl','tidyxl'))" \
##GitHub Packages
&& Rscript -e 'devtools::install_github(c("hadley/multidplyr","jeremystan/tidyjson","ropenscilabs/skimr","sicarul/xray","r-lib/pkgman","brooke-watson/BRRR"))' \
&& rm -rf /tmp/downloaded_packages/ /tmp/*.rds \
&& rm -rf /var/lib/apt/lists/*