簡體   English   中英

碼頭工人。 沒有這樣的文件或目錄

[英]Docker. No such file or directory

我有一些文件,我想將它們移動到 docker 容器。 但最后docker找不到文件..

包含本地機器上文件的文件夾位於/home/katalonne/flask4

文件結構(如果重要):

如果重要的話,文件結構 Dockerfile

#
# First Flask App Dockerfile
#
#

# Pull base image.
FROM centos:7.0.1406

# Build commands
RUN yum install -y python-setuptools mysql-connector mysql-devel gcc python-devel
RUN easy_install pip
RUN mkdir /opt/flask4
WORKDIR /opt/flask4
ADD requirements.txt /opt/flask4
RUN pip install -r requirements.txt
ADD . /opt/flask4

# Define deafult command.
CMD ["python","hello.py"]

# Expose ports.
EXPOSE 5000

所以我用這個命令構建了圖像:

docker build -t flask4 .

我通過以下方式運行容器:

docker run -d -p 5000:5000 -v /home/Katalonne/flask4:/opt/flask4 --name web flask4

當我想在容器上運行文件時:

docker logs -f web

我收到這個錯誤,它找不到我的 hello.py 文件:

python: can't open file 'hello.py': [Errno 2] No such file or directory

我的錯是什么?

PS:我是 Docker 和 Linux 部分菜鳥。

與您的 Dockerfile 位於同一位置的文件和目錄確實(暫時)可用於您的 docker 構建。 但是,在 docker 構建之后,除非您使用ADDCOPY將這些文件永久移動到 docker 容器,否則它們在構建完成后將無法用於您的 docker 容器。 此文件上下文用於構建,但您希望將它們移動到容器中。

您可以添加以下命令:

...
ADD . /opt/flask4
ADD . . 

# Define deafult command.
CMD ["python","hello.py"]

ADD . . ADD . . 應該將臨時構建上下文中的所有內容復制到容器中。 這些文件將轉到的位置是您的WORKDIR指向的位置 (/opt/flask4)。

如果您只想將 hello.py 添加到您的容器中,請使用

ADD hello.py hello.py

因此,當您運行CMD ["python","hello.py"] ,您將使用的pwd/opt/flask4 ,並且 hello.py 應該在那里,並在其中運行命令python hello.py目錄應該工作。

哈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM