我的docker-compose.yml文件:
version: '3'
services:
dash:
build: ./docker
environment:
- COMPOSE_CONVERT_WINDOWS_PATHS=false
ports:
- "5000:5000"
volumes:
- c:/Users:/data
FROM python:3
WORKDIR /data
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py ./
CMD [ "python", "./app.py" ]
在Dockerfile中执行简单的COPY命令会在文件位于文件夹(与Dockerfile文件不在同一级别)中时引发此错误
我的文件夹结构:
- docker
- Dockerfile
- requirements.txt
- app
- app.py
- docker-compose.yml
答案 0 :(得分:1)
您收到错误消息是因为主机上的docker build上下文目录./docker
不包含app.py
。
确保./docker
文件夹中包含app.py
个文件。
如果您知道包含构建上下文和app.py文件的正确目录,则将该目录指定为构建上下文。
build: /path/to/build/context
有关构建上下文here的更多信息。
要了解docker build上下文到底是什么,请检查this。
希望这会有所帮助。
更新:
检查文件夹结构后,看来app/app.py
在./docker
目录之外,这是您的构建上下文。
将应用程序目录置于docker文件夹中,并将复制命令更改为COPY app/app.py ./
。还要将CMD更改为CMD [ "python", "/data/app.py" ]
。
答案 1 :(得分:0)
使用COPY
和ADD
,您只能使用与Dockerfile
相同文件夹中或子文件夹中的源文件:
COPY遵守以下规则:
- 路径必须在构建上下文中;您无法复制../something/something,因为Docker构建的第一步 是将上下文目录(和子目录)发送到docker 守护程序。
(https://docs.docker.com/engine/reference/builder/#copy)
在您的情况下,app.py
在docker
的同级文件夹中,这是您的构建上下文的基本目录。您需要将app.py
移到docker
文件夹中的某个位置。例如:
- docker
- Dockerfile
- requirements.txt
- app
- app.py
- docker-compose.yml
并调整您的Dockerfile:
WORKDIR /data
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY app/app.py ./
CMD [ "python", "./app.py" ]