Skip to content

Commit

Permalink
add dockerfiles for building freeradius with docker
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Rose committed Jul 19, 2017
1 parent a42573b commit ca4af42
Show file tree
Hide file tree
Showing 5 changed files with 257 additions and 0 deletions.
94 changes: 94 additions & 0 deletions scripts/docker/build-centos6/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
FROM centos:centos6

#
# Install devtools like Make and git
#
RUN yum groupinstall -y "Development Tools"
RUN yum install -y rpmdevtools
RUN yum install -y vim emacs nano
RUN yum install -y yum-utils

#
# Add the EPEL repository for freetds and hiredis
#
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

#
# Install GCC-4.9 as it has the requisite support for C11 keywords and atomics
#
RUN yum install -y centos-release-scl
RUN yum install -y devtoolset-3-gcc devtoolset-3-gcc-c++
ENV CC=/opt/rh/devtoolset-3/root/usr/bin/gcc

#
# Setup a src dir in /usr/local
#
RUN mkdir -p /usr/local/src/repositories
WORKDIR /usr/local/src

#
# Get a modern version of cmake. We need 3.8.2 or later to build libkqueue rpms
#
RUN yum install -y openssl

RUN curl https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.sh > ./cmake.sh

RUN [ "$(cat ./cmake.sh | openssl sha256 | sed 's/^.* //')" = "bb26b1871f9e5c2fb73476186cc94d03b674608f704b48b94d617340b87b4d73" ]
RUN chmod +x ./cmake.sh
RUN ./cmake.sh --skip-license --prefix=/usr/local

#
# Grab libkqueue and build
#
WORKDIR /usr/local/src/repositories
RUN git clone --depth=1 https://github.com/arr2036/libkqueue.git
WORKDIR libkqueue

# Fixme: Change to the main repo when they merge this branch
RUN git checkout patch-3
RUN cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib ./ && \
make && \
cpack -G RPM
RUN yum localinstall -y ./*.rpm


WORKDIR /usr/local/src/repositories
RUN git clone --depth=1 https://github.com/mattrose/hiredis.git
WORKDIR hiredis
RUN git checkout rpm
WORKDIR /usr/local/src/repositories
RUN mkdir -p $HOME/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
RUN yum-builddep -y hiredis/redhat/hiredis.spec
RUN v=$(rpm -q --qf '%{VERSION}\n' --specfile hiredis/redhat/hiredis.spec | head -1) ;\
mv hiredis hiredis-$v ;\
tar -c -z -f $HOME/rpmbuild/SOURCES/hiredis-$v.tar.gz --exclude=.git hiredis-$v ;\
rpmbuild -bb hiredis-$v/redhat/hiredis.spec
RUN yum localinstall -y $HOME/rpmbuild/RPMS/*/hiredis-*.rpm

#
# Shallow clone the FreeRADIUS source
#
WORKDIR /usr/local/src/repositories
RUN git clone --depth=1 https://github.com/mattrose/freeradius-server.git

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; \
[ -e ./redhat/freeradius.spec ] && yum-builddep -y ./redhat/freeradius.spec; \
done

# Create the build tree
ENV BUILDDIR=/root/rpmbuild
RUN rpmdev-setuptree
### This is necessary for the jenkins server to talk to the docker instance
RUN yum install -y openssh-server java-1.8.0-openjdk-headless createrepo
RUN adduser jenkins
RUN echo -e "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
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
78 changes: 78 additions & 0 deletions scripts/docker/build-centos7/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
FROM centos:centos7

#
# Install devtools like Make and git
#
RUN yum groupinstall -y "Development Tools"
RUN yum install -y rpmdevtools
RUN yum install -y vim emacs nano

#
# Add the EPEL repository for freetds and hiredis
#
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

#
# Install GCC-4.9 as it has the requisite support for C11 keywords and atomics
#
RUN yum install -y centos-release-scl
RUN yum install -y devtoolset-3-gcc devtoolset-3-gcc-c++
ENV CC=/opt/rh/devtoolset-3/root/usr/bin/gcc

#
# Setup a src dir in /usr/local
#
RUN mkdir -p /usr/local/src/repositories
WORKDIR /usr/local/src

