Dockerfile找不到app.py

我有一个烧瓶应用程序,我在一个泊坞窗图像中embedded以下文件夹结构。

├── Dockerfile ├── README.md ├── app │  ├── __init__.py │  ├── app.py │  ├── db │  ├── imgcomp │  │  └── __init__.py │  ├── static │  └── templates │  ├── comparison_result.html │  ├── display_images.html │  ├── index.html │  └── upload.html ├── docker-compose.yml ├── requirements.txt └── tests 

这些是docker-compose.yml的内容:

 version: '2' services: web: build: . ports: - "5000:5000" volumes: - .:/code 

这些是Dockerfile的内容:

 FROM python:3.4-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD ["python", "app.py"] 

当我运行docker-compose时,出现错误:

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

只是因为它在子文件夹中。 改变参数到app / app.py没有帮助。 另外,当我运行docker-compose down,然后编辑文件,当我再次运行docker-compose时,它似乎没有注册文件的任何更改。 我错过了什么?

问题1616中有同样的问题

该问题似乎主要是Dockerfile中ADD / WORKDIR的结果:

 ADD . /code WORKDIR /code 

与docker-compose.yml中的卷映射冲突

 volumes: - .:/code 

我可能误读了说明书,但都有。

原因:

在远程主机上运行应用程序时,您需要删除从本地目录装入任何内容的任何volumes条目。

我们促进将代码添加到映像并将其作为卷挂载的原因是,通过执行docker-compose build ,您可以获得可以部署到远程服务器的映像,但在本地开发时仍可以挂载其代码它可以实时重新加载。

如果您想使用Compose在本地开发应用程序并将其部署到云端,最佳做法是为每个docker-compose.yml用于本地开发的文件,以及用于远程部署的其他文件(例如remote.yml ) – 并在部署时使用-f标志传递备用文件。

您可以使用extends选项来减less两个文件之间的重复。


在Windows上,请注意您的path和共享状态:请参阅问题3157 。