Docker 疑案之草民也敢在太岁头上动土
post 是在 2020-08-23 写的,细节已经懒得查证了。
Today I found a strange thing—normal user can delete the root files created by Docker—while revising .travis.yml
of localsite.
Three days later, I decide to switch to super user when run R in Docker on Travis. Attached to the end is the formal code (using normal user):
RUN echo 'R_LIBS_USER="~/.local/lib/R"' > /usr/lib/R/etc/Renviron.site
cache:
directories: [$HOME/.local/lib/R/]
install:
# create container
- docker run -dt --name rlang0 -w $HOME -u `id -u`:`id -g` -e CI=true -e GITHUB_PAT=$GITHUB_PAT -v $TRAVIS_BUILD_DIR:$HOME -v $HOME/.local/lib/R:$HOME/.local/lib/R dongzhuoer/rlang:rmarkdown 2> /dev/null
# add user & group (assuming the image contains no user)
- docker exec -u root rlang0 groupadd `id -gn` -g `id -g`
- docker exec -u root rlang0 useradd $USER -u `id -u` -g `id -g`
# (optional) install additional software & packages
- docker exec -u root rlang0 bash -c "apt update && apt -y install hugo"
- docker exec -u root rlang0 Rscript -e "remotes::update_packages(c('magrittr'))"
script: docker exec rlang0 Rscript -e "rmarkdown::render('main.Rmd')"