Как включить набор сценариев оболочки в файл docker

#linux #docker #shell

#linux #docker #оболочка

Вопрос:

Я пытаюсь создать образ docker для BBMAP (https://sourceforge.net/projects/bbmap/files/latest/download ) набор сценариев оболочки доступен онлайн вместе с samtools и picard.jar . Мне удалось запустить samtools и picard, но по какой-то причине я не могу добавить bbmap ниже. Может кто-нибудь, пожалуйста, дайте мне знать, чего мне здесь не хватает?

Я пытаюсь добавить сценарии оболочки в bin, чтобы запускать их как исполняемые файлы. В моем файле docker ниже мне нужна помощь:

 amp;amp; wget -q https://sourceforge.net/projects/bbmap/files/latest/download 
amp;amp; tar -xjvf /tmp/download 
amp;amp; cp -av /tmp/bbmap/* /usr/bin/ 
  

Dockerfile:

 FROM openjdk:8-jre
LABEL maintainer="AN <XXX@wustl.edu>"

LABEL org.label-schema.schema-version="1.0"
# LABEL org.label-schema.build-date=$BUILD_DATE
LABEL org.label-schema.name="an/samtofastq"
LABEL org.label-schema.description="Image for Reverting .bam"

ENV SAMTOOLS_VERSION 1.9
ENV PICARD_VERSION 2.20.8

WORKDIR /tmp

RUN apt-get update -y 
amp;amp; apt-get install --no-install-recommends -y 
 make 
 gcc 
 g   
 libz-dev 
 libbz2-dev 
 liblzma-dev 
 ncurses-dev 
 bc 
 libnss-sss 
 time 
amp;amp; cd /tmp 
amp;amp; wget -q https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VERSION}/samtools-${SAMTOOLS_VERSION}.tar.bz2 
amp;amp; tar xjvf samtools-${SAMTOOLS_VERSION}.tar.bz2 
amp;amp; cd /tmp/samtools-${SAMTOOLS_VERSION}/ 
amp;amp; make 
amp;amp; cp -av /tmp/samtools-${SAMTOOLS_VERSION}/samtools /usr/bin/ 
amp;amp; wget -q -O /usr/bin/picard.jar https://github.com/broadinstitute/picard/releases/download/${PICARD_VERSION}/picard.jar 
amp;amp; wget -q https://sourceforge.net/projects/bbmap/files/latest/download 
amp;amp; tar -xjvf /tmp/download 
amp;amp; cp -av /tmp/bbmap/* /usr/bin/ 
amp;amp; ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime 
amp;amp; echo "America/Chicago" > /etc/timezone 
amp;amp; dpkg-reconfigure --frontend noninteractive tzdata 
amp;amp; apt-get clean all 
amp;amp; rm -rfv /var/lib/apt/lists/* /tmp/* /var/tmp/* 

 

# COPY ./entrypoint.sh /usr/local/bin/
ENV PICARD /usr/bin/picard.jar

## Add ENV for Shell scripts from BBMAP
# ENV DEMUX /usr/bin/demuxbyname.sh
# ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/bin/bash"]
  

Это ошибка, которую я получаю:

 tar (child): /tmp/download: Cannot open: No such file or directory                                                      
tar (child): Error is not recoverable: exiting now                                                                      
tar: Child returned status 2                                                                                            
tar: Error is not recoverable: exiting now  
  

Комментарии:

1. В чем именно проблема? Вы получаете сообщение об ошибке? Что-то не работает?

2. @larsks Пожалуйста, ознакомьтесь с моим обновленным вопросом с ошибками, которые я получаю.

Ответ №1:

Ранее в вашем скрипте вы запускаете:

 cd /tmp/samtools-${SAMTOOLS_VERSION}/ 
  

Итак, когда вы запускаете это:

 wget -q https://sourceforge.net/projects/bbmap/files/latest/download
  

Результирующий файл:

 /tmp/samtools-${SAMTOOLS_VERSION}/download
  

Это означает, что при запуске вашей tar команды:

 tar -xjvf /tmp/download
  

… он не находит файл, потому что его нет /tmp .

Либо измените путь в tar команде, либо добавьте a cd /tmp в свой скрипт перед загрузкой файла. Или передайте что-то подобное -O /tmp/download.tar вашему wget вызову.