使用 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
同样的命令也可以在 Docker 容器中运行:
docker run --rm klakegg/hugo:0.107.0-ext-alpine version
--rm 标志表示容器在完成后立即被释放。
新网站
以下命令将生成一个名为“test”的新HUGO站点:
docker run --rm -v $(pwd):/src klakegg/hugo:0.107.0-ext-alpine new site test --format yaml
将创建一个名为“test”的新文件夹,其中包含生成的站点。-v 标志用于从当前工作目录 (pwd) 创建卷。--format yaml末尾的参数启用 YAML 配置文件而不是 TOML 配置文件。
要访问该网站,首先需要导航到网站的根目录:
cd test
运行以下命令来启动新站点。(请注意添加了包含端口号的 -p 标志):
docker run --rm -p 1313:1313 -v $(pwd):/src klakegg/hugo:0.107.0-ext-alpine server
该网站采用内存构建,并将托管在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>
如果您使用的是 Windows 系统,可能需要重启服务器才能看到更改(稍后我会提供一个使用 docker-compose 的解决方案)。
docker run --rm -p 1313:1313 -v $(pwd):/src klakegg/hugo:0.107.0-ext-alpine server
现在,当您访问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"
`-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
通过在脚本部分添加以下命令来公开 HUGO CLI:
"scripts": {
"hugo": "cross-env-shell docker run --rm -v $INIT_CWD:/src klakegg/hugo:0.107.0-ext-alpine"
}
'cross-env-shell' 是读取环境变量(例如 $INIT_CWD)以获取当前工作目录的平台无关方式所必需的。
npm i cross-env -D
现在你可以这样调用 HUGO CLI:
npm run hugo -- --help
CLI 参数放在句点之后--。
要构建网站,您可以使用不带参数的 hugo 命令。
npm run hugo
之前使用的命令server会在内存中构建网站。而 build 命令会构建网站并将输出存储在 ./public 文件夹中。
结论
现在你无需在电脑上安装即可开始使用 HUGO。希望这对大家有所帮助,我花了几个小时才弄明白,尤其是在 Windows 系统上让它运行起来。
文章来源:https://dev.to/robinvanderknaap/setup-hugo-using-docker-43pm