From: Matthew Newton Date: Mon, 18 Dec 2017 13:36:48 +0000 (+0000) Subject: dockerfiles - add debian sid, use more args X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=756058c54daa5355f1d3168740ffdddb1dbf153b;p=thirdparty%2Ffreeradius-server.git dockerfiles - add debian sid, use more args --- diff --git a/scripts/docker/README.md b/scripts/docker/README.md index 8146dd7c43a..52f7097a573 100644 --- a/scripts/docker/README.md +++ b/scripts/docker/README.md @@ -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 diff --git a/scripts/docker/build-centos6/Dockerfile b/scripts/docker/build-centos6/Dockerfile index 2f0501cabee..40e3ca93876 100644 --- a/scripts/docker/build-centos6/Dockerfile +++ b/scripts/docker/build-centos6/Dockerfile @@ -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 diff --git a/scripts/docker/build-centos6/Dockerfile.jenkins b/scripts/docker/build-centos6/Dockerfile.jenkins index 84430038030..9e37b35d0fd 100644 --- a/scripts/docker/build-centos6/Dockerfile.jenkins +++ b/scripts/docker/build-centos6/Dockerfile.jenkins @@ -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 diff --git a/scripts/docker/build-centos7/Dockerfile b/scripts/docker/build-centos7/Dockerfile index 4e5eb696c28..3d8f604402a 100644 --- a/scripts/docker/build-centos7/Dockerfile +++ b/scripts/docker/build-centos7/Dockerfile @@ -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 diff --git a/scripts/docker/build-centos7/Dockerfile.jenkins b/scripts/docker/build-centos7/Dockerfile.jenkins index 6e1dc0be124..af4a7130ae1 100644 --- a/scripts/docker/build-centos7/Dockerfile.jenkins +++ b/scripts/docker/build-centos7/Dockerfile.jenkins @@ -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 diff --git a/scripts/docker/build-debian7/Dockerfile b/scripts/docker/build-debian7/Dockerfile index 23077bf4054..f47fd55a1dd 100644 --- a/scripts/docker/build-debian7/Dockerfile +++ b/scripts/docker/build-debian7/Dockerfile @@ -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 diff --git a/scripts/docker/build-debian7/Dockerfile.jenkins b/scripts/docker/build-debian7/Dockerfile.jenkins index 6ffb0be990c..6a9613af9f8 100644 --- a/scripts/docker/build-debian7/Dockerfile.jenkins +++ b/scripts/docker/build-debian7/Dockerfile.jenkins @@ -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 diff --git a/scripts/docker/build-debian8/Dockerfile b/scripts/docker/build-debian8/Dockerfile index f07bd430ce9..a4d6b31503f 100644 --- a/scripts/docker/build-debian8/Dockerfile +++ b/scripts/docker/build-debian8/Dockerfile @@ -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 diff --git a/scripts/docker/build-debian8/Dockerfile.jenkins b/scripts/docker/build-debian8/Dockerfile.jenkins index 007b8317901..5c5f7a1c095 100644 --- a/scripts/docker/build-debian8/Dockerfile.jenkins +++ b/scripts/docker/build-debian8/Dockerfile.jenkins @@ -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 diff --git a/scripts/docker/build-debian9/Dockerfile b/scripts/docker/build-debian9/Dockerfile index d64834c11e5..0742fed8d92 100644 --- a/scripts/docker/build-debian9/Dockerfile +++ b/scripts/docker/build-debian9/Dockerfile @@ -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 diff --git a/scripts/docker/build-debian9/Dockerfile.jenkins b/scripts/docker/build-debian9/Dockerfile.jenkins index f437795a70c..06024d877eb 100644 --- a/scripts/docker/build-debian9/Dockerfile.jenkins +++ b/scripts/docker/build-debian9/Dockerfile.jenkins @@ -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 index 00000000000..05f78df5a95 --- /dev/null +++ b/scripts/docker/build-debiansid/Dockerfile @@ -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 index 00000000000..f5542f7e863 --- /dev/null +++ b/scripts/docker/build-debiansid/Dockerfile.deps @@ -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 index 00000000000..cad42c61e19 --- /dev/null +++ b/scripts/docker/build-debiansid/Dockerfile.jenkins @@ -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"] diff --git a/scripts/docker/build-ubuntu14/Dockerfile b/scripts/docker/build-ubuntu14/Dockerfile index 289d5520623..92565c2e2c4 100644 --- a/scripts/docker/build-ubuntu14/Dockerfile +++ b/scripts/docker/build-ubuntu14/Dockerfile @@ -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 diff --git a/scripts/docker/build-ubuntu14/Dockerfile.jenkins b/scripts/docker/build-ubuntu14/Dockerfile.jenkins index 528e613f801..a2dc8741afa 100644 --- a/scripts/docker/build-ubuntu14/Dockerfile.jenkins +++ b/scripts/docker/build-ubuntu14/Dockerfile.jenkins @@ -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 diff --git a/scripts/docker/build-ubuntu16/Dockerfile b/scripts/docker/build-ubuntu16/Dockerfile index e671fd85060..701210c136e 100644 --- a/scripts/docker/build-ubuntu16/Dockerfile +++ b/scripts/docker/build-ubuntu16/Dockerfile @@ -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 diff --git a/scripts/docker/build-ubuntu16/Dockerfile.jenkins b/scripts/docker/build-ubuntu16/Dockerfile.jenkins index f3f7a7e6138..639f907d5b9 100644 --- a/scripts/docker/build-ubuntu16/Dockerfile.jenkins +++ b/scripts/docker/build-ubuntu16/Dockerfile.jenkins @@ -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