From 5b8ceb6a8fe21ff33cd41910c38cb9d8520685d6 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:26:07 +0200 Subject: [PATCH] ci: use official Hugo image Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- Dockerfile | 45 +++++++++++++++------------------------------ compose.yaml | 4 +--- docker-bake.hcl | 4 ++-- netlify.toml | 2 +- 4 files changed, 19 insertions(+), 36 deletions(-) diff --git a/Dockerfile b/Dockerfile index f5432d03461..c551c27038d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,42 +7,27 @@ ARG ALPINE_VERSION=3.20 ARG GO_VERSION=1.23 # HTMLTEST_VERSION sets the wjdp/htmltest version for HTML testing ARG HTMLTEST_VERSION=0.17.0 +# HUGO_VERSION sets the version of Hugo to build the site with +ARG HUGO_VERSION=0.136.0 -# base is the base stage with build dependencies -FROM golang:${GO_VERSION}-alpine AS base -WORKDIR /src -RUN apk --update add nodejs npm git gcompat - -# node installs Node.js dependencies -FROM base AS node -COPY package*.json . -ENV NODE_ENV=production -RUN npm install - -# hugo downloads and extracts the Hugo binary -FROM base AS hugo -ARG HUGO_VERSION=0.134.3 -ARG TARGETARCH -WORKDIR /tmp/hugo -RUN wget -O "hugo.tar.gz" "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-${TARGETARCH}.tar.gz" -RUN tar -xf "hugo.tar.gz" hugo - -# build-base is the base stage for building the site -FROM base AS build-base -COPY --from=hugo /tmp/hugo/hugo /bin/hugo -COPY --from=node /src/node_modules /src/node_modules +# build-base is the base stage used for building the site +FROM ghcr.io/gohugoio/hugo:v${HUGO_VERSION} AS build-base +USER root +ENV NODE_ENV="production" +RUN --mount=source=package.json,target=package.json \ + --mount=source=package-lock.json,target=package-lock.json \ + --mount=type=cache,target=/root/.npm \ + npm ci COPY . . -# dev is for local development with Docker Compose -FROM build-base AS dev - # build creates production builds with Hugo FROM build-base AS build # HUGO_ENV sets the hugo.Environment (production, development, preview) -ARG HUGO_ENV +ARG HUGO_ENV="development" # DOCS_URL sets the base URL for the site -ARG DOCS_URL -RUN hugo --gc --minify -d /out -e $HUGO_ENV -b $DOCS_URL +ARG DOCS_URL="https://docs.docker.com" +RUN --mount=type=cache,target=/cache \ + hugo --gc --minify -d /out -e $HUGO_ENV -b $DOCS_URL # lint lints markdown files FROM davidanson/markdownlint-cli2:v0.14.0 AS lint @@ -122,7 +107,7 @@ fi EOT # pagefind installs the Pagefind runtime -FROM base AS pagefind +FROM node:alpine${ALPINE_VERSION} AS pagefind ARG PAGEFIND_VERSION=1.1.1 COPY --from=build /out ./public RUN --mount=type=bind,src=pagefind.yml,target=pagefind.yml \ diff --git a/compose.yaml b/compose.yaml index c8b7dc5f823..27b07207749 100644 --- a/compose.yaml +++ b/compose.yaml @@ -2,7 +2,7 @@ services: server: build: context: . - target: dev + target: build-base ports: - "1313:1313" entrypoint: ["hugo", "server", "--bind", "0.0.0.0"] @@ -11,5 +11,3 @@ services: - action: sync path: . target: /src - ignore: - - node_modules/ \ No newline at end of file diff --git a/docker-bake.hcl b/docker-bake.hcl index 8a556ea2aac..32f915ed24d 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -1,9 +1,9 @@ variable "HUGO_ENV" { - default = "development" + default = null } variable "DOCS_URL" { - default = "https://docs.docker.com" + default = null } variable "DOCS_SITE_DIR" { diff --git a/netlify.toml b/netlify.toml index 05b792caa33..25601ffe5ce 100644 --- a/netlify.toml +++ b/netlify.toml @@ -4,7 +4,7 @@ publish = "public" [context.deploy-preview.environment] NODE_VERSION = "20" NODE_ENV = "production" -HUGO_VERSION = "0.134.3" +HUGO_VERSION = "0.136.0" HUGO_ENABLEGITINFO = "true" HUGO_ENVIRONMENT = "preview"