首页 > 解决方案 > PermissionError: [WinError 5] Access Denied: [4776] 运行 docker-compose up 时无法执行脚本 docker-compose

问题描述

我已经构建了一个测试应用程序以更好地理解 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

我的码头文件

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:

标签: pythonwindowsdockerdocker-composepermissions

解决方案


TL;博士

我认为存在以下问题:

    build: /

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

    build: ./

到底发生了什么 ?

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

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

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

在构建时

我不确定docker是如何集成到 Windows 中的,但它可能会/被翻译为您的 docker 恶魔无权阅读的某个地方,从而PermissionError在编译过程中提出此问题。

在运行时

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


推荐阅读