Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从nodejs应用程序读取/写入docker卷_Node.js_Docker_Docker Compose_Docker Volume - Fatal编程技术网

Node.js 从nodejs应用程序读取/写入docker卷

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!"

我有两份申请

1.后端节点应用

2.前端节点应用

两者都在docker容器中运行

我的目标是从后端应用程序上传图像,并从前端应用程序访问它们。我想,在容器之间共享图像文件的唯一方法是卷。 所以我在docker compose文件中创建了一个卷“资产”。但如何从后端应用程序将数据写入卷文件夹,以及如何从前端应用程序访问卷文件夹

预期行为

// 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-拥有一个专用的“存储节点”(可以扩展到多个)似乎是更好的选择。这样的服务器将有数百个,我无法为每个节点管理不同的存储节点,这验证了我的观点!数百台具有共享卷的服务器正等待发生意外。