将Hugo静态站点部署到新的AWS Lightsail Containers服务

2020-12-06 20:44:36

Hugo是基于简单性的博客平台。它的主要吸引力在于无需过多编排即可生成快速,静态的站点。如果您曾经想在云中运行容器化的应用程序而无需进行大量工作,那么Amazon提供了一个新的解决方案,即容器的Amazon Lightsail。在本教程中,我们将把这两种简单的技术结合在一起,向您展示一个简单有效的博客选项。

Hugo是一个简单,快速的博客平台。 AWS Lightsail是面向“小型企业”的云平台。您可以使用非常简单易用,价格低廉的界面来启动虚拟机,软件环境以及云中的容器。您可以构建一个简单的博客,为其创建一个容器,然后通过几个步骤将其推送到云中。 Lightsail模型可确保您保持较低的成本,然后在您的博客变得非常受欢迎时扩大规模(希望如此)。

我们将建立一个博客并将其从头到尾推送到云中。

在本教程中,我们将创建一个Hugo网站。如果已经拥有一个,则可以跳过此步骤。

现在,我们将添加一个主题。我在这里选择“ Ghostwriter”。一旦添加,就需要将其写入config.toml。

现在,我们将其存储在此处以供以后使用(或如果您选择,则存储在您的容器中)。

现在我们要托管它。有很多著名的地方,例如Netflify(我在其中托管此博客),Vercel或AWS Amplify。但是,通过将其放入容器中,我们仍然可以获得低成本的静态托管,但也有很多其他机会。您可以在容器中使用的任何东西都可以与您的网站一起使用。

我们将把博客构建内容填充到容器映像中。 我们不知道我们的URL是什么,所以让我们修改config.toml: 通常,我不建议这样做,但是AWS Lightsail容器使用GUID创建URL。 如果您将域指向容器,则可以将域放在此处。 从klakegg / hugo作为hugoCOPY ./ / hugodirWORKDIR / hugodirRUN hugo --config ./config.toml#将静态文件复制到NginxFROM nginx:alpineCOPY --from = hugo / hugodir / public / usr / share / nginx / htmlWORKDIR / usr / 分享/ nginx / html 该文件正在做的是使用Klagegg的最小Docker映像来构建Hugo网站。 它会安装Hugo并为您构建网站。 在文件中,我们将所有文件复制到/ hugodir中,并使其成为我们的工作目录。 然后,我们从另一个映像中拉出以构建NGINX,并从Hugo复制公用文件夹并将其提供服务。 由于我要求它在端口8080上使用,因此请尝试一下。

太棒了! 现在我们有了一个不错的形象,让我们将其放在Docker Hub上。 将图像添加到Docker Hub很容易。 您只需标记图像,登录,然后将其推送到集线器即可。 登录到您的AWS控制台,然后选择Lightsail。 然后选择“容器”选项卡。 没有人会去这个博客,它是全新的。 所以我要选择一个Nano实例。 如果我的博客增长了,或者我需要更多的功能,那么可以在此处快速扩展它。 在这里,我将其命名为“ mysuperblog”。 然后,我将从Docker Hub指定映像,并打开端口80。(不用担心,连接将是SSL) 我将我的名字命名为“ jeremys-super-blog”。 它显示了您的费用摘要,然后单击“创建容器服务”。

不用担心,如果第一次无法使用,我必须尝试几次。

完成了!我的容器映像已部署到AWS上。周围都有击掌。

如果您不想使用Docker Hub怎么办?该步骤是可选的。您可以根据需要直接从本地计算机进行部署。

我们将返回包含Hugo安装和Dockerfile的文件夹,并运行以下命令:

多田现在就可以部署了。如果需要修改图像,请使用新标签构建新图像,然后再次运行push-container-image。

我使用AWS Lightsail服务已有一段时间了。 Lightsail背后的想法是为您的项目创建小的可负担空间。我将许多小型低流量Web服务器托管在Lightsail VM上,并且我喜欢该界面。因此,当我听到他们提供集装箱服务时,我不得不尝试一下。

如果您想要托管Hugo博客的另一个绝佳选择,请尝试一下。如果您拥有更大的网站,则可能会需要AWS Amplify或Netlify的某些功能,但是对于小型的一次性项目或简单的博客,每个月要花费7美元是很难的。通过将其托管在容器中,您可以扩展博客。您可以向其中添加Node或一些Web API,甚至向Hugo博客添加数据库服务。如果流量增加,则可以快速扩展流量。

总体而言,我对此印象深刻,不得不分享。 有问题或意见吗? 大吼大叫我! 了解如何像专业人士一样利用标准库! 我刚刚创建了新课程“ Go标准库”,请检查一下!