diff options
author | Toshiki Tsuchiya <taruta0811@gmail.com> | 2019-11-24 21:28:54 +0100 |
---|---|---|
committer | Toshiki Tsuchiya <taruta0811@gmail.com> | 2019-11-26 20:29:30 +0100 |
commit | 46661cdc15fd47936e4adae951b5f9639f32e40a (patch) | |
tree | 27f1cfb69f4c7b63f19695d4b2cbcdb2e9aab09b /docker | |
parent | Merge pull request #5327 from lkrishnamoor/rm_rd_filter (diff) | |
download | frr-46661cdc15fd47936e4adae951b5f9639f32e40a.tar.xz frr-46661cdc15fd47936e4adae951b5f9639f32e40a.zip |
docker: Make docker image on CentOS 7
- Build rpm package from source on CentOS 7
- Use multi-stage builds to reduce docker image size
Signed-off-by: Toshiki Tsuchiya <taruta0811@gmail.com>
Diffstat (limited to 'docker')
-rw-r--r-- | docker/centos/Dockerfile | 43 | ||||
-rwxr-xr-x | docker/centos/build.sh | 31 | ||||
-rwxr-xr-x | docker/centos/docker-start | 12 |
3 files changed, 86 insertions, 0 deletions
diff --git a/docker/centos/Dockerfile b/docker/centos/Dockerfile new file mode 100644 index 000000000..088a3201b --- /dev/null +++ b/docker/centos/Dockerfile @@ -0,0 +1,43 @@ +# This stage builds an rpm from the source +FROM centos:centos7 as centos-builder + +RUN yum install -y rpm-build autoconf automake libtool make \ + readline-devel texinfo net-snmp-devel groff pkgconfig \ + json-c-devel pam-devel bison flex pytest c-ares-devel \ + python-devel systemd-devel python-sphinx libcap-devel \ + https://ci1.netdef.org/artifact/LIBYANG-YANGRELEASE/shared/build-10/CentOS-7-x86_64-Packages/libyang-0.16.111-0.x86_64.rpm \ + https://ci1.netdef.org/artifact/LIBYANG-YANGRELEASE/shared/build-10/CentOS-7-x86_64-Packages/libyang-devel-0.16.111-0.x86_64.rpm \ + https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-110/CentOS-7-x86_64-Packages/librtr-0.7.0-1.el7.centos.x86_64.rpm \ + https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-110/CentOS-7-x86_64-Packages/librtr-devel-0.7.0-1.el7.centos.x86_64.rpm + +COPY . /src +ARG PKGVER + +RUN echo '%_smp_mflags %( echo "-j$(/usr/bin/getconf _NPROCESSORS_ONLN)"; )' >> /root/.rpmmacros \ + && cd /src \ + && ./bootstrap.sh \ + && ./configure \ + --enable-rpki \ + --enable-numeric-version \ + --with-pkg-extra-version="_git$PKGVER" \ + && make dist \ + && cd / \ + && mkdir -p /rpmbuild/{SOURCES,SPECS} \ + && cp /src/frr*.tar.gz /rpmbuild/SOURCES \ + && cp /src/redhat/frr.spec /rpmbuild/SPECS \ + && rpmbuild \ + --define "_topdir /rpmbuild" \ + -ba /rpmbuild/SPECS/frr.spec + +# This stage installs frr from the rpm +FROM centos:centos7 +RUN mkdir -p /pkgs/rpm \ + && yum install -y https://ci1.netdef.org/artifact/LIBYANG-YANGRELEASE/shared/build-10/CentOS-7-x86_64-Packages/libyang-0.16.111-0.x86_64.rpm \ + https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-110/CentOS-7-x86_64-Packages/librtr-0.7.0-1.el7.centos.x86_64.rpm + +COPY --from=centos-builder /rpmbuild/RPMS/ /pkgs/rpm/ + +RUN yum install -y /pkgs/rpm/*/*.rpm \ + && rm -rf /pkgs +COPY docker/centos/docker-start /usr/lib/frr/docker-start +ENTRYPOINT [ "/usr/lib/frr/docker-start" ] diff --git a/docker/centos/build.sh b/docker/centos/build.sh new file mode 100755 index 000000000..9cd0f618e --- /dev/null +++ b/docker/centos/build.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +set -e + +## +# Package version needs to be decimal +## +GITREV="$(git rev-parse --short=10 HEAD)" +PKGVER="$(printf '%u\n' 0x$GITREV)" + +mkdir -p docker/centos/pkgs +docker build \ + --file=docker/centos/Dockerfile \ + --build-arg="PKGVER=$PKGVER" \ + --tag="frr:centos-builder-$GITREV" \ + --target=centos-builder \ + . + +# Copy RPM package from container to host +CONTAINER_ID="$(docker create "frr:centos-builder-$GITREV")" +docker cp "${CONTAINER_ID}:/rpmbuild/RPMS/x86_64/" docker/centos/pkgs +docker rm "${CONTAINER_ID}" + +docker build \ + --cache-from="frr:centos-builder-$GITREV" \ + --file=docker/centos/Dockerfile \ + --build-arg="PKGVER=$PKGVER" \ + --tag="frr:centos-$GITREV" \ + . + +docker rmi "frr:centos-builder-$GITREV" diff --git a/docker/centos/docker-start b/docker/centos/docker-start new file mode 100755 index 000000000..a3913245b --- /dev/null +++ b/docker/centos/docker-start @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +## +# Change owner for docker volume mount +## +chown -R frr:frr /etc/frr +/usr/lib/frr/frrinit.sh start + +# Sleep forever +exec tail -f /dev/null |