Usage
-----
-To add the packages to a docker image, create a Dockerfile in ./docker/pkgs:
+To create a base image with the frr packages installed:
::
- FROM alpine:3.7
- RUN mkdir -p /pkgs
- ADD apk/ /pkgs/
- RUN apk add --no-cache --allow-untrusted /pkgs/x86_64/*.apk
+ docker build --rm -f docker/alpine/Dockerfile -t frr:latest .
-And build a docker image:
+Or, if you don't have a git checkout of the sources, you can build a base
+image directly off the github account:
::
- docker build --rm --force-rm -t alpine-dev-pkgs:latest docker/pkgs
+ docker build --rm -f docker/alpine/Dockerfile -t frr:latest \
+ https://github.com/frrouting/frr.git
-And run the image:
+And to run the image:
::
- docker run -it --rm alpine-dev-pkgs:latest /bin/sh
+ docker run -it --rm frr:latest /bin/sh
Currently, we only package the raw daemons and example files, so, you'll
need to run the daemons by hand (or, better, orchestrate in the Dockerfile).
+
+We can also build directly from docker-compose, with a docker-compose.yml file
+like this one:
+
+::
+
+ version: '2.2'
+
+ services:
+ frr:
+ build:
+ context: https://github.com/frrouting/frr.git
+ dockerfile: docker/alpine/Dockerfile
patch pax-utils pcre perl pkgconf python2 python2-dev readline \
readline-dev sqlite-libs squashfs-tools sudo tar texinfo xorriso xz-libs \
groff gzip bc py-sphinx
-RUN mkdir -p /src
-ADD src.tar /src
+ADD . /src
RUN (cd /src && \
./bootstrap.sh && \
./configure \
make dist)
FROM alpine:3.7 as alpine-builder
RUN apk add --no-cache abuild alpine-sdk && mkdir -p /pkgs/apk
-ADD alpine-build.sh /usr/bin/
-ADD builder /etc/sudoers.d
+ADD docker/alpine/alpine-build.sh /usr/bin/
+ADD docker/alpine/builder /etc/sudoers.d
COPY --from=source-builder /src/*.tar.gz /src/alpine/APKBUILD /dist/
RUN adduser -D -G abuild builder && chown -R builder /dist /pkgs
USER builder
RUN /usr/bin/alpine-build.sh
+FROM alpine:3.7
+RUN mkdir -p /pkgs/apk
+COPY --from=alpine-builder /pkgs/apk/ /pkgs/apk/
+RUN apk add --no-cache --allow-untrusted /pkgs/apk/x86_64/*.apk
##
c=`git rev-parse --short=10 HEAD`
commit=`printf '%u\n' 0x$c`
-git archive --format=tar $c > docker/alpine/src.tar
-(cd docker/alpine && \
- docker build --build-arg commit=$commit --rm --force-rm -t \
- frr:alpine-$c . && \
- rm -f src.tar)
-
+docker build -f docker/alpine/Dockerfile \
+ --build-arg commit=$commit -t frr:alpine-$c .
id=`docker create frr:alpine-$c`
docker cp ${id}:/pkgs/ docker
docker rm $id