summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dockerignore1
-rw-r--r--doc/developer/building-frr-on-alpine.rst30
-rw-r--r--docker/.gitignore1
-rw-r--r--docker/alpine/Dockerfile11
-rwxr-xr-xdocker/alpine/build.sh8
5 files changed, 31 insertions, 20 deletions
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000000..6b8710a711
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+.git
diff --git a/doc/developer/building-frr-on-alpine.rst b/doc/developer/building-frr-on-alpine.rst
index 6fcb5de107..f0f2aee138 100644
--- a/doc/developer/building-frr-on-alpine.rst
+++ b/doc/developer/building-frr-on-alpine.rst
@@ -34,26 +34,38 @@ This will put the apk packages in:
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
diff --git a/docker/.gitignore b/docker/.gitignore
index e9beab556e..6f91eb5ec3 100644
--- a/docker/.gitignore
+++ b/docker/.gitignore
@@ -1,2 +1 @@
-src.tar
pkgs/
diff --git a/docker/alpine/Dockerfile b/docker/alpine/Dockerfile
index e186fdccdf..6bd7d90aef 100644
--- a/docker/alpine/Dockerfile
+++ b/docker/alpine/Dockerfile
@@ -12,8 +12,7 @@ RUN apk add --no-cache abuild acct alpine-sdk attr autoconf automake bash \
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 \
@@ -22,9 +21,13 @@ RUN (cd /src && \
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
diff --git a/docker/alpine/build.sh b/docker/alpine/build.sh
index 357ea12dee..40ed1194fe 100755
--- a/docker/alpine/build.sh
+++ b/docker/alpine/build.sh
@@ -9,12 +9,8 @@ set -x
##
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