Pin the build stage to $BUILDPLATFORM so Hugo runs once on the native arch instead of once per target arch under QEMU. Hugo output is static HTML and identical across arches, so the emulated arm64 Hugo run (~59s vs ~12s native) plus emulated base-image extraction were pure waste. The runtime stage stays on TARGETPLATFORM, so multi-arch amd64+arm64 images are still produced.
17 lines
683 B
Docker
Executable File
17 lines
683 B
Docker
Executable File
# syntax=docker/dockerfile:1
|
|
# Pin the build stage to the native build platform so Hugo runs once (never
|
|
# under QEMU emulation). Hugo output is static HTML — identical across arches —
|
|
# so there's no reason to run it per target arch. The runtime stage below stays
|
|
# on TARGETPLATFORM, so multi-arch (amd64 + arm64) runtime images are preserved.
|
|
FROM --platform=$BUILDPLATFORM ghcr.io/hugomods/hugo:0.157.0 AS build
|
|
WORKDIR /tmp/hugo
|
|
COPY . .
|
|
RUN hugo --gc --minify
|
|
|
|
FROM ghcr.io/static-web-server/static-web-server:2
|
|
COPY sws.toml /etc/sws.toml
|
|
COPY --from=build /tmp/hugo/public /public
|
|
ENV SERVER_CONFIG_FILE=/etc/sws.toml
|
|
EXPOSE 80/tcp
|
|
CMD ["--config-file", "/etc/sws.toml"]
|