]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
dockerfiles - add debian sid, use more args
authorMatthew Newton <matthew-git@newtoncomputing.co.uk>
Mon, 18 Dec 2017 13:36:48 +0000 (13:36 +0000)
committerMatthew Newton <matthew-git@newtoncomputing.co.uk>
Mon, 18 Dec 2017 13:39:23 +0000 (13:39 +0000)
18 files changed:
scripts/docker/README.md
scripts/docker/build-centos6/Dockerfile
scripts/docker/build-centos6/Dockerfile.jenkins
scripts/docker/build-centos7/Dockerfile
scripts/docker/build-centos7/Dockerfile.jenkins
scripts/docker/build-debian7/Dockerfile
scripts/docker/build-debian7/Dockerfile.jenkins
scripts/docker/build-debian8/Dockerfile
scripts/docker/build-debian8/Dockerfile.jenkins
scripts/docker/build-debian9/Dockerfile
scripts/docker/build-debian9/Dockerfile.jenkins
scripts/docker/build-debiansid/Dockerfile [new file with mode: 0644]
scripts/docker/build-debiansid/Dockerfile.deps [new file with mode: 0644]
scripts/docker/build-debiansid/Dockerfile.jenkins [new file with mode: 0644]
scripts/docker/build-ubuntu14/Dockerfile
scripts/docker/build-ubuntu14/Dockerfile.jenkins
scripts/docker/build-ubuntu16/Dockerfile
scripts/docker/build-ubuntu16/Dockerfile.jenkins

