python - 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:
解决方案
TL;博士
我认为存在以下问题:
build: /
要使用本地文件夹作为上下文进行构建,您应该说
build: ./
到底发生了什么 ?
话虽如此,您的项目结构如何?你在哪里Dockerfile
?是吗
app
- some.py
Dockerfile
requirement.txt
docker-compose.yaml
从您的角度来看docker-compose.yml
,./
是它所在的文件夹。在 Unix 文件系统中/
,代表文件系统的根;你会怎么称呼C:\
。
在构建时
我不确定docker是如何集成到 Windows 中的,但它可能会/
被翻译为您的 docker 恶魔无权阅读的某个地方,从而PermissionError
在编译过程中提出此问题。
在运行时
在尝试将各种文件夹挂载到容器中时,您可能会遇到类似的正确问题。这是修复(当它发生时)
推荐阅读
- sql - 如何在 SQL Server 中检查调用存储过程
- delphi - Delphi StringGrid 以不需要的列间距显示
- mysql - MariaDB最新10.5版本无法更改root密码,没有skip-grant-tables无法使用
- python - 如何使用碰撞矩形或其他东西从鼠标坐标中获取对象(或它在 NumPy 数组中的索引)?(Pygame 2D)
- php - 如何在 php 中读取 html 元素的类名?
- react-native - 如何正确调用此自定义钩子,并避免无限重新渲染?
- python - 如何在深度图上进行彩色图像分割并创建一个代表结果的 9 个索引数组?
- javascript - 水平导航栏中下拉菜单的定位相关问题
- mysql - 聚合 FileSize 数据信息
- angular - 在 Angular 9 中将 # 添加到浏览器地址的末尾