![按需启动 docker 化网站](https://linux22.com/image/110257/%E6%8C%89%E9%9C%80%E5%90%AF%E5%8A%A8%20docker%20%E5%8C%96%E7%BD%91%E7%AB%99.png)
我的服务器资源有限,但我想托管 50 个不同版本的产品。我有非常复杂且不幸的是有缺陷的产品,我希望每个版本都可以访问。如果报告任何错误,我们将能够调查并确定此问题首次发生的确切时间。
但由于每个网站都有 5 GB 的数据和 1 GB 的数据库,因此不可能让所有网站始终保持打开状态。我们的服务器出现 mysql 错误,并且服务器由于内存溢出而没有响应。
我想知道是否有办法让这 50 个不同的网站默认处于禁用状态。如果有人尝试访问 version-5-1.ourdomain.com,则会显示等待屏幕并在启动时重定向。
如果超过 30 分钟没有访问某个网站,请将其关闭并释放资源。
答案1
可能有更好的方法,但您应该能够在主机上使用反向代理并结合 systemd 套接字激活。当请求进入套接字时,systemd 可以启动容器并转发请求(它将阻塞,直到容器启动并接收请求),然后使用某些东西监视日志文件,当访问中没有显示任何内容时记录例如 5 分钟,然后停止容器。
答案2
我遇到了同样的问题(想要按需启动 Web 服务器......没有 50(!)不同的副本在同一主机上运行)。现有的答案提供了一个完全正确的解决方案,但仍然需要一些跑腿工作来设置它,而且我还想要一些可以在容器本机环境中轻松部署的东西,这在 systemd 中效果不佳。
为此,我创建了以下项目,现在正在生产中运行:https://github.com/radian-software/sleeping-beauty
它并不完美,但可能适合您的用例,或者可能会进行调整以适应。