index 8146dd7c43a7b31bb4bddf4a21041c1571dd6fa4..52f7097a573a58d6b7ed4bd595b2d3d90787614f 100644 (file)
@@ -70,6 +70,14 @@ script, for example:
 $ ./dockerbuild build-centos7
 ```
 
+to build the server, and
+
+```bash
+$ ./dockerbuild -j build-centos7
+```
+
+to build the jenkins image.
+
 ### Running
 
 The ``docker run`` command is used to create new containers from
index 2f0501cabee0756c6eec475d47db38f68a162aa1..40e3ca93876245d667bbb2103f03bbf45576a353 100644 (file)
@@ -1,6 +1,8 @@
-FROM freeradius/centos6-deps
+ARG from=freeradius/centos6-deps
 ARG cc=gcc
 
+FROM ${from}
+
 WORKDIR /usr/local/src/repositories/freeradius-server
 RUN CC=${cc} ./configure --prefix=/opt/freeradius
 RUN make -j2
@@ -11,7 +13,7 @@ WORKDIR certs
 RUN make
 WORKDIR /
 
-FROM freeradius/centos6-deps
+FROM ${from}
 COPY --from=0 /opt/freeradius /opt/freeradius
 
 EXPOSE 1812/udp 1813/udp
index 84430038030afd467d8e2aa6f137b41316f63c76..9e37b35d0fd88b31b8a529b109d5143b3829af7b 100644 (file)
@@ -1,4 +1,6 @@
-FROM freeradius/centos6-deps
+ARG from=freeradius/centos6-deps
+
+FROM ${from}
 
 #
 #  This is necessary for the jenkins server to talk to the docker instance
@@ -7,6 +9,7 @@ RUN yum install -y openssh-server java-1.8.0-openjdk-headless createrepo
 RUN adduser jenkins
 RUN printf jenkins1 | passwd --stdin jenkins
 RUN mkdir /var/run/sshd
+
 RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
 RUN sed -i 's|session    required     pam_loginuid.so|session    optional     pam_loginuid.so|g' /etc/pam.d/sshd
 
index 4e5eb696c28a2e320b8296627efb9cd68b64218b..3d8f604402adacb79b8a7341594e537751fe6e69 100644 (file)
@@ -1,6 +1,8 @@
-FROM freeradius/centos7-deps
+ARG from=freeradius/centos7-deps
 ARG cc=gcc
 
+FROM ${from}
+
 WORKDIR /usr/local/src/repositories/freeradius-server
 RUN CC=${cc} ./configure --prefix=/opt/freeradius
 RUN make -j2
@@ -11,7 +13,7 @@ WORKDIR certs
 RUN make
 WORKDIR /
 
-FROM freeradius/centos7-deps
+FROM ${from}
 COPY --from=0 /opt/freeradius /opt/freeradius
 
 EXPOSE 1812/udp 1813/udp
index 6e1dc0be12468a5e0429274986a8e3b8e0186bf7..af4a7130ae1a6e5a84ab734f609b97b12aa83760 100644 (file)
@@ -1,4 +1,6 @@
-FROM freeradius/centos7-deps
+ARG from=freeradius/centos7-deps
+
+FROM ${from}
 
 #
 #  This is necessary for the jenkins server to talk to the docker instance
@@ -7,6 +9,7 @@ RUN yum install -y openssh-server java-1.8.0-openjdk-headless createrepo
 RUN adduser jenkins
 RUN printf jenkins1 | passwd --stdin jenkins
 RUN mkdir /var/run/sshd
+
 RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
 RUN sed -i 's|session    required     pam_loginuid.so|session    optional     pam_loginuid.so|g' /etc/pam.d/sshd
 
index 23077bf405489abd5cc439f1bcb09ce39b537b82..f47fd55a1ddca6027282743bee039b47ad3c49f6 100644 (file)
@@ -1,6 +1,8 @@
-FROM freeradius/debian7-deps
+ARG from=freeradius/debian7-deps
 ARG cc=gcc
 
+FROM ${from}
+
 WORKDIR /usr/local/src/repositories/freeradius-server
 RUN git checkout v3.0.x
 RUN CC=${cc} ./configure --prefix=/opt/freeradius
@@ -12,7 +14,7 @@ WORKDIR certs
 RUN make
 WORKDIR /
 
-FROM freeradius/debian7-deps
+FROM ${from}
 COPY --from=0 /opt/freeradius /opt/freeradius
 
 EXPOSE 1812/udp 1813/udp
index 6ffb0be990c908d24c0bd7de542ffbd02a65ce93..6a9613af9f868fd584f74190314b2ca9970bc019 100644 (file)
@@ -1,4 +1,7 @@
-FROM freeradius/debian7-deps
+ARG from=freeradius/debian7-deps
+ARG osname=wheezy
+
+FROM ${from}
 
 #
 #  This is necessary for the jenkins server to talk to the docker instance
@@ -8,16 +11,19 @@ ENV DISABLE_HOTSPOT_OS_VERSION_CHECK=ok
 RUN hg clone http://hg.openjdk.java.net/jdk8/jdk8 YourOpenJDK ;\
     cd YourOpenJDK ;\
     bash ./get_source.sh
-RUN apt-get install -y cpio zip openjdk-7-jdk libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev cups libcups2-dev
-RUN apt-get install -y libfreetype6-dev libasound2-dev
+RUN apt-get install -y cpio zip openjdk-7-jdk libX11-dev libxext-dev libxrender-dev \
+    libxtst-dev libxt-dev cups libcups2-dev libfreetype6-dev libasound2-dev
 
 RUN cd YourOpenJDK && bash ./configure && make
 RUN cd YourOpenJDK && make install
 
-RUN apt-get install -y sudo && echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
+RUN apt-get install -y openssh-server sudo
+
 RUN useradd -m jenkins
 RUN echo "jenkins:jenkins1" | chpasswd
+RUN echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
 RUN mkdir /var/run/sshd
+
 # RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
 RUN sed -i 's|session    required     pam_loginuid.so|session    optional     pam_loginuid.so|g' /etc/pam.d/sshd
 
index f07bd430ce9d3e29d9ff2a512a3c679517bce7e6..a4d6b31503fd3708d8a421cd3d2c5ed341d0ce13 100644 (file)
@@ -1,6 +1,8 @@
-FROM freeradius/debian8-deps
+ARG from=freeradius/debian8-deps
 ARG cc=gcc
 
+FROM ${from}
+
 WORKDIR /usr/local/src/repositories/freeradius-server
 RUN CC=${cc} ./configure --prefix=/opt/freeradius
 RUN make -j2
@@ -11,7 +13,7 @@ WORKDIR certs
 RUN make
 WORKDIR /
 
-FROM freeradius/debian8-deps
+FROM ${from}
 COPY --from=0 /opt/freeradius /opt/freeradius
 
 EXPOSE 1812/udp 1813/udp
index 007b8317901389154fc20b408303c60862e9513e..5c5f7a1c0952ec0c307fd4cde5ee2afc05558ecb 100644 (file)
@@ -1,17 +1,20 @@
-FROM freeradius/debian8-deps
+ARG from=freeradius/debian8-deps
+ARG osname=jessie
+
+FROM ${from}
 
 #
 #  This is necessary for the jenkins server to talk to the docker instance
 #
-RUN echo deb http://ftp.debian.org/debian jessie-backports main >> /etc/apt/sources.list
-RUN apt-get update && apt-get -t jessie-backports install -y openjdk-8-jre-headless
+RUN echo deb http://ftp.debian.org/debian ${osname}-backports main >> /etc/apt/sources.list
+RUN apt-get update && apt-get -t ${osname}-backports install -y openjdk-8-jre-headless
 RUN apt-get install -y openssh-server sudo
 
 RUN useradd -m jenkins
 RUN echo "jenkins:jenkins1" | chpasswd
 RUN echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
-
 RUN mkdir /var/run/sshd
+
 # RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
 RUN sed -i 's|session    required     pam_loginuid.so|session    optional     pam_loginuid.so|g' /etc/pam.d/sshd
 
index d64834c11e531b484c91c503e557134bce0538c0..0742fed8d92b97421b757b9cfe543992dc4a9185 100644 (file)
@@ -1,6 +1,8 @@
-FROM freeradius/debian9-deps
+ARG from=freeradius/debian9-deps
 ARG cc=gcc
 
+FROM ${from}
+
 WORKDIR /usr/local/src/repositories/freeradius-server
 RUN CC=${cc} ./configure --prefix=/opt/freeradius
 RUN make -j2
@@ -11,7 +13,7 @@ WORKDIR certs
 RUN make
 WORKDIR /
 
-FROM freeradius/debian9-deps
+FROM ${from}
 COPY --from=0 /opt/freeradius /opt/freeradius
 
 EXPOSE 1812/udp 1813/udp
index f437795a70c924cef1dac30a484c45de267f336b..06024d877eb586e7a7f44dcc8090c5a68085a84d 100644 (file)
@@ -1,10 +1,13 @@
-FROM freeradius/debian9-deps
+ARG from=freeradius/debian9-deps
+ARG osname=stretch
+
+FROM ${from}
 
 #
 #  This is necessary for the jenkins server to talk to the docker instance
 #
-RUN echo deb http://ftp.debian.org/debian stretch-backports main >> /etc/apt/sources.list
-RUN apt-get update && apt-get -t stretch-backports install -y openjdk-8-jre-headless
+RUN echo deb http://ftp.debian.org/debian ${osname}-backports main >> /etc/apt/sources.list
+RUN apt-get update && apt-get -t ${osname}-backports install -y openjdk-8-jre-headless
 RUN apt-get install -y openssh-server sudo
 
 RUN useradd -m jenkins
diff --git a/scripts/docker/build-debiansid/Dockerfile b/scripts/docker/build-debiansid/Dockerfile
new file mode 100644 (file)
index 0000000..05f78df
--- /dev/null
@@ -0,0 +1,21 @@
+ARG from=freeradius/debiansid-deps
+ARG cc=gcc
+
+FROM ${from}
+
+WORKDIR /usr/local/src/repositories/freeradius-server
+RUN CC=${cc} ./configure --prefix=/opt/freeradius
+RUN make -j2
+RUN make install
+WORKDIR /opt/freeradius/etc/raddb
+RUN sed -i -e 's/allow_vulnerable_openssl.*/allow_vulnerable_openssl = yes/' radiusd.conf
+WORKDIR certs
+RUN make
+WORKDIR /
+
+FROM ${from}
+COPY --from=0 /opt/freeradius /opt/freeradius
+
+EXPOSE 1812/udp 1813/udp
+CMD ["/opt/freeradius/sbin/radiusd", "-X"]
+
diff --git a/scripts/docker/build-debiansid/Dockerfile.deps b/scripts/docker/build-debiansid/Dockerfile.deps
new file mode 100644 (file)
index 0000000..f5542f7
--- /dev/null
@@ -0,0 +1,82 @@
+FROM debian:sid
+
+ARG gccver=7
+ARG clangver=5.0
+ARG osname=unstable
+
+#
+#  Install add-apt-repository
+#
+RUN apt-get update && \
+    apt-get install -y software-properties-common gnupg2 && \
+    apt-get clean && \
+    rm -r /var/lib/apt/lists/*
+
+#  Stretch uses GCC-6.3 by default, so it doesn't need to be updated to get C11 functionality.
+
+#  For clang
+RUN echo "deb http://apt.llvm.org/${osname}/ llvm-toolchain-${clangver} main" >> /etc/apt/sources.list && \
+    apt-key adv --fetch-keys http://apt.llvm.org/llvm-snapshot.gpg.key
+
+RUN apt-get update && \
+#  Development utilities
+    apt-get install -y devscripts equivs git quilt && \
+#  Compilers
+    apt-get install -y g++-${gccver} llvm-${clangver} clang-${clangver} lldb-${clangver} && \
+#  eapol_test dependencies
+    apt-get install -y libnl-3-dev libnl-genl-3-dev
+
+RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gccver} 50 \
+                        --slave /usr/bin/g++ g++ /usr/bin/g++-${gccver} && \
+    update-alternatives --config gcc
+
+RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${clangver} 60 && \
+    update-alternatives --config clang
+
+RUN update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-${clangver} 60 && \
+    update-alternatives --config lldb
+
+
+#
+#  Setup a src dir in /usr/local
+#
+RUN mkdir -p /usr/local/src/repositories
+WORKDIR /usr/local/src/repositories
+
+#
+#  Get a modern version of cmake.  We need 3.8.2 or later to build libkqueue rpms
+#
+RUN curl -f -o cmake.sh https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.sh
+RUN [ "$(cat cmake.sh | openssl sha256 | sed 's/^.* //')" = "bb26b1871f9e5c2fb73476186cc94d03b674608f704b48b94d617340b87b4d73" ]
+RUN sh cmake.sh --skip-license --prefix=/usr/local
+
+#
+#  Grab libkqueue and build
+#
+WORKDIR /usr/local/src/repositories
+RUN git clone --branch master --depth=1 https://github.com/mheily/libkqueue.git
+
+WORKDIR libkqueue
+RUN cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib ./ && \
+    make && \
+    cpack -P libkqueue-dev -G DEB && \
+    dpkg -i --force-all ./libkqueue-*deb
+
+WORKDIR /usr/local/src/repositories
+
+#
+#  Shallow clone the FreeRADIUS source
+#
+ARG source=https://github.com/FreeRADIUS/freeradius-server.git
+RUN git clone --depth 1 --no-single-branch ${source}
+WORKDIR freeradius-server
+
+#
+#  Install build dependencies for all branches
+#
+RUN for i in $(git for-each-ref --format='%(refname:short)' refs/remotes/origin 2>/dev/null | sed -e 's#origin/##' | egrep "^v[0-9]*\.[0-9x]*\.x$");\
+       do \
+               git checkout $i; \
+               if [ -e ./debian/control.in ] ; then debian/rules debian/control ; fi ; echo 'y' | mk-build-deps -irt'apt-get -yV' debian/control ; \
+       done
+
diff --git a/scripts/docker/build-debiansid/Dockerfile.jenkins b/scripts/docker/build-debiansid/Dockerfile.jenkins
new file mode 100644 (file)
index 0000000..cad42c6
--- /dev/null
@@ -0,0 +1,22 @@
+ARG from=freeradius/debiansid-deps
+ARG osname=sid
+
+FROM ${from}
+
+#
+#  This is necessary for the jenkins server to talk to the docker instance
+#
+RUN echo deb http://ftp.debian.org/debian ${osname}-backports main >> /etc/apt/sources.list
+RUN apt-get update && apt-get -t ${osname}-backports install -y openjdk-8-jre-headless
+RUN apt-get install -y openssh-server sudo
+
+RUN useradd -m jenkins
+RUN echo "jenkins:jenkins1" | chpasswd
+RUN echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
+RUN mkdir /var/run/sshd
+
+# RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+RUN sed -i 's|session    required     pam_loginuid.so|session    optional     pam_loginuid.so|g' /etc/pam.d/sshd
+
+EXPOSE 22
+CMD ["/usr/sbin/sshd","-D"]
index 289d552062388906bc7e4ac9609b751b7628bdd8..92565c2e2c4a73b2eaf8714bf5c34acf40ac81ea 100644 (file)
@@ -1,6 +1,8 @@
-FROM freeradius/ubuntu14-deps
+ARG from=freeradius/ubuntu14-deps
 ARG cc=gcc
 
+FROM ${from}
+
 WORKDIR /usr/local/src/repositories/freeradius-server
 RUN CC=${cc} ./configure --prefix=/opt/freeradius
 RUN make -j2
@@ -11,7 +13,7 @@ WORKDIR certs
 RUN make
 WORKDIR /
 
-FROM freeradius/ubuntu14-deps
+FROM ${from}
 COPY --from=0 /opt/freeradius /opt/freeradius
 
 EXPOSE 1812/udp 1813/udp
index 528e613f8013016653889e249dc4f53da161b06c..a2dc8741afade986664f75c72d9cfa4a1a62a95d 100644 (file)
@@ -1,16 +1,21 @@
-FROM freeradius/ubuntu14-deps
+ARG from=freeradius/ubuntu14-deps
+ARG osname=trusty
+
+FROM ${from}
 
 #
 #  This is necessary for the jenkins server to talk to the docker instance
 #
-#RUN echo deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse >>  /etc/apt/sources.list
 RUN apt-add-repository ppa:openjdk-r/ppa
 RUN apt-get update && apt-get install -y openjdk-8-jre-headless
-RUN apt-get install -y openssh-server
+
+RUN apt-get install -y openssh-server sudo
+
 RUN useradd -m jenkins
 RUN echo "jenkins:jenkins1" | chpasswd
 RUN echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
 RUN mkdir /var/run/sshd
+
 # RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
 RUN sed -i 's|session    required     pam_loginuid.so|session    optional     pam_loginuid.so|g' /etc/pam.d/sshd
 
index e671fd85060b0d67500c053f84353fd018ec975f..701210c136eb86e9675f01baba69c02f1b74f6e9 100644 (file)
@@ -1,6 +1,8 @@
-FROM freeradius/ubuntu16-deps
+ARG from=freeradius/ubuntu16-deps
 ARG cc=gcc
 
+FROM ${from}
+
 WORKDIR /usr/local/src/repositories/freeradius-server
 RUN CC=${cc} ./configure --prefix=/opt/freeradius
 RUN make -j2
@@ -11,7 +13,7 @@ WORKDIR certs
 RUN make
 WORKDIR /
 
-FROM freeradius/ubuntu16-deps
+FROM ${from}
 COPY --from=0 /opt/freeradius /opt/freeradius
 
 EXPOSE 1812/udp 1813/udp
index f3f7a7e613823ab326ab848ff08155d7c73f4cd0..639f907d5b98c9bc06963188c2f6910041b9761d 100644 (file)
@@ -1,16 +1,21 @@
-FROM freeradius/ubuntu16-deps
+ARG from=freeradius/ubuntu16-deps
+ARG osname=xenial
+
+FROM ${from}
 
 #
 #  This is necessary for the jenkins server to talk to the docker instance
 #
-#RUN echo deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse >>  /etc/apt/sources.list
 RUN apt-add-repository ppa:openjdk-r/ppa
 RUN apt-get update && apt-get install -y openjdk-8-jre-headless
-RUN apt-get install -y openssh-server
+
+RUN apt-get install -y openssh-server sudo
+
 RUN useradd -m jenkins
 RUN echo "jenkins:jenkins1" | chpasswd
 RUN echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
 RUN mkdir /var/run/sshd
+
 # RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
 RUN sed -i 's|session    required     pam_loginuid.so|session    optional     pam_loginuid.so|g' /etc/pam.d/sshd