更好地处理Docker映像

时间:2018-08-11 12:51:17

标签: docker

我是Docker的新手,所以我想知道使用它的更好方法是什么。我有一个需要三个组件才能工作的项目:

  • Jboss服务器应用程序

  • PostgreSQL

  • Spring Boot应用程序

因此,基于此,我的问题是:

1)对于上述每个组件,我应该有一个docker映像吗?如果是,为什么不将所有内容放在一起?我对docker的想法是简化应用程序的部署,因此将它们放在一起将使在其他环境中轻松安装此应用程序变得容易,对吧?

2)如果是(每个组件一个docker映像),spring boot只是一个“ Java -jar”命令,真的有必要添加docker映像吗?

3)在PostgreSQL的情况下,我应该具有包含所有数据库结构和数据的图像,还是只有原始PostgreSQL而不包含任何内容?

1 个答案:

答案 0 :(得分:2)

回答您的问题

  

1)我应该为上述每个组件使用一个docker映像吗?   如果是,为什么不将所有内容放在一起?我对docker的想法是简化   应用程序的部署,因此将它们放在一起将使   在另一个环境中安装此应用,对吗?

最好将它们放在单独的组件上,以便:

  • 您可以隔离案例(将帮助您进行调试)
  • 在k8s或docker-swarm上运行时,您可以选择性地(水平)缩放特定的无状态组件
  • 您可以为每个组件设置硬件限制(RAM,CPU等)
  • 您有不同的基本图片(对于优化可能很有用)
  • 您要独立构建和测试您的组件

列表继续

  

2)如果是(每个组件一个docker映像),则spring boot只是一个   “ Java -jar”命令真的有必要添加docker镜像吗?

请检查上面提到的列表(为什么最好分开)是否适合您的用例。请注意,将其添加到现有组件中会影响您的扩展策略 < / p>

示例-使用Spring Boot应用程序运行3个 jboss组件实例,您将为两个实例都生成3个您可能不想要的实例。

  

3)如果是PostgreSQL,我应该在所有数据库中都包含该映像吗?   结构和数据,或者只是没有任何内容的原始PostgreSQL?

我建议您将结构和数据安装到主机卷,这样在重新启动映像时不会丢失它。 see example,所以我建议您使用香草Postgres

我希望这会对您有所帮助