Use jq over file for more resilient tarball discovery
rodzic
e6bac5537f
commit
c0a1a64d03
11
Dockerfile
11
Dockerfile
|
@ -12,16 +12,23 @@ RUN \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
file \
|
|
||||||
git \
|
git \
|
||||||
|
jq \
|
||||||
tzdata \
|
tzdata \
|
||||||
xz
|
xz
|
||||||
|
|
||||||
# grab base tarball
|
# grab base tarball
|
||||||
RUN \
|
RUN \
|
||||||
git clone --depth=1 https://git.launchpad.net/cloud-images/+oci/ubuntu-base -b ${TAG} /build && \
|
git clone --depth=1 https://git.launchpad.net/cloud-images/+oci/ubuntu-base -b ${TAG} /build && \
|
||||||
|
cd /build/oci && \
|
||||||
|
DIGEST=$(jq -r '.manifests[0].digest[7:]' < index.json) && \
|
||||||
cd /build/oci/blobs/sha256 && \
|
cd /build/oci/blobs/sha256 && \
|
||||||
for i in ./*; do if $(file -b $i | grep -q 'gzip'); then TARBALL=$i;fi; done && \
|
if jq -e '.layers // empty' < "${DIGEST}" >/dev/null 2>&1; then \
|
||||||
|
TARBALL=$(jq -r '.layers[0].digest[7:]' < ${DIGEST}); \
|
||||||
|
else \
|
||||||
|
MULTIDIGEST=$(jq -r ".manifests[] | select(.platform.architecture == \"${ARCH}\") | .digest[7:]" < ${DIGEST}) && \
|
||||||
|
TARBALL=$(jq -r '.layers[0].digest[7:]' < ${MULTIDIGEST}); \
|
||||||
|
fi && \
|
||||||
mkdir /root-out && \
|
mkdir /root-out && \
|
||||||
tar xf \
|
tar xf \
|
||||||
${TARBALL} -C \
|
${TARBALL} -C \
|
||||||
|
|
|
@ -9,19 +9,26 @@ ENV TAG=dist-noble-arm64v8-20240429-4129f303
|
||||||
|
|
||||||
# install packages
|
# install packages
|
||||||
RUN \
|
RUN \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
bash \
|
bash \
|
||||||
curl \
|
curl \
|
||||||
file \
|
git \
|
||||||
git \
|
jq \
|
||||||
tzdata \
|
tzdata \
|
||||||
xz
|
xz
|
||||||
|
|
||||||
# grab base tarball
|
# grab base tarball
|
||||||
RUN \
|
RUN \
|
||||||
git clone --depth=1 https://git.launchpad.net/cloud-images/+oci/ubuntu-base -b ${TAG} /build && \
|
git clone --depth=1 https://git.launchpad.net/cloud-images/+oci/ubuntu-base -b ${TAG} /build && \
|
||||||
|
cd /build/oci && \
|
||||||
|
DIGEST=$(jq -r '.manifests[0].digest[7:]' < index.json) && \
|
||||||
cd /build/oci/blobs/sha256 && \
|
cd /build/oci/blobs/sha256 && \
|
||||||
for i in ./*; do if $(file -b $i | grep -q 'gzip'); then TARBALL=$i;fi; done && \
|
if jq -e '.layers // empty' < "${DIGEST}" >/dev/null 2>&1; then \
|
||||||
|
TARBALL=$(jq -r '.layers[0].digest[7:]' < ${DIGEST}); \
|
||||||
|
else \
|
||||||
|
MULTIDIGEST=$(jq -r ".manifests[] | select(.platform.architecture == \"${ARCH}\") | .digest[7:]" < ${DIGEST}) && \
|
||||||
|
TARBALL=$(jq -r '.layers[0].digest[7:]' < ${MULTIDIGEST}); \
|
||||||
|
fi && \
|
||||||
mkdir /root-out && \
|
mkdir /root-out && \
|
||||||
tar xf \
|
tar xf \
|
||||||
${TARBALL} -C \
|
${TARBALL} -C \
|
||||||
|
|
Ładowanie…
Reference in New Issue