首页 > 解决方案 > 本地运行的节点可以需要来自 docker 容器内部的文件吗?

问题描述

我认为标题确实说明了一切,但只是为了澄清,说我在我的 macbook 上运行节点,就像这样:

node file1.js
//file1.js
require("some/secret/path/to/a/file/in/a/docker/container")

那可能吗?

如果是这样,我很想知道那条秘密路径可能是什么。谢谢!

标签: node.jsdocker

解决方案


我知道没有绝对路径可以访问您的容器,但是您有一些选择:

您可以使用绑定的卷运行容器,以获取对共享文件夹的访问权限。

例如,在您的主机中,您可以创建一个文件夹:

mkdir /home/user/shared_folder

然后,运行绑定该文件夹的容器:

docker run -v /home/user/shared_folder:/some_path/in/your/container some_image

每当您的容器修改此文件夹、添加某些内容、删除某些内容时,您的主机也将能够看到这些更改。

您的另一个选择是使用 docker cp 并将所需的文件从容器复制到主机。

您可以使用 child_process 来执行此操作。

  var exec = require('child_process').exec;

    exec("docker cp container_id:/some_text host_path")

推荐阅读