#
# Get a modern version of cmake. We need 3.8.2 or later to build libkqueue rpms
#
RUN yum install -y openssl

RUN curl https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.sh > ./cmake.sh

RUN [ "$(cat ./cmake.sh | openssl sha256 | sed 's/^.* //')" = "bb26b1871f9e5c2fb73476186cc94d03b674608f704b48b94d617340b87b4d73" ]
RUN chmod +x ./cmake.sh
RUN ./cmake.sh --skip-license --prefix=/usr/local

#
# Grab libkqueue and build
#
WORKDIR /usr/local/src/repositories
RUN git clone --depth=1 --no-single-branch https://github.com/arr2036/libkqueue.git
WORKDIR libkqueue

# Fixme: Change to the main repo when they merge this branch
RUN git checkout patch-3
RUN cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib ./ && \
make && \
cpack -G RPM
RUN yum localinstall -y ./*.rpm

#
# Shallow clone the FreeRADIUS source
#
WORKDIR /usr/local/src/repositories
RUN git clone --depth 1 --no-single-branch https://github.com/FreeRADIUS/freeradius-server.git
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; \
[ -e ./redhat/freeradius.spec ] && yum-builddep -y ./redhat/freeradius.spec; \
done

# Create the build tree
ENV BUILDDIR=/root/rpmbuild
RUN rpmdev-setuptree
### This is necessary for the jenkins server to talk to the docker instance
RUN yum install -y openssh-server java-1.8.0-openjdk-headless createrepo
RUN adduser jenkins
RUN echo -e "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
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
30 changes: 30 additions & 0 deletions scripts/docker/build-debian/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM debian:jessie
RUN apt-get update && apt-get install -y devscripts equivs git quilt
RUN apt-get install -y g++-4.9
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 && update-alternatives --config gcc
WORKDIR /usr/local/src/repositories
RUN git clone --depth=1 https://github.com/mattrose/freeradius-server.git

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; \
[ -e ./debian/control.in ] && debian/rules debian/control && echo 'y' | mk-build-deps -irt'apt-get -yV' debian/control; \
done

### For some reason this dep was not installed
# RUN apt-get install -y libiodbc2-dev
### 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 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"]
22 changes: 22 additions & 0 deletions scripts/docker/build-debian7/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM debian:wheezy
RUN apt-get update && apt-get install -y sudo firebird-dev freetds-dev libcap-dev libcollectdclient-dev libcurl4-openssl-dev libgdbm-dev libhiredis-dev libidn11-dev libiodbc2-dev libjson0-dev libldap2-dev libpq-dev libmemcached-dev libmysqlclient-dev libpam0g-dev libpcap-dev libperl-dev libsqlite3-dev libunbound-dev libtalloc-dev libwbclient-dev libykclient-dev libyubikey-dev python-dev ruby ruby-dev snmp software-properties-common python-software-properties libssl-dev libtalloc-dev libkqueue-dev make packaging-dev libkrb5-dev libreadline-dev samba4-dev openssh-server mercurial

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
ENV DISABLE_HOTSPOT_OS_VERSION_CHECK=ok
RUN cd YourOpenJDK && bash ./configure && make
RUN cd YourOpenJDK && make install
RUN echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y gcc-4.9 g++-4.9
#RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 && update-alternatives --config gcc
RUN apt-get install -y sudo && echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
RUN useradd -m jenkins
RUN echo "jenkins:jenkins1" | chpasswd
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"]
33 changes: 33 additions & 0 deletions scripts/docker/build-ubuntu14/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y devscripts equivs git quilt
RUN apt-get install -y software-properties-common python-software-properties
RUN add-apt-repository ppa:ubuntu-toolchain-r/test
RUN apt-get update
RUN apt-get install -y g++-4.9
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 && update-alternatives --config gcc
WORKDIR /usr/local/src/repositories
RUN git clone --depth=1 --no-single-branch https://github.com/mattrose/freeradius-server.git

WORKDIR freeradius-server
# RUN if [ -e ./debian/control.in ] ; then debian/rules debian/control ; fi ; echo 'y' | mk-build-deps -irt'apt-get -yV' debian/control
# 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

### For some reason this dep was not installed
### 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 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"]

0 comments on commit ca4af42

Please sign in to comment.