9269d71907
A step that runs `go install <tool>@<version>` and then invokes the tool fails with exit 127: the binary lands in $GOPATH/bin, which nothing adds to PATH, and GOPATH defaults to /root/go. Pipelines moving here from docker.io/golang, where /go/bin is on PATH, break on that difference. - Set GOPATH=/go and prepend /go/bin to PATH, matching the official golang images. - Create /go/bin mode 1777 so go install also works if the image runs as non-root. - Document the installed-tool contract in the README.
34 lines
1.5 KiB
Docker
34 lines
1.5 KiB
Docker
ARG REGISTRY=artifactapi.k8s.syd1.au.unkin.net/docker-internal
|
|
# The container-base release this image is built on — the one place to bump it.
|
|
ARG BASE_VERSION=0.1.3
|
|
ARG BASE_IMAGE_NAME=almalinux9
|
|
|
|
FROM ${REGISTRY}/${BASE_IMAGE_NAME}:${BASE_VERSION} AS image
|
|
ARG DISTRO=alma9
|
|
ARG GO_CACHE_PLUGIN_VERSION=v0.1.0
|
|
ARG GO_CACHE_PLUGIN_SHA256=0eb23d06a0dcf395559cb6447864579c220e60148fdcd6a6f841c2b17169b9b8
|
|
# `go install` writes to $GOPATH/bin, which nothing puts on PATH by default, so an
|
|
# installed tool is not runnable. Match the official golang images: GOPATH out of root's
|
|
# home, its bin on PATH, and world-writable so this still works if the image ever runs
|
|
# as non-root.
|
|
ENV GOPATH=/go
|
|
ENV PATH=/go/bin:$PATH
|
|
|
|
COPY distros/${DISTRO}/ /tmp/distro/
|
|
# DL3041: versions are pinned by the estate dnf repos, not here. SC2086: $PACKAGES is a
|
|
# word list on purpose. DL4006: the only pipe ends in sha256sum, whose status is the
|
|
# pipeline's, and set -e catches it.
|
|
# hadolint ignore=DL3041,DL4006,SC2086
|
|
RUN set -eux; \
|
|
. /tmp/distro/distro.env; \
|
|
dnf install -y $PACKAGES; \
|
|
dnf clean all; \
|
|
curl -fsSL -o /usr/local/bin/go-cache-plugin \
|
|
"https://git.unkin.net/unkin/go-cache-plugin/releases/download/${GO_CACHE_PLUGIN_VERSION}/go-cache-plugin-linux-amd64"; \
|
|
echo "$GO_CACHE_PLUGIN_SHA256 /usr/local/bin/go-cache-plugin" | sha256sum -c -; \
|
|
chmod 0755 /usr/local/bin/go-cache-plugin; \
|
|
mkdir -p "$GOPATH/bin"; \
|
|
chmod -R 1777 "$GOPATH"; \
|
|
rm -rf /var/cache/dnf /tmp/distro
|
|
CMD ["/bin/bash"]
|