使用docker部署静态网站是否有意义?

时间:2018-06-03 13:51:50

标签: docker

我已经创建了一个群集,我可以使用docker顺利部署我的Web应用程序。它真的很有趣,现在我正在考虑将静态网站部署到集群中。

我应该这样做吗?或者是这个"太多"对于简单的静态网站?

4 个答案:

答案 0 :(得分:1)

理论上,使用Docker总是有意义的,好像许多用户使用您的应用程序(网站),Web服务器在某些时候将无法以有效的方式提供所有这些请求。因此,使用群集(Docker swarm)将帮助您避免这种情况,因为Docker将平衡所有群集节点上的负载。此外,你说 - 使用Docker是很好的,因为它将组织你的生产环境(我是Docker的忠实粉丝,它如何组织和隔离环境)。

实际上,对于静态网站,Web服务器上的负载比动态网站轻得多(因为您没有数据库查询,大型过滤操作,大型迭代,需要注意很多逻辑)因此,如果你的网站每分钟不会被访问数百万次,那就没有意义了,因为这将是一个超过一个额外的开销。

答案 1 :(得分:0)

想知道码头工人的真实目的,我会说不。

静态网站不需要docker实例的大部分功能。当需要服务器端计算(例如:执行服务器端应用程序逻辑)并根据负载扩展到多个实例时,Docker理想地可以帮助您。

静态站点不需要太多计算功能,因为没有服务器端代码,内容在客户端浏览器中呈现。您只需要任何Web服务器进行托管。

答案 2 :(得分:0)

只要您使用占用空间小且开销低的服务器/映像,就可以在 Docker 容器内部署静态网站。部署运行 nginx 的 300MB+ Ubuntu 映像不符合该描述。

我建议将您的文件与一个很小的静态文件服务器(如 thttpd)捆绑在一个非常小的图像上 - 最好是 SCRATCH 或 Alpine Linux。

我写了一篇关于此主题的更广泛的帖子 here

答案 3 :(得分:0)

如果你使用 alpine+nginx 镜像打包你的静态站点,它可能很合适。

例如,在我目前的情况下,我有 nginx 服务于两个简单的静态站点:

  1. 使用 302 重定向捕获所有站点,使我的博客 SEO 友好
  2. 截图存储

这是我使用的 docker swarm 配置:

public partial class Form1 : Form
{
    public string textBoxContent = "B";
    public string duplicating = "";

    public Form1()
    {
        InitializeComponent();
        textBox1.Text = textBoxContent;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        duplicating += "A";
        textBox1.Text = textBoxContent + duplicating;
    }
}

在 nginx 前面我使用 https://doc.traefik.io/traefik/v1.7/user-guide/swarm-mode/

因此,我可以以我更好理解的方式制作 seo 友好配置 - 通过 nginx 配置,而不是使用 traefik 路由,我也可以让静态站点和屏幕截图更好地工作。

但是,在这里扩展 nginx 可能是无用的想法 - 因为作为静态服务器,它是轻量级的,并且没有任何破坏 - 所以没有理由在这里启动 2 个 nginx 实例。