---
title: "Docker"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Docker}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

`httpgd` can display R plots from Docker containers without X11 forwarding.

## Basic usage

### Build the image

```Dockerfile
FROM r-base:latest

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
```

```sh
docker build . -f Dockerfile -t httpgd:test
```

### Run the container

Bind the `httpgd` port with `-p`:

```sh
docker run --rm -it -p 8888:8888 httpgd:test R
```

### Start the device

Inside the container, start `httpgd` bound to all interfaces:

```R
httpgd::hgd(host = "0.0.0.0", port = 8888)
```

Open the displayed URL in your browser. To retrieve the URL later:

```R
httpgd::hgd_url(host = "localhost")
```

## Advanced usage

### Set defaults in Rprofile

Set `httpgd.host` and `httpgd.port` options in the Rprofile so `hgd()` uses them automatically:

```Dockerfile
FROM r-base:latest

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 echo 'options(httpgd.host = "0.0.0.0", httpgd.port = 8888)' >> /etc/R/Rprofile.site

EXPOSE 8888
```
