发布于 2026-01-06 0 阅读
0

使用 Docker 安装 HUGO

使用 Docker 安装 HUGO

在本文中,我将介绍如何使用 Docker 镜像来设置 HUGO,而无需在您的机器上安装本地版本的 HUGO。

在选择特定的 Docker 镜像时,请注意 HUGO 有两个版本:标准版和扩展版。扩展版支持 Sass 和 WebP 图像编码,HUGO 团队建议使用扩展版,本文也将采用扩展版。

我们将使用此仓库中的 Docker 镜像:https://hub.docker.com/r/klakegg/hugoext 。所有名称中包含“hugo”的 Docker 镜像都使用 HUGO 的扩展版本。我们将使用基于 Alpine 的镜像。

Docker 镜像包含 HUGO CLI,并将该hugo命令作为入口点 (ENTRYPOINT) 公开。运行容器并指定 hugo 命令的参数,即可获得与本地安装 HUGO 时相同的所有选项。

例如,以下命令将显示 HUGO 在本地安装时的版本:

hugo version
Enter fullscreen mode Exit fullscreen mode

同样的命令也可以在 Docker 容器中运行:

docker run --rm klakegg/hugo:0.107.0-ext-alpine version
Enter fullscreen mode Exit fullscreen mode

--rm 标志表示容器在完成后立即被释放。

新网站

以下命令将生成一个名为“test”的新HUGO站点:

docker run --rm -v $(pwd):/src klakegg/hugo:0.107.0-ext-alpine new site test --format yaml
Enter fullscreen mode Exit fullscreen mode

将创建一个名为“test”的新文件夹,其中包含生成的站点。-v 标志用于从当前工作目录 (pwd) 创建卷。--format yaml末尾的参数启用 YAML 配置文件而不是 TOML 配置文件。

要访问该网站,首先需要导航到网站的根目录:

cd test
Enter fullscreen mode Exit fullscreen mode

运行以下命令来启动新站点。(请注意添加了包含端口号的 -p 标志):

docker run --rm -p 1313:1313 -v $(pwd):/src klakegg/hugo:0.107.0-ext-alpine server
Enter fullscreen mode Exit fullscreen mode

该网站采用内存构建,并将托管在http://localhost:1313

访问该网址时,您会看到“页面未找到”的提示。让我们通过将 index.html 文件添加到 layouts 文件夹来创建一个初始页面。

layouts/index.html

<!doctype html> 
<html lang="en"> 
  <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>HUGO & Docker demo</title>  
  </head> 
  <body> 
    <h1>Hello, world!!!</h1> 
  </body> 
</html>
Enter fullscreen mode Exit fullscreen mode

如果您使用的是 Windows 系统,可能需要重启服务器才能看到更改(稍后我会提供一个使用 docker-compose 的解决方案)。

docker run --rm -p 1313:1313 -v $(pwd):/src klakegg/hugo:0.107.0-ext-alpine server
Enter fullscreen mode Exit fullscreen mode

现在,当您访问http://localhost:1313时,您将看到“Hello World”

DOCKER-COMPOSE

现在,我们不必每次都运行服务器Docker run,而是可以将服务器添加到 docker-compose.yml 文件中,然后使用以下命令启动服务器docker compose up。文件更改会自动生效:

docker-compose.yml

services:
  server:
      image: klakegg/hugo:0.107.0-ext-alpine
      command: server -D --poll 700ms
      volumes:
        - ".:/src"
      ports:
        - "1313:1313"
Enter fullscreen mode Exit fullscreen mode

`-D` 参数确保草稿也被构建和发布,这通常是开发过程中需要的功能。
poll标志是为 Windows 用户添加的。如果 Hugo CLI 运行在 Windows 主机上的 Linux 虚拟机共享目录中,服务器将无法检测到主机环境中的文件更改。轮询机制可以解决 Windows 上的这个问题。更多信息请点击此处

通过 package.json 公开 Hugo CLI

现在我们有了便捷的网站托管方式,接下来需要一种更好的方法来访问 HUGO CLI,而不是每次都调用 `Docker run`。为此,我们将创建一个 `package.json` 文件,并使用其中的 `scribs` 部分来简化 HUGO CLI 的访问。

创建 package.json 文件:

npm init -y
Enter fullscreen mode Exit fullscreen mode

通过在脚本部分添加以下命令来公开 HUGO CLI:

"scripts": { 
    "hugo": "cross-env-shell docker run --rm -v $INIT_CWD:/src klakegg/hugo:0.107.0-ext-alpine" 
}
Enter fullscreen mode Exit fullscreen mode

'cross-env-shell' 是读取环境变量(例如 $INIT_CWD)以获取当前工作目录的平台无关方式所必需的。

npm i cross-env -D
Enter fullscreen mode Exit fullscreen mode

现在你可以这样调用 HUGO CLI:

npm run hugo -- --help
Enter fullscreen mode Exit fullscreen mode

CLI 参数放在句点之后--

要构建网站,您可以使用不带参数的 hugo 命令。

npm run hugo
Enter fullscreen mode Exit fullscreen mode

之前使用的命令server会在内存中构建网站。而 build 命令会构建网站并将输出存储在 ./public 文件夹中。

结论

现在你无需在电脑上安装即可开始使用 HUGO。希望这对大家有所帮助,我花了几个小时才弄明白,尤其是在 Windows 系统上让它运行起来。

文章来源:https://dev.to/robinvanderknaap/setup-hugo-using-docker-43pm