aboutsummaryrefslogtreecommitdiff
path: root/services/docker/blog
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-02-22 18:11:35 +0800
committerYuqian Yang <crupest@crupest.life>2025-02-23 01:36:11 +0800
commit1e9b2436eaffa4130f6a69c3a108f6feb9dd4ac8 (patch)
tree585b6124b0100371b4bd8a291c4a59fbb5fbf1fe /services/docker/blog
parenta931457d61b053682d5e89a0cfb411e43e5e21c7 (diff)
downloadcrupest-1e9b2436eaffa4130f6a69c3a108f6feb9dd4ac8.tar.gz
crupest-1e9b2436eaffa4130f6a69c3a108f6feb9dd4ac8.tar.bz2
crupest-1e9b2436eaffa4130f6a69c3a108f6feb9dd4ac8.zip
feat(services): refactor structure.
Diffstat (limited to 'services/docker/blog')
-rw-r--r--services/docker/blog/Dockerfile9
-rwxr-xr-xservices/docker/blog/daemon.bash19
-rwxr-xr-xservices/docker/blog/install-hugo.bash22
-rwxr-xr-xservices/docker/blog/update.bash30
4 files changed, 80 insertions, 0 deletions
diff --git a/services/docker/blog/Dockerfile b/services/docker/blog/Dockerfile
new file mode 100644
index 0000000..7414d4e
--- /dev/null
+++ b/services/docker/blog/Dockerfile
@@ -0,0 +1,9 @@
+FROM debian:latest
+ARG CRUPEST_BLOG_UPDATE_INTERVAL=1d
+COPY install-hugo.bash /install-hugo.bash
+RUN /install-hugo.bash && rm /install-hugo.bash
+ENV CRUPEST_BLOG_UPDATE_INTERVAL=${CRUPEST_BLOG_UPDATE_INTERVAL}
+COPY daemon.bash update.bash /scripts/
+VOLUME [ "/public" ]
+ENTRYPOINT ["tini", "--"]
+CMD [ "/scripts/daemon.bash" ]
diff --git a/services/docker/blog/daemon.bash b/services/docker/blog/daemon.bash
new file mode 100755
index 0000000..561a80a
--- /dev/null
+++ b/services/docker/blog/daemon.bash
@@ -0,0 +1,19 @@
+#! /usr/bin/env bash
+
+set -e
+
+# Check I'm root.
+if [[ $EUID -ne 0 ]]; then
+ echo "This script must be run as root" 1>&2
+ exit 1
+fi
+
+hugo version
+
+while true; do
+ /scripts/update.bash
+
+ # sleep for CRUPEST_AUTO_BACKUP_INTERVAL
+ echo "Sleep for $CRUPEST_BLOG_UPDATE_INTERVAL for next build..."
+ sleep "$CRUPEST_BLOG_UPDATE_INTERVAL"
+done
diff --git a/services/docker/blog/install-hugo.bash b/services/docker/blog/install-hugo.bash
new file mode 100755
index 0000000..a448138
--- /dev/null
+++ b/services/docker/blog/install-hugo.bash
@@ -0,0 +1,22 @@
+#! /usr/bin/env bash
+
+set -e
+
+apt-get update
+apt-get install -y tini locales curl git
+rm -rf /var/lib/apt/lists/*
+localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
+
+VERSION=$(curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
+
+echo "The latest version of hugo is $VERSION."
+
+url="https://github.com/gohugoio/hugo/releases/download/v${VERSION}/hugo_extended_${VERSION}_linux-amd64.deb"
+
+echo "Download hugo from $url."
+
+curl -sSfOL "$url"
+dpkg -i "hugo_extended_${VERSION}_linux-amd64.deb"
+rm "hugo_extended_${VERSION}_linux-amd64.deb"
+
+echo "Hugo version: $(hugo version)."
diff --git a/services/docker/blog/update.bash b/services/docker/blog/update.bash
new file mode 100755
index 0000000..d4bcadc
--- /dev/null
+++ b/services/docker/blog/update.bash
@@ -0,0 +1,30 @@
+#! /usr/bin/env bash
+
+set -e
+
+echo -e "\e[0;103m\e[K\e[1mBegin to build blog...\e[0m"
+echo "Begin time: $(date +%Y-%m-%dT%H:%M:%SZ)"
+
+mkdir -p /public
+
+# check /blog directory exists
+if [[ ! -d /blog ]]; then
+ echo "Directory /blog not found, clone blog repository..."
+ git clone https://github.com/crupest/blog.git /blog
+ cd /blog
+ git submodule update --init --recursive
+else
+ echo "Directory /blog founded, update blog repository..."
+ cd /blog
+ git fetch -p
+ git reset --hard origin/master
+ git submodule update --init --recursive
+fi
+
+# Now hugo it
+echo "Run hugo to generate blog..."
+hugo -d /public
+
+echo "Finish time: $(date +%Y-%m-%dT%H:%M:%SZ)"
+echo -e "\e[0;102m\e[K\e[1mFinish build!\e[0m"
+