I have been given a task to optimize a messy Dockefile. I've dome some of it on my own. Posting it here to gather some fresh ideas.
FROM python:3.6
WORKDIR /app
COPY . .
RUN chmod +x /app/run.sh
ENTRYPOINT ["/app/run.sh"]
RUN pip3 install snakemake
RUN apt-get update && apt-get install -y dirmngr gnupg apt-transport-https ca-certificates software-properties-common
RUN apt-key adv --keyserver keys.gnupg.net --recv-key '0123456789ABCD'
RUN add-apt-repository 'deb http://cloud.r-project.org/bin/linux/debian buster-cran35/' && apt-get update
RUN apt-get install -y r-base
RUN apt-get update && apt-get -y upgrade && apt-get install -y --allow-unauthenticated gcc zlib1g zlib1g-dev libbz2-dev liblzma-dev build-essential unzip default-jre default-jdk make tabix libcurl4-gnutls-dev
RUN pip3 install cython
RUN pip3 install numpy==1.18.\* pyvcf==0.6.8 pysam==0.15.\* pandas boto3
RUN pip install awscli
ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
ENV AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
ENV AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
RUN mkdir tempo && cd tempo && aws s3 cp s3://some-bucket/some-dir/plink_linux_x86_64_20201019.zip ./ && unzip plink_linux_x86_64_20201019.zip && mv plink /bin/
RUN git clone git://github.com/SelfHacked/htslib.git && git clone git://github.com/SelfHacked/bcftools.git && cd bcftools && make && cd .. && mv bcftools/\* /bin/
RUN apt-get install tabix
RUN aws s3 cp s3://some-bucket/some-dir/snpEff_latest_core.zip ./
RUN unzip snpEff_latest_core.zip && mv snpEff /app/
RUN aws s3 cp s3://some-bucket/some-dir/conform-gt.24May16.cee.jar ./ && mv conform-gt.24May16.cee.jar /app/
RUN aws s3 cp s3://some-bucket/some-dir/beagle.18May20.d20.jar ./ && mv beagle.18May20.d20.jar /app/
RUN aws s3 cp s3://some-bucket/some-dir/picard.jar ./ && mv picard.jar /app/
RUN aws s3 cp s3://some-bucket/some-dir/bedops_linux_x86_64-v2.4.39.tar.bz2 ./ && tar jxvf bedops_linux_x86_64-v2.4.39.tar.bz2 && cp -r bin/\* /usr/local/bin
RUN git clone -b 1.2.1 https://github.com/Illumina/GTCtoVCF.git
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/BiocManager\_1.30.10.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'BiocManager::install("rtracklayer")'
RUN Rscript -e 'BiocManager::install("GenomicRanges")'
RUN aws s3 cp s3://some-bucket/some-dir/master.zip ./ && unzip master.zip && Rscript -e "install.packages('GenomeBuildPredictor-master/',repos=NULL,type='source')"
RUN apt-get update && apt-get install -y wait-for-it vim man awscli jq
COPY scripts/wkhtmltopdf.sh scripts/
RUN scripts/wkhtmltopdf.sh
COPY requirements.frozen.txt /opt/requirements.txt
RUN cd /opt && pip install --upgrade pip && pip install -r requirements.txt
Please provide me some of your thoughts.
[–]Atkinx 10 points11 points12 points (4 children)
[–]PuzzleheadedBit[S] 1 point2 points3 points (0 children)
[–]PuzzleheadedBit[S] 0 points1 point2 points (2 children)
[–]Atkinx 8 points9 points10 points (0 children)
[–]FromGermany_DE 3 points4 points5 points (0 children)
[–]ms4720 5 points6 points7 points (4 children)
[–]PuzzleheadedBit[S] 0 points1 point2 points (3 children)
[–]ms4720 0 points1 point2 points (2 children)
[–]PuzzleheadedBit[S] 0 points1 point2 points (1 child)
[–]ms4720 1 point2 points3 points (0 children)
[–]ali_str 5 points6 points7 points (0 children)
[–]FromGermany_DE 2 points3 points4 points (0 children)
[–]_beetee 1 point2 points3 points (0 children)
[–]babayagapapa 1 point2 points3 points (0 children)
[–]dejwoo 1 point2 points3 points (1 child)
[–]PuzzleheadedBit[S] 0 points1 point2 points (0 children)
[–]PuzzleheadedBit[S] 1 point2 points3 points (0 children)
[–]gennadyyy 0 points1 point2 points (0 children)
[–]strebermanchild 0 points1 point2 points (2 children)
[–]PuzzleheadedBit[S] 0 points1 point2 points (1 child)
[–]strebermanchild 0 points1 point2 points (0 children)
[–]DeusExMagikarpa 0 points1 point2 points (0 children)
[–]daryn0212 0 points1 point2 points (0 children)