I'm trying to create a Dockerfile for running R on a raspberry pi3. I found a container that has Debian for the pi. I also found a docker file that does what I want for an x86 computer. I thought creating a dockerfile for the pi would be a simple as changing the base image and the repo to install R for arm. This is my Dockerfile:
FROM resin/raspberry-pi3-debian
LABEL maintainer="Me <[email protected]>"
## Set a default user. Available via runtime flag `--user docker`
## Add user to 'staff' group, granting them write privileges to /usr/local/lib/R/site.library
## User should also have & own a home directory (for rstudio or linked volumes to work properly).
RUN useradd docker \
&& mkdir /home/docker \
&& chown docker:docker /home/docker \
&& addgroup docker staff
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ed \
less \
locales \
vim-tiny \
wget \
ca-certificates \
fonts-texgyre \
&& rm -rf /var/lib/apt/lists/*
## Configure default locale, see https://github.com/rocker-org/rocker/issues/19
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
&& locale-gen en_US.utf8 \
&& /usr/sbin/update-locale LANG=en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
## Use Debian unstable via pinning -- new style via APT::Default-Release
RUN echo "deb http://cran.rstudio.com/bin/linux/debian jessie-cran3/" > /etc/apt/sources.list.d/debian-unstable.list \
&& echo 'APT::Default-Release "testing";' > /etc/apt/apt.conf.d/default
ENV R_BASE_VERSION 3.4.4
## Now install R and littler, and create a link for littler in /usr/local/bin
## Also set a default CRAN repo, and make sure littler knows about it too
RUN apt-get update \
&& apt-get install -t unstable -y --no-install-recommends \
littler \
r-cran-littler \
r-base=${R_BASE_VERSION}* \
r-base-dev=${R_BASE_VERSION}* \
r-recommended=${R_BASE_VERSION}* \
&& echo 'options(repos = c(CRAN = "https://cloud.r-project.org/"), download.file.method = "libcurl")' >> /etc/R/Rprofi$
&& echo 'source("/etc/R/Rprofile.site")' >> /etc/littler.r \
&& ln -s /usr/share/doc/littler/examples/install.r /usr/local/bin/install.r \
&& ln -s /usr/share/doc/littler/examples/install2.r /usr/local/bin/install2.r \
&& ln -s /usr/share/doc/littler/examples/installGithub.r /usr/local/bin/installGithub.r \
&& ln -s /usr/share/doc/littler/examples/testInstalled.r /usr/local/bin/testInstalled.r \
&& install.r docopt \
&& rm -rf /tmp/downloaded_packages/ /tmp/*.rds \
&& rm -rf /var/lib/apt/lists/*
CMD ["R"]
Alas, this did not work
docker build --tag hello .
Get:18 http://deb.debian.org jessie/main armhf Packages [8,864 kB]
Fetched 23.6 MB in 30s (775 kB/s)
Reading package lists...
W: GPG error: http://cran.rstudio.com jessie-cran3/ Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 06F90DE5381BA480
Reading package lists...
E: The value 'unstable' is invalid for APT::Default-Release as such a release is not available in the sources
The command '/bin/sh -c apt-get update && apt-get install -t unstable -y --no-install-recommends littler r-cran-littler r-base=${R_BASE_VERSION}* r-base-dev=${R_BASE_VERSION}* r-recommended=${R_BASE_VERSION}* && echo 'options(repos = c(CRAN = "https://cloud.r-project.org/"), download.file.method = "libcurl")' >> /etc/R/Rprofile.site && echo 'source("/etc/R/Rprofile.site")' >> /etc/littler.r && ln -s /usr/share/doc/littler/examples/install.r /usr/local/bin/install.r && ln -s /usr/share/doc/littler/examples/install2.r /usr/local/bin/install2.r && ln -s /usr/share/doc/littler/examples/installGithub.r /usr/local/bin/installGithub.r && ln -s /usr/share/doc/littler/examples/testInstalled.r /usr/local/bin/testInstalled.r && install.r docopt && rm -rf /tmp/downloaded_packages/ /tmp/*.rds && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100
My guess is that this line is wrong
## Use Debian unstable via pinning -- new style via APT::Default-Release
RUN echo "deb http://cran.rstudio.com/bin/linux/debian jessie-cran3/" > /etc/apt/sources.list.d/debian-unstable.list \
&& echo 'APT::Default-Release "testing";' > /etc/apt/apt.conf.d/default
Alas, no clue how to fix it. Any suggestions?