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 。