运行docker-compose up启动Django服务时db服务报目录共享被拒绝错误
报错原因
该错误出现在Windows系统的Docker Desktop环境下,是因为Docker未获得本地E:\Office\django-ambassador-main目录的共享权限,无法将本地.dbdata目录挂载到数据库容器中做数据持久化。
标准解决步骤
- 打开Docker Desktop客户端,进入设置界面,找到
Resources下的File Sharing选项 - 在共享目录配置中添加
E:\Office\django-ambassador-main路径,也可以直接勾选E盘盘符开放整盘共享 - 点击
Apply & Restart保存配置并重启Docker服务 - Docker重启完成后,重新执行
docker-compose up命令即可正常启动项目
无目录共享替代方案
如果不想开放本地目录的Docker共享权限,可以修改docker-compose.yml中db服务的挂载配置,将本地目录挂载替换为Docker内置匿名卷:
找到db服务的volumes配置段:
services: db: # 其他配置省略 volumes: - ./.dbdata:/var/lib/postgresql/data
修改为如下配置:
services: db: # 其他配置省略 volumes: - dbdata:/var/lib/postgresql/data # 末尾额外声明Docker卷 volumes: dbdata:
修改完成后重新执行docker-compose up即可,数据库数据会存储在Docker管理的内置卷中,不会读写本地文件系统,也不会触发权限报错。
内容的提问来源于stack exchange,提问作者KRISHNANDU RANJN ROY
相关产品推荐
相关产品推荐

