当前位置:  开发笔记 > 编程语言 > 正文

当我尝试在Docker容器中运行Shell脚本时无法打开文件

如何解决《当我尝试在Docker容器中运行Shell脚本时无法打开文件》经验,为你挑选了1个好方法。

我已经为此苦苦挣扎了一段时间,我不知道自己在做什么错。我试图在容器内运行Shell脚本,并且该Shell脚本从Shell脚本所在的目录中读取python脚本。但是我收到这个错误,说“ python:无法打开文件'get_gene_length_filter.py':[错误2]没有这样的文件或目录”。

这是我的Dockerfile:

FROM ubuntu:14.04.3
RUN apt-get update && apt-get install -y g++ \
                make \
                git \
                zlib1g-dev \
                python \
                wget \
                curl \
                python-matplotlib \
                python-numpy \
                python-pandas

ENV BINPATH /usr/bin
ENV EVO2GIT https://upendra_35@bitbucket.org/upendra_35/evolinc_docker.git
RUN git clone $EVO2GIT
WORKDIR /evolinc_docker
RUN chmod +x evolinc-part-I.sh && cp evolinc-part-I.sh $BINPATH

RUN wget -O- http://cole-trapnell-lab.github.io/cufflinks/assets/downloads/cufflinks-2.2.1.Linux_x86_64.tar.gz | tar xzvf -
RUN wget -O- https://github.com/TransDecoder/TransDecoder/archive/2.0.1.tar.gz | tar xzvf -

ENV PATH /evolinc_docker/cufflinks-2.2.1.Linux_x86_64/:$PATH
ENV PATH /evolinc_docker/TransDecoder-2.0.1/:$PATH
ENTRYPOINT ["/usr/bin/evolinc-part-I.sh"]
CMD ["-h"]

这是我的git repo代码:

#!/bin/bash
# Create a directory to move all the output files
mkdir output
# Extracting classcode u transcripts, making fasta file, removing transcripts > 200 and selecting protein coding transcripts
grep '"u"' $comparefile | gffread -w transcripts_u.fa -g $referencegenome - && python get_gene_length_filter.py transcripts_u.fa \
    transcripts_u_filter.fa && TransDecoder.LongOrfs -t transcripts_u_filter.fa

这就是我运行它的方式:

docker run --rm -v $(pwd):/working-dir -w /working-dir ubuntu/evolinc -c AthalianaslutteandluiN30merged.gtf -g TAIR10_chr.fasta  

jwodder.. 5

我将采取猜测和假设get_gene_length_filter.py/evolinc_docker,在Dockerfile声明的工作目录。不幸的是,当您运行时docker run ... -w /working-dir ...,工作目录将是/working-dir,因此Python将get_gene_length_filter.py/working-dir显然找不到的目录中查找。编辑您的Shell脚本以get_gene_length_filter.py通过其完整的绝对路径引用:python /evolinc_docker/get_gene_length_filter.py



1> jwodder..:

我将采取猜测和假设get_gene_length_filter.py/evolinc_docker,在Dockerfile声明的工作目录。不幸的是,当您运行时docker run ... -w /working-dir ...,工作目录将是/working-dir,因此Python将get_gene_length_filter.py/working-dir显然找不到的目录中查找。编辑您的Shell脚本以get_gene_length_filter.py通过其完整的绝对路径引用:python /evolinc_docker/get_gene_length_filter.py

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有