PermissionError: [WinError 5] Access Denied: [4776] Failed to execute script docker-compose when running docker-compose up

PermissionError: [WinError 5] Access Denied: [4776] Failed to execute script docker-compose when running docker-compose up

我构建了一个测试应用程序以更好地理解 FastAPI 和 sqlalchemy 的概念 我想成为能够提供 docker-compose.yml 的应用程序,它可以用于 运行 我的解决方案,只需 做 docker-compose up

但是我得到了

Building al_test
Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose\cli\main.py", line 67, in main
  File "compose\cli\main.py", line 126, in perform_command
  File "compose\cli\main.py", line 1070, in up
  File "compose\cli\main.py", line 1066, in up
  File "compose\project.py", line 615, in up
  File "compose\service.py", line 362, in ensure_image_exists
  File "compose\service.py", line 1125, in build
  File "site-packages\docker\api\build.py", line 160, in build
  File "site-packages\docker\utils\build.py", line 30, in tar
  File "site-packages\docker\utils\build.py", line 49, in exclude_paths
  File "site-packages\docker\utils\build.py", line 214, in rec_walk
  File "site-packages\docker\utils\build.py", line 214, in rec_walk
  File "site-packages\docker\utils\build.py", line 184, in rec_walk
PermissionError: [WinError 5] Отказано в доступе: '\\?\C:\$Recycle.Bin\S-1-5-18'
[4776] Failed to execute script docker-compose

我的docker文件

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7

COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt 

COPY . /app

WORKDIR /app
ADD . /app

ENV DATABASE_URL="postgres://superuser:superuser@localhost:5433/al-test-3" 

EXPOSE 8000

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

和docker-compose.yml

version: '3.8'
services:
  al_test:
    build: /
    ports:
     - 5001:80
  postgresql:
    image: "bitnami/postgresql:latest"
    volumes:
      - postgresql-data:/bitnami/postgresql
    ports:
      - "5446:5432"
    environment:
      - POSTGRESQL_DATABASE=al-test-3
      - POSTGRESQL_USERNAME=superuser
      - POSTGRESQL_PASSWORD=superuser
      - POSTGRESQL_POSTGRES_PASSWORD=superuser

volumes:
  postgresql-data:

TL;DR

我认为有问题:

    build: /

要以本地文件夹作为上下文进行构建,您应该说

    build: ./

究竟发生了什么?

话虽如此,您的项目是如何构建的?你的 Dockerfile 在哪里?是吗

app
    - some.py
Dockerfile
requirement.txt
docker-compose.yaml

从您的 docker-compose.yml 的角度来看,./ 是它所在的文件夹。在 Unix 文件系统中,/ 代表文件系统的 根目录;你会怎么称呼 C:\.

构建时

我不确定 docker 是如何集成到 Windows 中的,但是 / 可能被翻译成某个地方您的 docker 恶魔没有阅读权限,在您编译期间引发此 PermissionError

在运行时间

您在尝试将各种文件夹装载到您的容器中时可能会遇到类似的权限问题。这是修复(当它发生时)