255 lines
7.4 KiB
Docker
255 lines
7.4 KiB
Docker
###
|
|
### R base image
|
|
### Based on r-ver
|
|
###
|
|
FROM debian:buster AS rver
|
|
|
|
LABEL org.label-schema.license="GPL-2.0" \
|
|
org.label-schema.vcs-url="https://github.com/rocker-org/rocker-versioned" \
|
|
org.label-schema.vendor="Rocker Project" \
|
|
maintainer="Carl Boettiger <cboettig@ropensci.org>"
|
|
|
|
ARG R_VERSION
|
|
ARG BUILD_DATE
|
|
ARG CRAN
|
|
ENV BUILD_DATE ${BUILD_DATE:-2020-04-24}
|
|
ENV R_VERSION=${R_VERSION:-3.6.3} \
|
|
CRAN=${CRAN:-https://cran.r-project.org} \
|
|
LC_ALL=en_US.UTF-8 \
|
|
LANG=en_US.UTF-8 \
|
|
TERM=xterm
|
|
|
|
RUN <<END_RUN_CMD
|
|
DEBIAN_FRONTEND=noninteractive
|
|
apt-get update && apt-get install -y --no-install-recommends \
|
|
bash-completion \
|
|
ca-certificates \
|
|
file \
|
|
fonts-texgyre \
|
|
g++ \
|
|
gfortran \
|
|
gsfonts \
|
|
libblas-dev \
|
|
libbz2-1.0 \
|
|
libcurl4 \
|
|
libicu63 \
|
|
libjpeg62-turbo \
|
|
libopenblas-dev \
|
|
libpangocairo-1.0-0 \
|
|
libpcre3 \
|
|
libpng16-16 \
|
|
libreadline7 \
|
|
libtiff5 \
|
|
liblzma5 \
|
|
locales \
|
|
make \
|
|
unzip \
|
|
zip \
|
|
zlib1g
|
|
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
|
|
locale-gen en_US.utf8
|
|
/usr/sbin/update-locale LANG=en_US.UTF-8
|
|
BUILDDEPS="curl \
|
|
default-jdk \
|
|
libbz2-dev \
|
|
libcairo2-dev \
|
|
libcurl4-openssl-dev \
|
|
libpango1.0-dev \
|
|
libjpeg-dev \
|
|
libicu-dev \
|
|
libpcre3-dev \
|
|
libpng-dev \
|
|
libreadline-dev \
|
|
libtiff5-dev \
|
|
liblzma-dev \
|
|
libx11-dev \
|
|
libxt-dev \
|
|
perl \
|
|
tcl8.6-dev \
|
|
tk8.6-dev \
|
|
texinfo \
|
|
texlive-extra-utils \
|
|
texlive-fonts-recommended \
|
|
texlive-fonts-extra \
|
|
texlive-latex-recommended \
|
|
x11proto-core-dev \
|
|
xauth \
|
|
xfonts-base \
|
|
xvfb \
|
|
zlib1g-dev"
|
|
apt-get install -y --no-install-recommends $BUILDDEPS
|
|
## Download source code
|
|
curl -O https://cran.r-project.org/src/base/R-3/R-${R_VERSION}.tar.gz
|
|
## Extract source code
|
|
tar -xf R-${R_VERSION}.tar.gz
|
|
cd R-${R_VERSION}
|
|
## Set compiler flags
|
|
R_PAPERSIZE=letter \
|
|
R_BATCHSAVE="--no-save --no-restore"
|
|
R_BROWSER=xdg-open
|
|
PAGER=/usr/bin/pager
|
|
PERL=/usr/bin/perl
|
|
R_UNZIPCMD=/usr/bin/unzip
|
|
R_ZIPCMD=/usr/bin/zip
|
|
R_PRINTCMD=/usr/bin/lpr
|
|
LIBnn=lib
|
|
AWK=/usr/bin/awk
|
|
CFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g"
|
|
CXXFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g"
|
|
## Configure options
|
|
./configure --enable-R-shlib \
|
|
--enable-memory-profiling \
|
|
--with-readline \
|
|
--with-blas \
|
|
--with-tcltk \
|
|
--disable-nls \
|
|
--with-recommended-packages \
|
|
--prefix /usr/local
|
|
## Build and install
|
|
make -j $(nproc) -O
|
|
make install
|
|
## Add a library directory (for user-installed packages)
|
|
mkdir -p /usr/local/lib/R/site-library
|
|
chown root:staff /usr/local/lib/R/site-library
|
|
chmod g+ws /usr/local/lib/R/site-library
|
|
## Fix library path
|
|
sed -i '/^R_LIBS_USER=.*$/d' /usr/local/lib/R/etc/Renviron
|
|
echo "R_LIBS_USER=\${R_LIBS_USER-'/usr/local/lib/R/site-library'}" >> /usr/local/lib/R/etc/Renviron
|
|
echo "R_LIBS=\${R_LIBS-'/usr/local/lib/R/site-library:/usr/local/lib/R/library:/usr/lib/R/library'}" >> /usr/local/lib/R/etc/Renviron
|
|
echo "options(repos = c(CRAN='$CRAN'), download.file.method = 'libcurl')" >> /usr/local/lib/R/etc/Rprofile.site
|
|
## Clean up from R source install
|
|
apt-get remove --purge -y $BUILDDEPS
|
|
apt-get autoremove -y
|
|
apt-get autoclean -y
|
|
rm -rf /var/lib/apt/lists/*
|
|
END_RUN_CMD
|
|
|
|
###
|
|
### Added Bioconductor packages to r-ver
|
|
###
|
|
FROM rver as bioconductor
|
|
RUN <<END_RUN_CMD
|
|
apt-get update && apt-get install --no-install-recommends -y \
|
|
zlib1g-dev
|
|
|
|
R -e "install.packages('BiocManager', repos='https://cran.r-project.org')"
|
|
R -e "BiocManager::install('Biostrings')"
|
|
R -e "BiocManager::install('seqinr')"
|
|
|
|
apt-get autoremove -y
|
|
apt-get autoclean -y
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
END_RUN_CMD
|
|
|
|
###
|
|
### Perl base image
|
|
###
|
|
FROM buildpack-deps:buster AS perl
|
|
LABEL maintainer="Peter Martini <PeterCMartini@GMail.com>, Zak B. Elep <zakame@cpan.org>"
|
|
|
|
RUN <<END_RUN_CMD
|
|
curl -fL https://www.cpan.org/src/5.0/perl-5.34.1.tar.xz -o perl-5.34.1.tar.xz
|
|
tar --strip-components=1 -xaf perl-5.34.1.tar.xz -C /usr/src/perl
|
|
rm perl-5.34.1.tar.xz
|
|
cat *.patch | patch -p1
|
|
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
|
|
archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)"
|
|
archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')"
|
|
./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des
|
|
make -j$(nproc)
|
|
TEST_JOBS=$(nproc) make test_harness
|
|
make install
|
|
cd /usr/src
|
|
curl -fLO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7047.tar.gz
|
|
tar -xzf App-cpanminus-1.7047.tar.gz && cd App-cpanminus-1.7047 && perl bin/cpanm . && cd /root
|
|
cpanm IO::Socket::SSL
|
|
curl -fL https://raw.githubusercontent.com/skaji/cpm/0.997011/cpm -o /usr/local/bin/cpm
|
|
chmod +x /usr/local/bin/cpm
|
|
rm -fr /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7047*
|
|
END_RUN_CMD
|
|
|
|
###
|
|
### Added bioperl packaged
|
|
###
|
|
FROM perl AS bioperl
|
|
RUN <<END_RUN_CMD
|
|
cpanm -n -v Bio::Seq Bio::SeqIO Perl4::CoreLibs
|
|
END_RUN_CMD
|
|
|
|
###
|
|
### Samtools build
|
|
###
|
|
FROM buildpack-deps:buster AS samtools
|
|
ARG SAMTOOLS_VERSION=1.2
|
|
RUN <<END_RUN_CMD
|
|
curl -L "https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VERSION}/samtools-${SAMTOOLS_VERSION}.tar.bz2" | tar xvj
|
|
cd samtools-${SAMTOOLS_VERSION} && make && make install && cd ..
|
|
END_RUN_CMD
|
|
|
|
###
|
|
### Viquas extraction
|
|
###
|
|
FROM buildpack-deps:buster AS viquas
|
|
RUN <<END_RUN_CMD
|
|
mkdir /viquas
|
|
curl -L "https://master.dl.sourceforge.net/project/viquas/ViQuaS1.3.tar.gz" | tar xvz -C /viquas --strip-components=1
|
|
END_RUN_CMD
|
|
|
|
|
|
###
|
|
### Final build
|
|
###
|
|
FROM debian:buster as final
|
|
RUN <<END_RUN_CMD
|
|
apt-get update && apt-get install -y --no-install-recommends \
|
|
bash-completion \
|
|
file \
|
|
fonts-texgyre \
|
|
gfortran \
|
|
gsfonts \
|
|
libblas-dev \
|
|
libbz2-1.0 \
|
|
libcurl4 \
|
|
libicu63 \
|
|
libjpeg62-turbo \
|
|
libncurses5-dev \
|
|
libopenblas-dev \
|
|
libpangocairo-1.0-0 \
|
|
libpcre3 \
|
|
libpng16-16 \
|
|
libreadline7 \
|
|
libtiff5 \
|
|
liblzma5 \
|
|
locales \
|
|
procps \
|
|
unzip \
|
|
zip \
|
|
zlib1g
|
|
|
|
apt-get autoremove -y
|
|
apt-get autoclean -y
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
END_RUN_CMD
|
|
|
|
COPY --from=bioconductor /usr/local/bin /usr/local/bin
|
|
COPY --from=bioconductor /usr/local/lib /usr/local/lib
|
|
COPY --from=bioconductor /usr/local/share /usr/local/share
|
|
COPY --from=bioperl /usr/local/bin /usr/local/bin
|
|
COPY --from=bioperl /usr/local/lib /usr/local/lib
|
|
COPY --from=bioperl /usr/local/share /usr/local/share
|
|
COPY --from=bioperl /usr/share/perl /usr/share/perl
|
|
COPY --from=bioperl /etc/perl /etc/perl
|
|
COPY --from=bioperl /usr/lib/x86_64-linux-gnu/perl5 /usr/lib/x86_64-linux-gnu/perl5
|
|
COPY --from=bioperl /usr/share/perl5 /usr/share/perl5
|
|
COPY --from=bioperl /usr/lib/x86_64-linux-gnu/perl /usr/lib/x86_64-linux-gnu/perl
|
|
COPY --from=bioperl /usr/share/perl /usr/share/perl
|
|
COPY --from=bioperl /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl-base
|
|
COPY --from=samtools /usr/local/bin /usr/local/bin
|
|
COPY --from=samtools /usr/local/lib /usr/local/lib
|
|
COPY --from=samtools /usr/local/share /usr/local/share
|
|
COPY --from=viquas --chmod=777 /viquas /viquas
|
|
COPY --chmod=755 viquas /usr/local/bin/viquas
|
|
ENTRYPOINT [ "viquas" ]
|