无法在 docker 容器中找到文件

Pro*_*ons 4 docker dockerfile

我是 docker 新手并创建了一个简单的测试应用程序来测试我的 docker 容器,但 docker 无法找到该server.py文件。

我的项目的目录结构是:

<project>
|
|-- Dockerfile
|-- app
      |
      |-- requirements.txt
      |-- server.py
Run Code Online (Sandbox Code Playgroud)

以下是Dockerfile内容:

FROM ubuntu:latest

MAINTAINER name <mail@domain.com>

COPY . /app  # do I need this ?
COPY ./app/requirements.txt /tmp/requirements.txt

RUN apt-get -y update && \
apt-get install -y python-pip python-dev build-essential
RUN pip install -r /tmp/requirements.txt

WORKDIR /app
RUN chmod +x server.py    # ERROR: No such file or directory

EXPOSE 5000

ENTRYPOINT ["python"]
CMD ["server.py"]    # ERROR: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我在 Windows 上使用 boot2docker。

我在这里缺少什么?

小智 8

您正在将本地/app/文件夹复制到在/app/Docker 容器中创建的正在运行的 Docker 容器(如评论中所述)/app/app/server.py中的文件夹。

如何解决

一个简单的解决方法是改变

COPY . /app
Run Code Online (Sandbox Code Playgroud)

COPY ./app/server.py /app/server.py
Run Code Online (Sandbox Code Playgroud)

解释

该命令的COPY工作原理如下:

COPY <LOCAL_FROM> <DOCKER_TO>
Run Code Online (Sandbox Code Playgroud)

您正在选择 Dockerfile 所在文件夹中的所有内容,使用.in your first COPY,从而选择/app要添加到 Docker 文件夹的本地文件夹。您在 Docker 容器中为它分配的目的地也是/app,因此正在运行的容器中的路径/app/app/..解释了为什么找不到该文件。

查看Docker 文档