如何在Docker Compose的API服务中访问静态服务的uploads目录?
解决Docker Compose中API服务无法访问Static服务uploads目录的问题
我来帮你分析问题根源,再给出具体的解决办法:
问题本质
Docker容器是完全隔离的运行环境,哪怕在同一个Compose项目里,api服务也没法直接访问static服务内部的目录。再加上市面上你的配置里,只有static服务挂载了uploads共享卷,api服务根本没关联这个卷,自然会提示目录不存在。
核心解决方案:让两个服务共享同一个卷
只需要修改你的docker-compose.yml,给api服务也加上uploads卷的挂载配置即可:
services: static: build: ./static volumes: - uploads:/app/uploads api: build: ./api volumes: - uploads:/app/uploads # 新增这一行,把共享卷挂载到api服务内部路径 volumes: uploads:
额外注意事项
- 确保你的
uploads.js代码里,是访问api服务内部挂载的路径(比如/app/uploads),别试图通过容器名称/IP去访问static服务的目录——容器间的文件系统是互相隔离的,共享卷才是文件级共享的正确方式。 - 如果你的static服务是用来对外提供uploads目录里的静态文件访问,api服务也可以通过HTTP请求(比如
http://static/uploads/xxx.jpg)来获取文件,但如果需要直接读写文件系统,共享卷依然是最优方案。
内容的提问来源于stack exchange,提问作者Denis
相关产品推荐
相关产品推荐

