Web applications 码头工人或流浪汉是安全的解决方案吗;一揽子计划;网络应用程序?

Web applications 码头工人或流浪汉是安全的解决方案吗;一揽子计划;网络应用程序?,web-applications,docker,vagrant,Web Applications,Docker,Vagrant,我在一家既不做网络开发也不做系统管理的公司里,在一个网络应用程序上实习此应用程序位于备份服务器上(用作时间机器驱动器的Mac Mini),我在那里安装了MEAN stack和其他一些需要的工具 由于该公司不太懂技术,可能有朝一日会弄乱软件,我想知道是否可以将应用程序“打包”到Docker或Vagrant容器中,在设置了所有工具和配置的情况下,用一个命令重新启动它,同时,在应用程序应该安装在另一台机器上的情况下,使其可移植 TL;DR我可以将web应用程序及其堆栈打包到Docker/Vagran

我在一家既不做网络开发也不做系统管理的公司里,在一个网络应用程序上实习此应用程序位于备份服务器上(用作时间机器驱动器的Mac Mini),我在那里安装了MEAN stack和其他一些需要的工具

由于该公司不太懂技术,可能有朝一日会弄乱软件,我想知道是否可以将应用程序“打包”到Docker或Vagrant容器中,在设置了所有工具和配置的情况下,用一个命令重新启动它,同时,在应用程序应该安装在另一台机器上的情况下,使其可移植


TL;DR我可以将web应用程序及其堆栈打包到Docker/Vagrant容器中,使其易于安装和运行吗?

检查您可以设置它,以便所有内容都在一个命令中运行


docker-compose-up

简言之,至少对于流浪汉来说,答案是否定的。对于docker,也许是,但是

然而,您真正想要的似乎是一个资源调配工具——Docker和Vagrant都不是。你的需求听起来更像是厨师、食盐、木偶等。这些都是对Docker和Vagrant的补充——其中一个加上一个Docker容器,因为最终的结果就像你场景中的教科书示例

我是否可以将web应用程序及其堆栈打包到Docker/Vagrant容器中,使其易于安装和运行

是的,他们两个都有

流浪汉 首先,Vagrant不是我最喜欢的解决方案,但您可以这样做:您可以编写一个Vagrant文件来提取您想要的Linux映像,安装您的东西(例如Tomcat或NGINX服务器),配置所有内容(文件夹结构、打开的端口),并将最终应用程序复制到映像(例如WAR文件)。现在,您在VM映像中获得了所需的一切,您可以共享此映像,使您的公司能够运行您的应用程序

赞成的意见
  • 一切都在一个图像上
  • 如果映像运行并且您的公司出现问题,他们可以轻松地连接到VM(通过SSH)并修复它
欺骗
  • 图像可能非常大(许多GB)
  • 如果您使用Vagrant,您通常会将Vagrant文件共享给其他人,而不是它构建的VM映像(但这不是您想要的)
和码头工人 使用Docker,您可以将应用程序及其依赖项打包到映像中。请注意,您需要将每个依赖项(例如数据库)打包到一个单独的映像中,而不是全部打包到一个映像中。图像将由DockerFile生成,您可以将其上载到Docker注册表或将其作为文件导出到磁盘。您可以共享它们(或者通过共享文件,或者更可取的是通过从Docker注册表中提取它们),然后编写一个脚本,将它们一起运行以启动应用程序

赞成的意见
  • 与VM映像相比,更小的映像(参见上文)
  • Docker就是为了这个目的而设计的(将准备好运行的图像共享给其他人)
欺骗
  • 如果你在应用程序运行时遇到问题,可能更难修复,因为你需要构建一个新的映像
依我拙见 将所有内容打包到Docker图像中。编写一个脚本将所有图像一起运行(您可以只编写一些shell脚本,但也可以使用一些奇特的Puppet、Ansible和Chef安装)。就这样。您的堆栈可移植且易于启动

只是旁注
如果你的公司真的对科技产品知之甚少,那就要小心了。每一个新工具(即使它和Docker一样有用)对他们来说都是值得学习和维护的新东西。

你应该阅读感谢托马斯。当我在OSX上尝试Docker时,它在虚拟机中启动了
boot2docker
,我告诉自己在虚拟机上运行虚拟机会有点重,那么为什么不在普通的虚拟机上运行并安装应用程序呢?最后我做了这样一件事:VirtualBox上的无头Debian8,如果出现问题,它会启动boot上的所有东西。只需点击一下,虚拟机就启动了,应用程序也准备好了。它不需要便携,只需打包,并且易于运行。