You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在设置了WORKDIR /app的Node.js容器中通过volumes_from访问共享存储卷

解决Docker容器间共享卷在Node.js中无法访问的问题

我来帮你理清这个问题的核心——你误解了volumes_from的工作方式,它不是把卷直接映射到某个以卷名命名的路径,而是完全复用目标容器里的挂载配置。

问题根源

你的client-test容器把aca_storage卷挂载到了/app/files_to_share路径:

client-test:
  volumes:
    - aca_storage:/app/files_to_share

当你在server-test里用volumes_from: client-test:ro时,Docker会把client容器里的所有挂载点(包括这个卷的挂载路径)原封不动地复制到server容器里。也就是说,aca_storage卷在server-test里的挂载路径也是**/app/files_to_share**,而不是你尝试的/aca_storage或其他卷名相关的路径。

验证与解决步骤

  1. 先验证挂载路径
    进入aca-server-test容器后,直接执行:

    ls /app/files_to_share
    

    你应该能看到client容器写入的文件了。如果还看不到,先确认client容器确实已经向这个路径写入了文件,或者client容器是否正常运行过。

  2. 修改Node.js代码的路径
    把PATH_TO_SHARED_VOLUME改成/app/files_to_share,或者因为你的Node.js应用的WORKDIR是/app,用相对路径./files_to_share也可以:

    const PATH_TO_SHARED_VOLUME = '/app/files_to_share'; // 或者 './files_to_share'
    fs.readdir(PATH_TO_SHARED_VOLUME, function (err, files) {
      if (err) {
        return console.log('Unable to scan directory: ' + err);
      }
      files.forEach(function (file) {
        console.log(file);
      });
    });
    
  3. 更稳妥的替代方案(推荐)
    其实volumes_from的耦合性比较高,它依赖client容器的挂载配置。你可以直接在server-test的配置里挂载同一个卷,自己指定挂载路径,这样更清晰可控:

    server-test:
      image: aca-server:0.0.1
      container_name: aca-server-test
      command: sh -c "npm install && npm run start:dev"
      ports:
        - 8080:8080
      volumes:
        - aca_storage:/app/files_to_share # 直接挂载卷到指定路径
      environment:
        NODE_ENV: development
    

    这样即使client容器的挂载路径变化,server容器的路径也不受影响,维护起来更方便。

  4. 排查挂载信息的通用方法
    如果你不确定卷的挂载路径,可以用Docker命令查看容器的详细挂载信息:

    docker inspect aca-server-test | grep -A 10 "Mounts"
    

    输出里会显示每个卷的Source(宿主机或卷名)和Destination(容器内的挂载路径),你直接用Destination的值作为文件路径就可以了。

额外注意事项

  • 确保client-test容器已经成功向/app/files_to_share写入了文件,比如进入client容器执行ls /app/files_to_share确认文件存在。
  • 因为你用了:ro只读模式挂载,server容器只能读取文件,不能修改,这符合你的需求,但如果后续需要写入,记得去掉:ro。

内容的提问来源于stack exchange,提问作者Qua285

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 05:08:12