docker: Keep and copy .apk files after they are built

For debugging purposes and/or to distribute them somewhere else.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
Donatas Abraitis 2022-09-20 23:23:55 +03:00
parent 22432f22da
commit 7be59f7b7c
2 changed files with 13 additions and 25 deletions

View File

@ -12,16 +12,6 @@ RUN apk add \
&& echo 'builder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN adduser -D -G abuild builder && su builder -c 'abuild-keygen -a -n'
# This stage builds a libyang APK from source
FROM alpine-builder as libyang-builder
RUN mkdir -p /libyang && chown -R builder /pkgs /libyang
# -- Not currently needed - libyang currently available in Alpine upstream
# COPY docker/alpine/libyang/ /libyang
# USER builder
# RUN cd /libyang \
# && abuild checksum \
# && abuild -r -P /pkgs/apk
# This stage builds a dist tarball from the source
FROM alpine:3.15 as source-builder
@ -36,14 +26,7 @@ RUN source /src/alpine/APKBUILD.in \
py-pip \
rtrlib \
&& pip install pytest
RUN mkdir -p /pkgs/apk
# -- Not needed while libyang is not built
# COPY --from=libyang-builder /pkgs/apk/ /pkgs/apk/
# RUN apk add \
# --no-cache \
# --allow-untrusted /pkgs/apk/*/*.apk \
COPY . /src
ARG PKGVER
RUN cd /src \
@ -54,12 +37,7 @@ RUN cd /src \
&& make dist
# This stage builds an APK from the dist tarball
FROM alpine-builder as frr-apk-builder
# -- Not needed while libyang is not built
# COPY --from=libyang-builder /pkgs/apk/ /pkgs/apk/
# RUN apk add \
# --no-cache \
# --allow-untrusted /pkgs/apk/*/*.apk
FROM alpine-builder as alpine-apk-builder
COPY --from=source-builder /src/frr-*.tar.gz /src/alpine/* /dist/
RUN find /pkgs/apk -type f -name APKINDEX.tar.gz -delete
RUN chown -R builder /dist /pkgs
@ -72,7 +50,7 @@ RUN cd /dist \
# This stage installs frr from the apk
FROM alpine:3.15
RUN mkdir -p /pkgs/apk
COPY --from=frr-apk-builder /pkgs/apk/ /pkgs/apk/
COPY --from=alpine-apk-builder /pkgs/apk/ /pkgs/apk/
RUN apk add \
--no-cache \
--update-cache \

View File

@ -25,7 +25,16 @@ docker build \
--target=alpine-builder \
.
CONTAINER_ID="$(docker create "frr:alpine-builder-$GITREV")"
# Keep .apk files for debugging purposes, docker image as well.
docker build \
--pull \
--file=docker/alpine/Dockerfile \
--build-arg="PKGVER=$PKGVER" \
--tag="frr:alpine-apk-builder-$GITREV" \
--target=alpine-apk-builder \
.
CONTAINER_ID="$(docker create "frr:alpine-apk-builder-$GITREV")"
docker cp "${CONTAINER_ID}:/pkgs/" docker/alpine
docker rm "${CONTAINER_ID}"
@ -36,3 +45,4 @@ docker build \
.
docker rmi "frr:alpine-builder-$GITREV"
docker rmi "frr:alpine-apk-builder-$GITREV"