Chapter 7 Dockerfile for JAMES
7.2 Pre-requisites
JAMES is currently constructed from a collection of R packages. The top-level package at https://github.com/growthcharts/james also defines a Javascript interface in the inst/www directory. Deployment of JAMES relies on the OpenCPU server. In principle, it is enough to install the james package on the OpenCPU server, and will also install all dependencies.
The following is needed to build and run a JAMES image:
Permission to read from the following private repo’s:
growthcharts/chartplottergrowthcharts/curvematchinggrowthcharts/donorloadergrowthcharts/jamesdocker
If needed, a personal Github token with repo scope from here, Generate a token with only scope repo.
Install
Docker Desktopon your local machine, and run some tutorials
7.3 Dockerfile
The Dockerfile is at https://raw.githubusercontent.com/growthcharts/jamesdocker/master/Dockerfile, which is located in the private repo https://github.com/growthcharts/jamesdocker. You need authentication to use this resource.
- Clone the
growthcharts/jamesdockerrepo to your machine - Set working directory to root of
jamesdocker - If needed: Add the file
docker/opencpu_config/Renvironwith contentsGITHUB_PAT=fa2...with your own GITHUB_PAT.
7.4 Docker commands
Build the james image, type in a terminal
docker build -t james .This may takes a long time (30 minutes), in which the entire application is downloaded from various web-locations. After (hopefully successful) completion, check the image
docker images -aIf all is well, the top line is called james. Now run the container on your local machine:
docker run -t -d -p 80:80 jamesIf the ports are already taken by other containers, stop and remove all containers:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)Reissue the docker run, and the container should now run. Check by
docker pswhich should list a container created from the james image.
If you want to enter the container use
docker exec -i -t 6c /bin/bashwhere 6c are the first two characters of the container ID.
Inside the container, check font matching of Arial as
fc-match Arial7.5 Checks with the browser
http://localhostshould show Apache2 Ubuntu default screen.
http://localhost/ocpu/test/should show OpenCPU test page.
http://localhost/rstudio/should start the Rstudio IDE - if installed . Use opencpu:opencpu to log in.
http://localhost/ocpu/library/james/www/should start the JAMES javascript interface.
7.6 Security
- Don’t use the intermediate container, since it will contain your token in
/.Renviron. The latest (james) container does not hold your token, and can be shared. - The container is shielded from the machine on which it runs. However, the materials within the container are only protected by
R_LIMITS. In general, for production it is wise to add restriction on theOpenCPUserver.