我有一个要求。有没有办法在golang内部运行nodejs应用程序?我需要将nodejs应用程序包装在golang应用程序中,最后生成一个golang二进制文件,该文件启动nodejs服务器,然后能够调用nodejs rest端点。我需要使用nodem_odules将整个nodejs应用程序封装在golang二进制文件中,如果有必要的话,还需要封装nodejs运行时。
发布于 2017-03-20 20:14:23
好的,你可以做一个Go程序,它包括一个压缩的Node应用程序,它提取并启动,但它将很难做好-你会有巨大的二进制文件,在提取文件时延迟,潜在的可移植性问题等。通常当你想调用REST端点时,你在一些服务器上托管你的Node应用程序,你让客户端应用程序(在你的例子中是Go应用程序)连接到那个Node应用程序正常工作。优点是它更快,应用程序更小,你没有Node二进制文件和插件的可移植性问题,你可以随时快速更新你的后端。
发布于 2017-03-21 01:51:36
将nodejs应用程序嵌入到您的golang中将是一个非常糟糕的主意,原因有很多,例如:大小、安全更新推送等。
然而,如果你强烈地认为它们应该在一起,你可以很容易地用这两个(一个golang服务器+一个节点应用)创建一个docker容器,并通过docker启动它们。您可以将入口点设置为supervisord守护进程,以便在运行容器时启动节点服务器和golang服务器。
如果您计划通过kubernetes进行部署,您可以创建两个单独的pod容器(一个用于golang服务器,另一个用于节点服务器),但也可以将它们作为docker一起部署。
发布于 2017-03-21 03:46:33
有多个项目可以将二进制文件和/或文件系统数据嵌入到Go应用程序中。
查看项目‘vfsgen’的‘Alternative’部分:
https://stackoverflow.com/questions/42902815
复制相似问题