基于映像构建Docker卷

时间:2019-09-03 14:14:53

标签: javascript node.js docker docker-compose

我正在尝试通过bash命令直接从JS映像构建docker卷。

这里的困难主要在于我希望将卷的内容当作字符串的事实。

字符串本身就是从Kafka流中读取的JS代码。

我知道如何直接从js文件执行bash命令,但是当我看到命令的外观时,我有点迷失了:

要澄清:  -我想指定eval(string)作为要在容器内运行的代码  -我要指定三个环境文件  -我想直接从js文件运行所有内容。  -此JS文件已被泊坞,以防万一。

我了解堆栈溢出并不是要给我答案,但是我已经看过每个人,而且我很难确定如何继续。因此,任何指针将不胜感激

2 个答案:

答案 0 :(得分:0)

据我了解,您可以这样进行:

1)创建一个包含运行js文件所需的所有内容的docker映像(操作系统,节点等)

2)收到js文件后,请在本地驱动器上创建一个临时目录,然后将该文件复制到其中。

3)运行容器,安装本地目录,并告诉容器从此处执行文件。命令看起来像这样

docker run \
   --mount type=bind,src=/your-temp-dir,dst=/temp-dir,readonly \
   --detach \
   your-docker-image-name \
   node /temp-dir/your-javascript-file.js

有关更多详细信息,请参见https://docs.docker.com/engine/reference/run/

答案 1 :(得分:0)

我不确定您是否真的需要对JS文件进行泊坞处理。相反,您可以做的是将传入流(即JS)写入另一个文件,例如volume-creator.js,然后调用该文件。

在这种情况下,您的volume-creator.js还应该包含诸如node-docker之类的依赖项,这将使您的docker命令更容易且与操作系统无关。

我避免对调用程序JS进行泊坞的原因是,您可能需要一些额外的特权才能在容器内运行docker命令,例如,可能需要安装docker套接字,这会使您的主机OS和docker系统易受攻击。

相关问题