summaryrefslogtreecommitdiffstats
path: root/docker/alpine/Dockerfile
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:53:30 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:53:30 +0000
commit2c7cac91ed6e7db0f6937923d2b57f97dbdbc337 (patch)
treec05dc0f8e6aa3accc84e3e5cffc933ed94941383 /docker/alpine/Dockerfile
parentInitial commit. (diff)
downloadfrr-2c7cac91ed6e7db0f6937923d2b57f97dbdbc337.tar.xz
frr-2c7cac91ed6e7db0f6937923d2b57f97dbdbc337.zip
Adding upstream version 8.4.4.upstream/8.4.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'docker/alpine/Dockerfile')
-rw-r--r--docker/alpine/Dockerfile72
1 files changed, 72 insertions, 0 deletions
diff --git a/docker/alpine/Dockerfile b/docker/alpine/Dockerfile
new file mode 100644
index 0000000..b9278db
--- /dev/null
+++ b/docker/alpine/Dockerfile
@@ -0,0 +1,72 @@
+# syntax=docker/dockerfile:1
+
+# Create a basic stage set up to build APKs
+FROM alpine:3.15 as alpine-builder
+RUN apk add \
+ --update-cache \
+ abuild \
+ alpine-conf \
+ alpine-sdk \
+ && setup-apkcache /var/cache/apk \
+ && mkdir -p /pkgs/apk \
+ && 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 dist tarball from the source
+FROM alpine:3.15 as source-builder
+
+RUN mkdir -p /src/alpine
+COPY alpine/APKBUILD.in /src/alpine
+RUN source /src/alpine/APKBUILD.in \
+ && apk add \
+ --no-cache \
+ --update-cache \
+ $makedepends \
+ gzip \
+ py-pip \
+ rtrlib \
+ && pip install pytest
+RUN mkdir -p /pkgs/apk
+COPY . /src
+ARG PKGVER
+RUN cd /src \
+ && ./bootstrap.sh \
+ && ./configure \
+ --enable-numeric-version \
+ --with-pkg-extra-version="_git$PKGVER" \
+ && make dist
+
+# This stage builds an APK from the dist tarball
+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
+USER builder
+RUN cd /dist \
+ && abuild checksum \
+ && git init \
+ && abuild -r -P /pkgs/apk
+
+# This stage installs frr from the apk
+FROM alpine:3.15
+RUN mkdir -p /pkgs/apk
+COPY --from=alpine-apk-builder /pkgs/apk/ /pkgs/apk/
+RUN apk add \
+ --no-cache \
+ --update-cache \
+ tini \
+ && apk add \
+ --no-cache \
+ --allow-untrusted /pkgs/apk/*/*.apk \
+ && rm -rf /pkgs
+
+# Own the config / PID files
+RUN mkdir -p /var/run/frr
+RUN chown -R frr:frr /etc/frr /var/run/frr
+
+# Simple init manager for reaping processes and forwarding signals
+ENTRYPOINT ["/sbin/tini", "--"]
+
+# Default CMD starts watchfrr
+COPY docker/alpine/docker-start /usr/lib/frr/docker-start
+CMD ["/usr/lib/frr/docker-start"]