gpt4 book ai didi

docker - 从一个容器执行代码到另一个容器(即,从API容器在工作容器上执行脚本)

转载 作者:行者123 更新时间:2023-12-02 19:05:09 28 4
gpt4 key购买 nike

我有一个由四个容器组成的docker-compose,所有这些容器执行一个功能:

Nginx代理,将UI和API请求转发到相应的容器(节点容器, flask 容器),如下图所示。

还有一个单独的容器,该容器执行长时间运行的python脚本,并且独立于其他容器运行。我现在想通过API创建在“长期运行的脚本”(LRS)容器中执行脚本的功能:

做这个的最好方式是什么?

我看过其他一些与此类似的问题,但是提出的问题比他们回答的要多。我看到的建议包括:

  • 将docker.sock传递到API容器中;从API容器执行,执行到LRS并执行预期的脚本
  • 这不是会造成严重的安全漏洞吗?
  • 这是否要求将docker安装在API容器上才能执行,这违反了docker的关注点分离原则?
  • LRS容器上的
  • HTTP侦听器,侦听来自API的命令,以便在LRS上执行脚本
  • 再次,这是否不违反关注点分离,因为我现在基本上需要在LRS容器中使用轻量级的API来侦听主体API的操作?

  • 这些解决方案似乎都不理想。我想念什么吗?如何实现预期的功能?

    最佳答案

    通常,运行长时间运行的脚本的解决方案是pub-sub模型。您的API会将消息放入执行消息队列中。 worker实例将订阅该队列,并在出现消息时执行您长时间运行的脚本/ query / etc。执行完成后,消息将返回不同的队列,或者结果将放置在预定位置(URL)。

    这有两个优点:

  • 两种解决方案彼此有效隔离
  • 如果需要更多容量,可以通过添加其他工作程序来扩展LRS(工作程序)解决方案。
  • (如果LRS实例关闭),API将不依赖于它的启动。实例可用时,工作将排队。
  • 关于docker - 从一个容器执行代码到另一个容器(即,从API容器在工作容器上执行脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188020/

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