Tinytex: Shiny server in Docker

Created on 18 Apr 2018  路  6Comments  路  Source: yihui/tinytex

My goal is to create a docker container that can handle PDF download (through rmarkdown) in Shiny server.

rmarkdown: version 1.9
tinytext: version 0.5

After installing tinytext (with tinytex::install_tinytex()), I have no idea on how to "restart" the system because it's in the docker environment, and systemctl is not available in the debian build.

tinytex:::is_tinytex()
returns
FALSE

Is there a way to enable the tinytex without 'restarting' the system?

Thank you.

All 6 comments

You may see this docker image for an example of installing TinyTeX in docker: https://github.com/rocker-org/rocker-versioned/blob/master/verse/Dockerfile

Thank you @yihui. It worked!

I followed the part where TinyTex is installed.

RUN wget -qO- \
    "https://github.com/yihui/tinytex/raw/master/tools/install-unx.sh" | \
    sh -s - --admin --no-path \
  && mv ~/.TinyTeX /opt/TinyTeX \
  && /opt/TinyTeX/bin/*/tlmgr path add \
  && tlmgr install metafont mfware inconsolata tex ae parskip listings \
  && tlmgr path add \
  && Rscript -e "source('https://install-github.me/yihui/tinytex'); tinytex::r_texmf()" \
  && chown -R root:staff /opt/TinyTeX \
  && chmod -R g+w /opt/TinyTeX \
  && chmod -R g+wx /opt/TinyTeX/bin \

Now tinytex:::is_tinytex() returns [1]TRUE

Interestingly enough I was just reading the same docker file and I was led to the TinyTex FAQ. Barely missed the part about the TinyTex installation.

Good to know!

Want to achieve the same objective as @leafyeh7

First I tried to install tinytex via DOCKERFILE using

RUN Rscript -e "install.packages("tinytex")"

But the tinytex was installed as root. R will complain couldn't find pdflatex.

Found this issue and put https://github.com/yihui/tinytex/issues/34#issuecomment-382524259 into my dockerfile.

After run docker-compose build, had errors

mv: cannot stat 'texlive/*': No such file or directory
rm: cannot remove 'texlive': No such file or directory
rm: cannot remove 'install-tl-*': No such file or directory
sh: 27: /root/.TinyTeX/bin/*/tlmgr: not found
/bin/sh: 1: /opt/TinyTeX/bin/*/tlmgr: not found

wondering if there is a way to solve this?

Thank you in advance for any feedback.

First know that

install.packages("tinytex")

will install the tinytex R packages and not TinyTeX, the LaTeX distribution. That is why pdflatex is not found because you did not installed LaTeX.

If you want to follow rocker project example I would look at their new dockerfile and scripts to have example on how they install TeX Live on docker.

You can also follow FAQ 6 and 7 https://yihui.org/tinytex/faq/ to see how to install as an admin on Linux.

We also now have a new installation process for binary on linux could also help maybe: https://yihui.org/tinytex/#installation

You'll need to get the paths right, and the user access also. You could maybe do that from R in with tinytex::install_tinytex but you will get a user installed version so this needs to be done with the same user that will run the code in your container.

Hope it helps

Thanks very much for the reply, @cderv
Got it worked in our internal cluster system.

Ended up using a hybrid Dockerfile from the rocker project repo.
I still need to manually change the user group for the directory /usr/local/ inside the container.

docker exec -it <container name> bash
chown -R root:shiny usr/local/

This happened after deployed the container but before I want to knit a PDF document.

Here is what I put into the dockerfile with the second script you pointed out for TinyTex installation.

FROM rocker/shiny:4.0.3
LABEL maintainer [email protected]

ENV CTAN_REPO=http://mirror.ctan.org/systems/texlive/tlnet
ENV PATH=/usr/local/texlive/bin/x86_64-linux:$PATH


RUN /rocker_scripts/install_verse.sh

RUN install2.r --error -r $CRAN --skipinstalled tinytex
RUN install2.r --error --deps TRUE -r $CRAN --skipinstalled \
   influxdbr shiny shinydashboard shinyjs ggplot2 DT data.table plotly openssl knitr rmarkdown

COPY ./* /srv/shiny-server/
Was this page helpful?
0 / 5 - 0 ratings

Related issues

alanbrown98 picture alanbrown98  路  3Comments

cderv picture cderv  路  7Comments

MilesMcBain picture MilesMcBain  路  5Comments

jonkeane picture jonkeane  路  7Comments

anhus picture anhus  路  4Comments