Build static and use nginx instead of the full hugo server (#8)

This pull request will close #4

Hugo server needs about 800mb of memory just to do what nginx can with a way smaller requirements, so it makes sense to stop using `hugo` for serving statics
This commit is contained in:
Allen Languor 2023-02-17 14:48:16 +00:00
parent 8c825f7c84
commit 682de643fb
4 changed files with 43 additions and 22 deletions

View File

@ -1,13 +1,19 @@
--- ---
# ----------------------------------------------
# -- Build the site and push it to the registry
# ----------------------------------------------
kind: pipeline kind: pipeline
type: kubernetes type: kubernetes
name: Build badhouseplants.net name: Build badhouseplants.net
steps: trigger:
- name: Publish the Helm chart
when:
branch: branch:
- main - main
event:
- push
steps:
- name: Publish the Helm chart
image: alpine/helm image: alpine/helm
environment: environment:
GITEA_TOKEN: GITEA_TOKEN:
@ -18,19 +24,13 @@ steps:
- helm repo add --username allanger --password $GITEA_TOKEN allanger-charts https://git.badhouseplants.net/api/packages/allanger/helm - helm repo add --username allanger --password $GITEA_TOKEN allanger-charts https://git.badhouseplants.net/api/packages/allanger/helm
- helm cm-push "./chart-package/$(ls chart-package)" allanger-charts - helm cm-push "./chart-package/$(ls chart-package)" allanger-charts
- name: Init git submodules - name: Init git submodules with themes
image: alpine/git image: alpine/git
when:
branch:
- main
commands: commands:
- git submodule update --init --recursive - git submodule update --init --recursive
- name: Get static content - name: Get static content
image: rclone/rclone:latest image: rclone/rclone:latest
when:
branch:
- main
environment: environment:
RCLONE_CONFIG_CONTENT: RCLONE_CONFIG_CONTENT:
from_secret: RCLONE_CONFIG_CONTENT from_secret: RCLONE_CONFIG_CONTENT
@ -40,9 +40,6 @@ steps:
- rclone copy -P badhouseplants-public:/badhouseplants-static static - rclone copy -P badhouseplants-public:/badhouseplants-static static
- name: Build and push the docker image - name: Build and push the docker image
when:
branch:
- main
image: plugins/docker image: plugins/docker
settings: settings:
registry: git.badhouseplants.net registry: git.badhouseplants.net
@ -52,16 +49,23 @@ steps:
repo: git.badhouseplants.net/allanger/badhouseplants-net repo: git.badhouseplants.net/allanger/badhouseplants-net
tags: latest tags: latest
depends_on: depends_on:
- Init git submodules - Init git submodules with themes
- Get static content - Get static content
--- ---
# ----------------------------------------------
# -- Upload a newer version of my CV
# ----------------------------------------------
kind: pipeline kind: pipeline
type: kubernetes type: kubernetes
name: CV Builder name: CV Builder
when:
trigger:
branch: branch:
- main - main
event:
- push
steps: steps:
- name: Build the CV - name: Build the CV
image: ghcr.io/puppeteer/puppeteer image: ghcr.io/puppeteer/puppeteer

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
node_modules node_modules
static static
content/cv/index.pdf content/cv/index.pdf
public

View File

@ -1,13 +1,16 @@
FROM alpine:latest AS builder FROM alpine:latest AS builder
WORKDIR /src WORKDIR /src
COPY . /src
ARG GOHUGO_LINK=https://github.com/gohugoio/hugo/releases/download/v0.110.0/hugo_0.110.0_linux-amd64.tar.gz ARG GOHUGO_LINK=https://github.com/gohugoio/hugo/releases/download/v0.110.0/hugo_0.110.0_linux-amd64.tar.gz
RUN apk update && apk add curl tar RUN apk update && apk add curl tar
RUN curl -LJO ${GOHUGO_LINK} && tar -xf hugo_0.110.0_linux-amd64.tar.gz RUN curl -LJO ${GOHUGO_LINK} && tar -xf hugo_0.110.0_linux-amd64.tar.gz
RUN chmod +x /src/hugo RUN mv /src/hugo /usr/local/bin/hugo
RUN chmod +x /usr/local/bin/hugo
RUN hugo
FROM nginx:stable-alpine
COPY --from=builder /src/public /var/www
COPY configs/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD [ "nginx", "-g", "daemon off;" ]
FROM alpine:latest
WORKDIR /src
COPY --from=builder /src/hugo /usr/bin/hugo
COPY . /src
ENTRYPOINT ["/usr/bin/hugo"]
CMD ["--help"]

13
configs/nginx.conf Normal file
View File

@ -0,0 +1,13 @@
server {
listen 80;
listen [::]:80;
server_name badhouseplants.com www.badhouseplants.com;
root /var/www;
index index.html; # Hugo generates HTML
location / {
try_files $uri $uri/ =404;
}
}