Using httpgd
to display R plots in a Docker container
(Linux container) may be easier than the traditional and common method;
linking the X11 window system.
See the vignette("a00_installation")
for details on how
to install httpgd
on Linux.
You can create a Docker image with httpgd
installed by
create a Dockerfile like below.
FROM r-base:latest
# Install httpgd and dependent packages.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libfontconfig1-dev \
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* \
&& install2.r --error --skipinstalled --ncpu -1 \
httpgd \
&& rm -rf /tmp/downloaded_packages
Run the docker build
command from your shell to build a
Docker image.
When creating a container with the docker run
command,
bind the port to be used by httpgd
with the -p
(--publish
) option.
If you run R in a container with a command like the following, the 8888 port of the container will be bound to the 8888 port of the Docker host.
Running the following command in the R console will initialize the graphics device and start the server.
Then, copy the displayed link in your browser.
If you want to display the link again, execute the
hgd_url()
function as follows.
The hostname can be replaced with any value (e.g. localhost).
By setting options httpgd.host
and
httpgd.port
in the Rprofile, you can omit setting the
arguments when starting the httpgd server by hgd()
.
For example, if you create a Dockerfile with the following contents, you can build an image with these options already set in the Rprofile.
FROM r-base:latest
# Install httpgd and dependent packages.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libfontconfig1-dev \
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* \
&& install2.r --error --skipinstalled --ncpu -1 \
httpgd \
&& rm -rf /tmp/downloaded_packages
# Set default values used in the httpgd::hgd() function.
RUN echo 'options(httpgd.host = "0.0.0.0", httpgd.port = 8888)' >> /etc/R/Rprofile.site
EXPOSE 8888