我对docker映像(salmon
)具有以下文件排列:
salmon
├── docker
│ └── Dockerfile
└── src
├── align_utils.py
├── job_utils.py
├── run_salmon.py
└── s3_utils.py
在这种情况下,我的入口点脚本是run_salmon.py
,它也使用了src/
中的其他.py脚本。当我尝试通过docker build -t salmon:pipeline .
中的docker/
构建docker映像时,出现错误:
COPY failed: stat /var/lib/docker/tmp/docker-builder013511307/src/run_salmon.py: no such file or directory
如何确定入口点脚本相对于dockerfile中工作目录的位置?
Dockerfile:
# Use Python base image from DockerHub
FROM python:2.7
# INSTALL CMAKE
RUN apt-get update && apt-get install -y sudo \
&& sudo apt-get update \
&& sudo apt-get install -y \
cmake \
wget
#INSTALL BOOST
RUN wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz \
&& mv boost_1_66_0.tar.gz /usr/local/bin/ \
&& cd /usr/local/bin/ \
&& tar -xzf boost_1_66_0.tar.gz \
&& cd ./boost_1_66_0/ \
&& ./bootstrap.sh \
&& ./b2 install
#INSTALL SALMON
RUN wget https://github.com/COMBINE-lab/salmon/releases/download/v0.14.1/salmon-0.14.1_linux_x86_64.tar.gz \
&& mv salmon-0.14.1_linux_x86_64.tar.gz /usr/local/bin/ \
&& cd /usr/local/bin/ \
&& tar -xzf salmon-0.14.1_linux_x86_64.tar.gz \
&& cd salmon-latest_linux_x86_64/
ENV PATH=$PATH:/usr/local/bin/salmon-latest_linux_x86_64/bin/
# Copy files to root directory of a Docker
WORKDIR /
COPY src/run_salmon.py /
COPY src/s3_utils.py /
COPY src/job_utils.py /
COPY src/align_utils.py /
ENTRYPOINT ["python", "/run_salmon.py"]
答案 0 :(得分:1)
从docker build -t salmon:pipeline .
目录内部运行docker
时,您将当前目录指定为构建的上下文。
在运行COPY src/run_salmon.py /
时,它会尝试查找相对于您的上下文根(即salmon/docker/src/run_salmon.py
)的路径,该路径不存在文件。
最好将您的根上下文指定为salmon
目录,并使用-f
标志指定Dockerfile的完整路径。从salmon
目录中运行此文件:
docker build -t salmon:pipeline -f docker/Dockerfile .