我正在尝试通过bash命令直接从JS映像构建docker卷。
这里的困难主要在于我希望将卷的内容当作字符串的事实。
字符串本身就是从Kafka流中读取的JS代码。
我知道如何直接从js文件执行bash命令,但是当我看到命令的外观时,我有点迷失了:
要澄清: -我想指定eval(string)作为要在容器内运行的代码 -我要指定三个环境文件 -我想直接从js文件运行所有内容。 -此JS文件已被泊坞,以防万一。
我了解堆栈溢出并不是要给我答案,但是我已经看过每个人,而且我很难确定如何继续。因此,任何指针将不胜感激
答案 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系统易受攻击。