如何使用docker将hugo博客环境工程化

1,401 阅读2分钟

痛点

个人比较喜欢用hugo来写博客,因为Hugo用起来比较方便,生成文章速度快,但是它也有痛点,就是第一次使用或者在一个新的机器上使用,又要下载安装,又要设置环境变量,往往以上操作直接就给劝退了,更别提以后版本升级等维护操作了。

一开始我在想要是有个东西能让我在不同环境下,快速运行一个hugo环境就好了,这样就能节省很多时间用来搞模版优化还有省出来很多写作时间。

用来解决这个痛点,我们用docker将这个问题工程化不就把问题解决了么

#聊聊工程化Docker#

创建Dockerfile

我们创建一个Dockerfile 将我们需要的hugo运行环境全部写好,这样我们通过这个文件构建出的docker 镜像在任何🈶️安装docker的OS环境下不就能直接跑起来了么。

👇下面让我们看下如何构建这个文件

使用一个基本镜像 base image

这里使用debian 12 slim版本

Dockerfile:

FROM debian:12.0-slim

安装hugo

FROM debian:12.0-slim

RUN apt-get update \
    && apt-get install -y hugo \
    && rm -rf /var/lib/apt/lists/*

暴露http端口

本地运行默认端口是1313,这里直接就直接用它了

FROM debian:12.0-slim

RUN apt-get update \
    && apt-get install -y hugo \
    && rm -rf /var/lib/apt/lists/*

EXPOSE 1313/tcp

entrypoint

搞一个简单的entrypoint防止docker 容器运行后退出

FROM debian:12.0-slim

RUN apt-get update \
    && apt-get install -y hugo \
    && rm -rf /var/lib/apt/lists/*
    
EXPOSE 1313/tcp

ENTRYPOINT ["tail", "-f", "/dev/null"]

这里只是提供一个思路,可以根据自己的需求对这个基本的dockerfile进行优化

构建docker hugo工具镜像

命令行模式下在Dockerfile对应的文件夹⬇️执行 :


docker build -t hugotools:1.0 .

执行完将通过我们的Dockerfile来构建一个hugotools 1.0版本的镜像

运行hugotools镜像

将hugotools镜像实例化,获得一个运行容器


docker run --name hugotool --rm -p 127.0.0.1:1313:1313 -v [your workspace location]:/app hugotools:1.0

进入hugotool容器内

使用docker ps 获取到hugotool容器的🆔


docker ps

进入容器内

docker exec -it [your container id] /bin/bash

这里我们直接进入运行中的容器内,出现bash命令行

运行hugo server


cd /app

hugo server --bind=0.0.0.0

hugo server 命令执行后, hugo server 将运行起来,http://localhost:1313 🔗将在日志🀄️显示,直接鼠标🖱️单击链接,在打开的浏览器🀄️,将看到在本地发布的博客网站。