Многоэтапная сборка docker не выполняется, поскольку она не может увидеть R из первой сборки - PullRequest
0 голосов
/ 09 января 2020

Проблема

Я пытаюсь создать Dockerfile с несколькими изображениями, который сначала извлекает образ биокондуктора, вызывает сценарий установки R, а затем извлекает образ Ubuntu для установки python связанные пакеты. Несмотря на то, что я сохранил R в path из сборки первого этапа, похоже, что это не сохраняется после сборки второго этапа, потому что когда я вызываю скрипт точки входа run_deseq2.py, он говорит: /bin/sh: 1: Rscript: not found. Как правильно объединить эти два этапа в одном файле Docker, чтобы они все еще могли «видеть» друг друга?

Dockerfile

FROM bioconductor/release_base2

ADD src/setup.R /
RUN Rscript /setup.R

ENV PATH=/usr/local/bin/:$PATH

FROM ubuntu:19.04 

ENV DEBIAN_FRONTEND=noninteractive  

WORKDIR / 

RUN apt-get update && \ 
    apt-get install -y \ 
        python-dev \ 
        python-pip \ 
        wget 

RUN pip install awscli boto3

COPY src/run_deseq2.py /
COPY src/s3_utils.py /
COPY src/job_utils.py /
COPY src/deseq2.R /
COPY src/ModelLoxTag.R /

ENV R_THREADS=30 

# Run docker, starting with run script
ENTRYPOINT ["python", "/run_deseq2.py"]

1 Ответ

0 голосов
/ 09 января 2020
FROM bioconductor/release_base2 AS buidler
ADD src/setup.R /
RUN Rscript /setup.R
ENV PATH=/usr/local/bin/:$PATH

FROM ubuntu:19.04 
ENV DEBIAN_FRONTEND=noninteractive  
WORKDIR / 
RUN apt-get update && \ 
    apt-get install -y \ 
        python-dev \ 
        python-pip \ 
        wget 
RUN pip install awscli boto3
COPY --from=builder src/run_deseq2.py /   #If you want to copy something from stage-1 use from 
COPY src/s3_utils.py /
COPY src/job_utils.py /
COPY src/deseq2.R /
COPY src/ModelLoxTag.R /
ENV R_THREADS=30 
# Run docker, starting with run script
ENTRYPOINT ["python", "/run_deseq2.py"]

Я не знаю много R, поэтому не могу помочь с целым docker изображением, но вы можете пометить этап, используя AS, а на другом этапе вы можете скопировать файлы вставки.

больше Подробности также можно проверить на офисной доке: https://docs.docker.com/develop/develop-images/multistage-build/

...