【发布时间】:2020-11-07 14:16:34
【问题描述】:
我想为 BBmap 套件创建一个 docker 映像,该套件有一个包含多个 shell 脚本 (${SHELLTOOLS}) 的文件夹。我在下面创建了一个 docker 文件来创建 docker 映像,但我还想使用帮助脚本 entrypoint.sh。如何让这个 docker 文件使用entrypoint.sh 运行?有人可以建议我在这个 docker 文件和entrypoint.sh 中添加/更改什么,以便我可以创建一个 docker 映像并使用以下命令运行它吗?
我的Docker 文件:
FROM openjdk:8-jre
RUN apt-get update \
&& apt-get install -y \
build-essential \
openjdk-11-jre \
wget \
&& rm -rf /var/lib/apt/lists/*
ENV BBMAP_VERSION 38.20
ENV BBMAP_DIR /usr/local/bbmap
WORKDIR /usr/local
RUN set -eux; \
wget -O bbmap.tar.gz https://sourceforge.net/projects/bbmap/files/BBMap_${BBMAP_VERSION}.tar.gz/download \
&& tar -zxf bbmap.tar.gz \
&& rm bbmap.tar.gz
ENV PATH ${BBMAP_DIR}:${PATH}
COPY ./entrypoint.sh /usr/local/bin/
## Add ENV for Shell scripts from BBMAP
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
我的entrypoint.sh:
#!/bin/bash
${SHELLTOOL} -Xmx${MEM}g in=${sortedFQ} delimiter=${DELIM} prefixmode=f column=${COLNUM} out=${sampleFQ}%_#.fq
我在 LSF 服务器上运行的命令:
export SHELLTOOL="/usr/local/bbmap/demuxbyname.sh"; \
export MEM=20; \
export sortedFQ="/${PR}/${FULLSM}/paire_test_sorted.fastq"; \
export column=2; \
export DELIM=":"; \
export COLNUM=2; \
export sampleFQ="/${PR}/${FULLSM}/ADNI_1380"
bsub \
-J "${FULLSM}_bbduk_demulti" \
-o "${BASE}/${FULLSM}_bbduk_demulti.%J" \
-n1 -W 1440 \
-R "rusage[mem=20192]" \
-q research-hpc \
-a "docker(username/bbmap:latest)" \
entrypoint.sh
【问题讨论】:
-
您遇到的具体问题是什么?似乎您需要将“我的命令”脚本中的大部分内容移动到入口点脚本中;我可能会将您尝试运行的命令作为命令部分而不是环境变量传递。
-
当我运行 docker 镜像时,我得到了
demuxbyname.shnot found 的错误。我不确定我的 docker 文件中缺少什么。 -
你在哪里添加了
SHELLTOOL和其余环境变量定义的块? -
@emi 在命令中:
export SHELLTOOL="/usr/local/bbmap/demuxbyname.sh"; -
我的意思是,在 Docker 环境中。