Docker 如何为团队开发和部署设置liferay?

Docker 如何为团队开发和部署设置liferay?,docker,continuous-integration,liferay,continuous-deployment,liferay-7,Docker,Continuous Integration,Liferay,Continuous Deployment,Liferay 7,我正在研究如何使用版本控制和自动部署设置liferay项目。我在eclipse中有一个工作的本地开发环境,但据我所知,在liferay中设置门户部分是在tomcat上运行的liferay门户实例,然后是我的自定义模块项目以进行自定义。我基本上希望所有这些都放在一个git存储库中,然后可以 1:由任何开发人员克隆以设置其本地开发环境 2:由eg.jenkins构建并部署到eg.AWS中 我已经看过了liferay文档中关于为门户创建docker容器的内容,但是我不完全理解如何处理门户内容之类的事情

我正在研究如何使用版本控制和自动部署设置liferay项目。我在eclipse中有一个工作的本地开发环境,但据我所知,在liferay中设置门户部分是在tomcat上运行的liferay门户实例,然后是我的自定义模块项目以进行自定义。我基本上希望所有这些都放在一个git存储库中,然后可以

1:由任何开发人员克隆以设置其本地开发环境

2:由eg.jenkins构建并部署到eg.AWS中

我已经看过了liferay文档中关于为门户创建docker容器的内容,但是我不完全理解如何处理门户内容之类的事情


如果有人能指导我如何建立这样的环境,我将非常感激。

代码和内容是不同的。为每个开发人员设置一个本地Liferay实例。通过任何版本控制(您提到git)共享/版本代码

这样,每个开发人员都可以处理自己的项目,设置断点,并创建不会干扰其他开发人员的内容

设置一个单独的集成测试环境,该环境以独占方式通过您的CI服务器获取其代码,而不会手动接触

您的生产(或预生产)数据库可能有完全不同的内容:如果开发人员能够快速创建一些“Lorem Ipsum”帖子和页面,您不希望它们逃逸到生产中。因此,内容不会从开发转移到生产。只有代码是这样移动的

如果希望开发人员在类似于生产的环境中工作,可以将生产内容(数据库)恢复到开发机器上。但请注意,这是有风险的:数据库还包含用户帐户,您可能会从开发机器触发更新通知邮件,这是您无论如何都要避免的。另外,通过这种方式,您可以让开发人员访问登录数据(即使它是散列的),这可能会被滥用。行业法规甚至可能明确禁止在开发环境中使用生产数据

一般来说:每个系统都有自己的数据库(至少有自己的模式)、文档存储和索引服务器。每个开发人员都有自己的门户JVM运行。其他环境(集成测试、负载测试、创作、生产)也是独立的环境。不,你不需要所有的时间

我不能将这句话归因于此(米伦可以看到他的评论),但它在这里:

每个人都有一个测试环境。有些人幸运地运行了完全不同的生产环境


我是幸运儿。如果每个人都有自己完全分离的环境,那么就没有人会踩到对方的鞋子。无论如何,您都需要集成测试(带有CI输出)。

代码和内容是不同的。为每个开发人员设置一个本地Liferay实例。通过任何版本控制(您提到git)共享/版本代码

这样,每个开发人员都可以处理自己的项目,设置断点,并创建不会干扰其他开发人员的内容

设置一个单独的集成测试环境,该环境以独占方式通过您的CI服务器获取其代码,而不会手动接触

您的生产(或预生产)数据库可能有完全不同的内容:如果开发人员能够快速创建一些“Lorem Ipsum”帖子和页面,您不希望它们逃逸到生产中。因此,内容不会从开发转移到生产。只有代码是这样移动的

如果希望开发人员在类似于生产的环境中工作,可以将生产内容(数据库)恢复到开发机器上。但请注意,这是有风险的:数据库还包含用户帐户,您可能会从开发机器触发更新通知邮件,这是您无论如何都要避免的。另外,通过这种方式,您可以让开发人员访问登录数据(即使它是散列的),这可能会被滥用。行业法规甚至可能明确禁止在开发环境中使用生产数据

一般来说:每个系统都有自己的数据库(至少有自己的模式)、文档存储和索引服务器。每个开发人员都有自己的门户JVM运行。其他环境(集成测试、负载测试、创作、生产)也是独立的环境。不,你不需要所有的时间

我不能将这句话归因于此(米伦可以看到他的评论),但它在这里:

每个人都有一个测试环境。有些人幸运地运行了完全不同的生产环境


我是幸运儿。如果每个人都有自己完全分离的环境,那么就没有人会踩到对方的鞋子。无论如何,您都需要集成测试(带有CI输出)。

引用来源:谢谢,米伦。我真的应该保存这个属性——已经使用过好几次了。现在我知道到哪里去找了:)谢谢你的回答。我关于内容的问题更多的是关于docker图像的更新。如果我有一个运行liferay图像的docker容器,并且我想对其进行更新,那么内容会发生什么变化?所有这些都保存在数据库中了吗?文件系统根本没有使用吗?您想要持久化的所有内容(例如数据库、文档库的文件存储(如果您配置了默认值)以及elasticsearch的索引存储)都需要作为外部卷或外部服务装载。是的,一旦重新启动容器,docker映像中包含的所有内容(而不是卷中的内容)都将恢复为默认值。您可能只想随意地处理DB、文件存储之类的事情,而不是每次重新启动时—所以将它们放在Docker映像的外部。还有那些