Python 错误:服务';破折号';未能生成:复制失败:stat/var/lib/docker/tmp/docker-builder134733065/app.py:在Windows 10中没有这样的文件或目录

Python 错误:服务';破折号';未能生成:复制失败:stat/var/lib/docker/tmp/docker-builder134733065/app.py:在Windows 10中没有这样的文件或目录,python,docker,docker-compose,Python,Docker,Docker Compose,My docker-compose.yml文件: version: '3' services: dash: build: ./docker environment: - COMPOSE_CONVERT_WINDOWS_PATHS=false ports: - "5000:5000" volumes: - c:/Users:/data Dockerfile 在Dockerfile中执行简单复制命令会在文件位于文件夹中时引

My docker-compose.yml文件:

version: '3'
services:
  dash:
    build: ./docker
    environment:
      - COMPOSE_CONVERT_WINDOWS_PATHS=false
    ports:
      - "5000:5000"
    volumes:
      - c:/Users:/data
  • Dockerfile
在Dockerfile中执行简单复制命令会在文件位于文件夹中时引发此错误(与Dockerfile文件级别不同)

我的文件夹结构:

- docker
    - Dockerfile
    - requirements.txt  
- app
    - app.py
- docker-compose.yml

使用
复制
添加
,您只能使用与
Dockerfile
位于同一文件夹或子文件夹中的源文件:

复制遵循以下规则:

  • 路径必须在构建的上下文中;您不能复制../something/something,因为docker构建的第一步 是将上下文目录(和子目录)发送给docker 守护进程
()

在您的情况下,
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" ]

出现错误是因为主机上的docker生成上下文目录
/docker
不包含
app.py

确保
/docker
文件夹包含
app.py
文件

如果知道包含生成上下文和app.py文件的正确目录,请将该目录指定为生成上下文

build: /path/to/build/context
有关构建上下文的更多信息

要知道什么是docker构建上下文,请选中

希望这有帮助

更新:

检查文件夹结构后,似乎
app/app.py
不在作为构建上下文的
/docker
目录中

build: /path/to/build/context

将应用程序目录放入docker文件夹,并将copy命令更改为
copy app/app.py./
。同时将CMD更改为
CMD[“python”,“/data/app.py”]

我已在问题中添加了我的文件夹结构,请检查。我已移动到docker文件夹,但无法工作,如果您
docker将exec[service name]sh
组合到容器中并执行
ls.
app.py
是否出现?破折号在您的案例中我已移动到docker文件夹,但不在@mchawreChange@mchawrecd将此
CMD[“python”,“/app.py”]
更改为此
CMD[“python”,“/data/app.py”]
。运行后通知我。相同错误:
dash|1 | python:无法打开文件'/data/app.py':[Errno 2]没有这样的文件或目录mgmt-dash|u|1退出,代码为2
将复制命令更改为
复制app/app.py/data/
。构建并运行它。在您进行任何代码更改之后。您需要构建
docker compose build
,然后
docker compose up