如何使用独立版本库中的Docker开发应用程序

该堆栈由几个应用程序/微服务需要连接在本地开发运行,每个都在自己的存储库

例如前端,db,api

如果每个应用程序都有自己的Dockerfile,而docker-compose.yml列出了运行该应用程序所需的服务,那么对于整个堆栈的开发,build议采用哪些实践?

这正是我们在工作中所做的。

在Apache(prod)或节点(dev)上运行前端angular度所有的bog标准请求都是正常处理的,所有对api容器的请求在url中都有/ imanapicall,并根据url包含/ imanapicall的事实代理到api容器这是标准的做法。 铁容器是无国籍的。

我们有运行API的节点,它是无状态的,只需要从数据库中请求数据并将其发送回前端

我们有节点运行restify但expression更受欢迎

然后大多数人使用MongoDB,但我们使用一些奇怪的数据库的东西

重要的是要暴露容器之间的端口,确保防火墙不是一个痛苦。 对于开发的目的,你可能想要展示所有容器的端口以便托pipe,所以你可以更容易地debugging,比如直接点击一个快速端点来确保它给我提供了我想要的

Ps无状态对于支持扩展非常重要,所以我可以引入一个负载平衡器,而不用担心它命中的服务器。 只有db容器持有状态

进一步对你的评论…

每一层(db,api等)都有自己的git仓库。 每个git仓库都有一个Jenkins自动完成的工作(推回到仓库),并且成功推出了一个新的Docker镜像。

然后,我们有另一个负责将它们放在一起的git回购。 这个回购基本上是由一个docker撰写文件来拉动所有相关的容器并运行它们。 任务完成。

这给出了一个简单的概述。 如果您有任何更详细的问题随时问。

细节…

在db层的开发过程中不会出现任何困难。

但是,在api层的开发过程中,例如,此层依赖于数据库层,因此在开发api层时需要运行db层的docker容器。 也可以用这个来构成。

在开发前端层时,这依赖于db和api层。 在开发过程中最好使用一个通用的解决scheme,允许所有容器以最新的docker镜像状态站起来,而忽略那些与当前目的无关的容器。

例如,

在开发前端时,从最新的图像中提取所有3个容器。 忽略前端容器,照常使用前端开发环境。 将前端开发环境指向api容器。 希望这是有道理的。

忽略与您正在处理的层的开发无关的容器意味着您可以在为每个层提供Docker容器而不需要每个层的特定解决scheme时使用通用方法。

希望这是有道理的,不是最简单的解释!