mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
docker: Fix Dart Sass ARM64 arch mismatch, /cache permissions
Also improve the final build step. Closes #12956 Closes #12957 Closes #12960
This commit is contained in:
parent
b5801d8b6a
commit
b5852d0e68
2 changed files with 14 additions and 30 deletions
24
Dockerfile
24
Dockerfile
|
@ -3,7 +3,8 @@
|
||||||
# Website: https://gohugo.io/
|
# Website: https://gohugo.io/
|
||||||
|
|
||||||
ARG GO_VERSION="1.23.2"
|
ARG GO_VERSION="1.23.2"
|
||||||
ARG ALPINE_VERSION=3.20
|
ARG ALPINE_VERSION="3.20"
|
||||||
|
ARG DART_SASS_VERSION="1.79.3"
|
||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.5.0 AS xx
|
FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.5.0 AS xx
|
||||||
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS gobuild
|
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS gobuild
|
||||||
|
@ -45,6 +46,15 @@ RUN --mount=target=. \
|
||||||
xx-verify /usr/bin/hugo
|
xx-verify /usr/bin/hugo
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
|
# dart-sass downloads the dart-sass runtime dependency
|
||||||
|
FROM alpine:${ALPINE_VERSION} AS dart-sass
|
||||||
|
ARG TARGETARCH
|
||||||
|
ARG DART_SASS_VERSION
|
||||||
|
ARG DART_ARCH=${TARGETARCH/amd64/x64}
|
||||||
|
WORKDIR /out
|
||||||
|
ADD https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-${DART_ARCH}.tar.gz .
|
||||||
|
RUN tar -xf dart-sass-${DART_SASS_VERSION}-linux-${DART_ARCH}.tar.gz
|
||||||
|
|
||||||
FROM gorun AS final
|
FROM gorun AS final
|
||||||
|
|
||||||
COPY --from=build /usr/bin/hugo /usr/bin/hugo
|
COPY --from=build /usr/bin/hugo /usr/bin/hugo
|
||||||
|
@ -54,14 +64,13 @@ RUN apk add --no-cache \
|
||||||
libc6-compat \
|
libc6-compat \
|
||||||
git \
|
git \
|
||||||
runuser \
|
runuser \
|
||||||
curl \
|
|
||||||
nodejs \
|
nodejs \
|
||||||
npm
|
npm
|
||||||
|
|
||||||
RUN mkdir -p /var/hugo/bin && \
|
RUN mkdir -p /var/hugo/bin /cache && \
|
||||||
addgroup -Sg 1000 hugo && \
|
addgroup -Sg 1000 hugo && \
|
||||||
adduser -Sg hugo -u 1000 -h /var/hugo hugo && \
|
adduser -Sg hugo -u 1000 -h /var/hugo hugo && \
|
||||||
chown -R hugo: /var/hugo && \
|
chown -R hugo: /var/hugo /cache && \
|
||||||
# For the Hugo's Git integration to work.
|
# For the Hugo's Git integration to work.
|
||||||
runuser -u hugo -- git config --global --add safe.directory /project && \
|
runuser -u hugo -- git config --global --add safe.directory /project && \
|
||||||
# See https://github.com/gohugoio/hugo/issues/9810
|
# See https://github.com/gohugoio/hugo/issues/9810
|
||||||
|
@ -71,15 +80,11 @@ VOLUME /project
|
||||||
WORKDIR /project
|
WORKDIR /project
|
||||||
USER hugo:hugo
|
USER hugo:hugo
|
||||||
ENV HUGO_CACHEDIR=/cache
|
ENV HUGO_CACHEDIR=/cache
|
||||||
ARG BUILDARCH
|
|
||||||
ENV BUILDARCH=${BUILDARCH}
|
|
||||||
ENV PATH="/var/hugo/bin:$PATH"
|
ENV PATH="/var/hugo/bin:$PATH"
|
||||||
|
|
||||||
COPY scripts/docker scripts/docker
|
|
||||||
COPY scripts/docker/entrypoint.sh /entrypoint.sh
|
COPY scripts/docker/entrypoint.sh /entrypoint.sh
|
||||||
|
COPY --link --from=dart-sass /out/dart-sass /var/hugo/bin/dart-sass
|
||||||
|
|
||||||
# Install default dependencies.
|
|
||||||
RUN scripts/docker/install_runtimedeps_default.sh
|
|
||||||
# Update PATH to reflect the new dependencies.
|
# Update PATH to reflect the new dependencies.
|
||||||
# For more complex setups, we should probably find a way to
|
# For more complex setups, we should probably find a way to
|
||||||
# delegate this to the script itself, but this will have to do for now.
|
# delegate this to the script itself, but this will have to do for now.
|
||||||
|
@ -92,4 +97,3 @@ EXPOSE 1313
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
CMD ["--help"]
|
CMD ["--help"]
|
||||||
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
export DART_SASS_VERSION=1.79.3
|
|
||||||
|
|
||||||
# If $BUILDARCH=arm64, then we need to install the arm64 version of Dart Sass,
|
|
||||||
# otherwise we install the x64 version.
|
|
||||||
ARCH="x64"
|
|
||||||
if [ "$BUILDARCH" = "arm64" ]; then
|
|
||||||
ARCH="arm64"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd /tmp
|
|
||||||
curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-${ARCH}.tar.gz
|
|
||||||
ls -ltr
|
|
||||||
tar -xf dart-sass-${DART_SASS_VERSION}-linux-${ARCH}.tar.gz
|
|
||||||
rm dart-sass-${DART_SASS_VERSION}-linux-${ARCH}.tar.gz && \
|
|
||||||
# The dart-sass folder is added to the PATH by the caller.
|
|
||||||
mv dart-sass /var/hugo/bin
|
|
Loading…
Reference in a new issue