gpt4 book ai didi

docker - 如何使用 Docker 开发位于不同存储库中的应用程序

转载 作者:行者123 更新时间:2023-12-05 01:29:24 25 4
gpt4 key购买 nike

堆栈由一些应用程序/微服务组成,这些应用程序/微服务需要连接才能在开发中本地运行,并且每个应用程序/微服务都在自己的存储库中

例如前端、数据库、API

如果每个应用程序都有自己的 Dockerfile 和 docker-compose.yml,其中列出了运行该应用程序所需的服务,那么建议采用哪些做法来开发整个堆栈?

最佳答案

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

在 Apache (prod) 或 node (dev) 上运行的前端角度所有沼泽标准请求都正常处理,所有对 api 容器的请求都在 url 中包含/imanapicall,并根据 url 包含/imanapicall 的事实代理到 api 容器这是标准做法。 Fe容器是无状态的。

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

我们有节点运行 restify 但表达更流行

然后大多数人使用 mongodb 但我们使用一些奇怪的数据库

重要的是在容器之间公开端口,确保防火墙不会成为问题。出于开发目的,您可能还想将所有容器的端口公开给主机,这样您就可以更轻松地进行调试,例如直接点击一个快速端点以确保它能提供我想要的东西

Ps 无状态对于支持扩展很重要,因此我可以引入一个负载均衡器而不用担心它会访问哪台服务器。只有数据库容器保存状态

根据您的评论...

每一层(db、api 等)都有自己的 git 存储库。每个 git 存储库都有一个自动化的 Jenkins 作业,它会执行构建(推送到存储库)并在成功时推送一个新的 docker 镜像。

然后我们有另一个 git repo 负责将它们整合在一起。这个 repo 基本上由一个 docker compose 文件组成,用于拉取所有相关容器并运行它们。工作完成。

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

细节...

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

但是,例如,在开发 api 层期间,该层依赖于 db 层,因此在开发 api 层时需要运行 db 层的 docker 容器。也可以为此使用 compose。

在开发前端层时,这依赖于 db 和 api 层。最好在开发期间使用通用解决方案,允许所有容器以其最新的 docker 镜像状态启动,并忽略那些与当前目的无关的容器。

例如,

开发前端时,从最新的图像中调出所有 3 个容器。忽略前端容器并像往常一样使用您的前端开发环境。将前端开发环境指向api容器。希望这是有道理的。

忽略与您正在处理的层的开发无关的容器意味着您可以在为所有层添加 docker 容器时使用通用方法,而无需为每个层制定特定的解决方案。

希望这是有道理的,而不是最容易解释的事情!

关于docker - 如何使用 Docker 开发位于不同存储库中的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35690187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com