首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头化一个经典的基于数据库的webapp -单一或多个容器?

码头化一个经典的基于数据库的webapp -单一或多个容器?
EN

Software Engineering用户
提问于 2014-07-28 14:49:52
回答 2查看 3.2K关注 0票数 8

我有一个经典的Java webapp应用程序。它由数据库(PostgreSQL)、servlet容器( Tomcat )和我的代码(作为*.war文件部署在Tomcat上)组成。

我想使用Docker打包/部署它(目前主要用于测试),但我不确定什么是“映射”它的最佳方式。

我最初的想法是让一个盒子里的应用程序定义一个容器,里面有Java、Postgres和Tomcat,只公开了http端口。

对Docker文档的进一步阅读显示,虽然可能(安装和运行supervisord作为一个前台进程,但它同时启动Postgres和Tomcat)可能不是预期的用途。按照教程的精神,我可能应该为Postgres创建一个容器,为Tomcat创建另一个容器,并创建一个数据容器来保存应用程序代码(我的*.war)和数据库文件。这意味着3+容器( db文件和*.war应该共享相同的数据容器吗?)

这里常见的做法是什么?

由于我以前没有码头经验,我可以期望从每一种方法的陷阱?

还有别的方法吗我错过了?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2014-08-06 20:25:55

我所看到的建议是拥有一个完整的容器:码头工人的误解

误解:你应该每个码头集装箱只有一个过程!重要的是要理解,如果您将Docker视为基于角色的虚拟机而不是可部署的单一用途进程,那么管理Docker就简单得多。例如,您将构建一个“app”容器,它非常类似于您将创建的与init、cron、ssh等进程一起创建的“app”VM。不要试图用一个单独的容器来捕获它自己的容器中的每个进程,这些容器用于ssh、cron、app、web服务器等。

思考这个问题的一种方法是问问自己,你是否需要在没有其他人的情况下运行一片。好吧,也许您希望DB在没有应用服务器的情况下运行,但是多久运行一次呢?

票数 7
EN

Software Engineering用户

发布于 2014-11-15 13:18:32

无论是否Docker,我认为不要同时将webapp和db服务器放在同一个容器中。最初,它可能会工作,但如果/随着应用程序的增长,您将希望扩展前端和数据库。从一开始就有不同的容器会使他们更容易移动,复制他们,等等。

票数 9
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/251445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档