[英]How to include shell script suite in docker file
I am trying to create a docker image for BBMAP
( https://sourceforge.net/projects/bbmap/files/latest/download ) shell script suite available online along with samtools and picard.jar.我正在尝试为BBMAP
( https://sourceforge.net/projects/bbmap/files/latest/download ) shell 脚本套件创建一个BBMAP
映像, BBMAP
脚本套件可与 samtools 和 picard.jar 一起在线使用。 I was able to run samtools and picard, but for some reason I am not able to add bbmap
below.我能够运行 samtools 和 picard,但由于某种原因,我无法在下面添加bbmap
。 Can someone please let me know what I am missing here?有人可以让我知道我在这里缺少什么吗?
I am trying to add shell scripts to bin to run them as executables.我正在尝试将 shell 脚本添加到 bin 以将它们作为可执行文件运行。 In my docker file below, this is where I need help:在我下面的 docker 文件中,这是我需要帮助的地方:
&& wget -q https://sourceforge.net/projects/bbmap/files/latest/download \
&& tar -xjvf /tmp/download \
&& cp -av /tmp/bbmap/* /usr/bin/ \
Dockerfile: 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 \
&& apt-get install --no-install-recommends -y \
make \
gcc \
g++ \
libz-dev \
libbz2-dev \
liblzma-dev \
ncurses-dev \
bc \
libnss-sss \
time \
&& cd /tmp \
&& wget -q https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VERSION}/samtools-${SAMTOOLS_VERSION}.tar.bz2 \
&& tar xjvf samtools-${SAMTOOLS_VERSION}.tar.bz2 \
&& cd /tmp/samtools-${SAMTOOLS_VERSION}/ \
&& make \
&& cp -av /tmp/samtools-${SAMTOOLS_VERSION}/samtools /usr/bin/ \
&& wget -q -O /usr/bin/picard.jar https://github.com/broadinstitute/picard/releases/download/${PICARD_VERSION}/picard.jar \
&& wget -q https://sourceforge.net/projects/bbmap/files/latest/download \
&& tar -xjvf /tmp/download \
&& cp -av /tmp/bbmap/* /usr/bin/ \
&& ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime \
&& echo "America/Chicago" > /etc/timezone \
&& dpkg-reconfigure --frontend noninteractive tzdata \
&& apt-get clean all \
&& 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"]
This is the error I am getting:这是我得到的错误:
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
Earlier in your script, you run:在脚本的前面,您运行:
cd /tmp/samtools-${SAMTOOLS_VERSION}/
So when you run this:所以当你运行这个时:
wget -q https://sourceforge.net/projects/bbmap/files/latest/download
The resulting file is:生成的文件是:
/tmp/samtools-${SAMTOOLS_VERSION}/download
That means that when you run your tar
command:这意味着当您运行tar
命令时:
tar -xjvf /tmp/download
...it doesn't find the file because it isn't in /tmp
. ...它没有找到该文件,因为它不在/tmp
。
Either change the path on the tar
command, or add a cd /tmp
to your script before downloading the file.要么更改tar
命令的路径,要么在下载文件之前将cd /tmp
添加到脚本中。 Or pass something like -O /tmp/download.tar
to your wget
invocation.或者将诸如-O /tmp/download.tar
类的内容-O /tmp/download.tar
给您的wget
调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.