【发布时间】:2019-01-15 06:22:25
【问题描述】:
我有一个由四个容器组成的 docker-compose,所有容器都执行一个功能:
一个 nginx 代理,将 UI 和 API 请求转发到相应的容器(节点容器、flask 容器),如下图所示。
还有一个单独的容器,它执行长时间运行的 python 脚本并且独立于其他容器工作。我现在想通过 API 创建在“长期运行脚本”(LRS)容器中执行脚本的能力:
最好的方法是什么?
我看到了一些与此有些相似的其他问题,但提出的问题比他们回答的要多。我看到的建议包括:
- 将 docker.sock 传递到 API 容器中;从 API 容器中,执行到 LRS 并执行预期的脚本
- 这不会造成严重的安全漏洞吗?
- 这是否需要在API容器上安装docker才能执行,违反了docker的关注点分离原则?
- LRS 容器上的 HTTP 侦听器,侦听来自 API 的命令,以便在 LRS 上执行脚本
- 再说一次,这是否违反了关注点分离,因为我现在基本上需要 LRS 容器中的轻量级 API 来监听来自主要 API 的操作?
这些解决方案似乎都不理想。我错过了什么吗?如何实现预期功能?
【问题讨论】:
标签: docker architecture docker-compose software-design