运行 Nextflow 使用容器时找不到 ./bin 脚本
Cannot find ./bin scripts when running Nextflow with a container
我有一个 nextflow 脚本,它的源脚本位于我调用 nextflow 脚本的 ./bin 目录中。当我 运行 没有容器的工作流时,Nextflow 可以找到这些脚本并执行它们。但是,当我 运行 Nextflow 使用容器时,找不到脚本,尽管我尝试将这些脚本添加到容器文件中。
我想我要么没有将可执行文件正确添加到容器中,要么我没有在 Nextflow 脚本或配置文件中正确引用它们。感谢任何帮助。
这是一个示例过程:
process clean {
// Remove common contaminants from fastq(s) using tapioca script
// see: https://github.com/ncgr/tapioca
input:
path fastq_file from fastq_raw
val x from machine_name
output:
path 'out.fastq' into clean_out
stdout ch1
script:
"""
echo "Number of reads in $fastq_file"
grep -c "^@" $fastq_file
tap_contam_analysis --db ${dbdir}/phix174 --pct 80 ${fastq_file} > hits.txt
echo "PhiX filtering completed for ${fastq_file}"
"""
}
请注意,“tap_contam_analysis”脚本是位于 ./bin 中的 perl 脚本,我从中调用 Nextflow 脚本。
这是我的 Docker 文件的相关部分。请注意,我试图修改 $PATH 以希望能够解决问题......运气不好:
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /usr/src
#Copy all the stuff for this Nextflow workflow (python and perl scripts)
COPY . .
ENV PATH=${PATH}:/usr/src/bin
最后,这是我的 nextflow.config 文件:
process {
container = 'nf_se_demux_to_bam_bai_denovo'
}
只需将可执行文件添加到容器 $PATH
中的某个位置即可。人们通常喜欢为此使用 /usr/local/bin
,但您可以使用以下方法检查其他位置:
docker run --rm ubuntu:18.04 bash -c 'echo $PATH'
因此,您的 Dockerfile 可能如下所示:
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /usr/src
COPY ./bin /usr/local/bin
我有一个 nextflow 脚本,它的源脚本位于我调用 nextflow 脚本的 ./bin 目录中。当我 运行 没有容器的工作流时,Nextflow 可以找到这些脚本并执行它们。但是,当我 运行 Nextflow 使用容器时,找不到脚本,尽管我尝试将这些脚本添加到容器文件中。
我想我要么没有将可执行文件正确添加到容器中,要么我没有在 Nextflow 脚本或配置文件中正确引用它们。感谢任何帮助。
这是一个示例过程:
process clean {
// Remove common contaminants from fastq(s) using tapioca script
// see: https://github.com/ncgr/tapioca
input:
path fastq_file from fastq_raw
val x from machine_name
output:
path 'out.fastq' into clean_out
stdout ch1
script:
"""
echo "Number of reads in $fastq_file"
grep -c "^@" $fastq_file
tap_contam_analysis --db ${dbdir}/phix174 --pct 80 ${fastq_file} > hits.txt
echo "PhiX filtering completed for ${fastq_file}"
"""
}
请注意,“tap_contam_analysis”脚本是位于 ./bin 中的 perl 脚本,我从中调用 Nextflow 脚本。
这是我的 Docker 文件的相关部分。请注意,我试图修改 $PATH 以希望能够解决问题......运气不好:
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /usr/src
#Copy all the stuff for this Nextflow workflow (python and perl scripts)
COPY . .
ENV PATH=${PATH}:/usr/src/bin
最后,这是我的 nextflow.config 文件:
process {
container = 'nf_se_demux_to_bam_bai_denovo'
}
只需将可执行文件添加到容器 $PATH
中的某个位置即可。人们通常喜欢为此使用 /usr/local/bin
,但您可以使用以下方法检查其他位置:
docker run --rm ubuntu:18.04 bash -c 'echo $PATH'
因此,您的 Dockerfile 可能如下所示:
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /usr/src
COPY ./bin /usr/local/bin