Node.js 从nodejs应用程序读取/写入docker卷
我有两份申请 1.后端节点应用 2.前端节点应用 两者都在docker容器中运行 我的目标是从后端应用程序上传图像,并从前端应用程序访问它们。我想,在容器之间共享图像文件的唯一方法是卷。 所以我在docker compose文件中创建了一个卷“资产”。但如何从后端应用程序将数据写入卷文件夹,以及如何从前端应用程序访问卷文件夹 预期行为Node.js 从nodejs应用程序读取/写入docker卷,node.js,docker,docker-compose,docker-volume,Node.js,Docker,Docker Compose,Docker Volume,我有两份申请 1.后端节点应用 2.前端节点应用 两者都在docker容器中运行 我的目标是从后端应用程序上传图像,并从前端应用程序访问它们。我想,在容器之间共享图像文件的唯一方法是卷。 所以我在docker compose文件中创建了一个卷“资产”。但如何从后端应用程序将数据写入卷文件夹,以及如何从前端应用程序访问卷文件夹 预期行为 // on backend app fs.writeFileSync("{volume_magic_path}/sample.txt", "Hey there!"
// on backend app
fs.writeFileSync("{volume_magic_path}/sample.txt", "Hey there!");
// on frontend app
fs.readFileSync("{volume_magic_path}/sample.txt", 'utf8');
docker-compose.yml
version: "3.7"
services:
express:
build: ./
restart: always
ports:
- "5000:5000"
volumes:
- .:/usr/src/app
volumes:
assets:
因此,基本上,我应该为“volume\u magic\u path”编写什么来访问volume文件夹?请查找以下示例,在后端或前端,您已经在容器中写入路径
在容器中的位置
服务:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- app-volume: location_in_the_container
express:
build: ./
restart: always
ports:
- "5000:5000"
volumes:
- app-volume: location_in_the_container
volumes:
app-volume:
请更换容器中的位置
请检查它看起来像是XY问题。前端应用程序永远不必直接访问物理文件。前端代码是在浏览器中运行的,它们没有类似的文件系统API。访问文件的接口是HTTP
我认为您正在寻找的是从前端上传文件,并将其作为HTTP资源提供。为了做到这一点,您必须为文件上载和资源访问创建端点。如果您使用的是express或HTTP库的任何等效工具来提供文件,我建议您使用express.static()。您考虑过重新编译吗?共享卷不会扩展到wll-拥有一个专用的“存储节点”(可以扩展到多个)似乎是更好的选择。这样的服务器将有数百个,我无法为每个节点管理不同的存储节点,这验证了我的观点!数百台具有共享卷的服务器正等待发生意外。