diff options
Diffstat (limited to 'Dockerfile')
-rw-r--r-- | Dockerfile | 59 |
1 files changed, 51 insertions, 8 deletions
@@ -1,18 +1,61 @@ -FROM phusion/baseimage:0.9.18 -MAINTAINER Samer Abdel-Hafez <sam@arahant.net> +# -- stage 1: backport libssh2 1.7.0 from zesty for xenial, as githubrepo hook requires it +FROM ubuntu:xenial as libssh2-backport -RUN add-apt-repository ppa:brightbox/ruby-ng && \ - apt-get update && \ - apt-get install -y ruby2.3 ruby2.3-dev libsqlite3-dev libssl-dev pkg-config make cmake libssh2-1-dev +# set up dependencies for the build process +RUN apt-get -yq update && \ + apt-get -yq install build-essential chrpath debhelper dh-autoreconf libgcrypt20-dev zlib1g-dev -RUN gem install oxidized oxidized-web --no-ri --no-rdoc +# build libssh2 1.7.0 +WORKDIR /tmp/libssh2-build +ADD https://launchpad.net/ubuntu/+archive/primary/+files/libssh2_1.7.0-1ubuntu1.debian.tar.xz . +ADD https://launchpad.net/ubuntu/+archive/primary/+files/libssh2_1.7.0.orig.tar.gz . +RUN tar xvf libssh2_1.7.0.orig.tar.gz +WORKDIR /tmp/libssh2-build/libssh2-1.7.0 +RUN tar xvf ../libssh2_1.7.0-1ubuntu1.debian.tar.xz -RUN apt-get remove -y ruby-dev pkg-config make cmake +WORKDIR /tmp/libssh2-build/libssh2-1.7.0 +ENV DEB_BUILD_OPTIONS nocheck +RUN dpkg-buildpackage -b -RUN apt-get -y autoremove +# -- stage 2: build the actual oxidized container +FROM phusion/baseimage:0.10.0 +LABEL maintainer="Samer Abdel-Hafez <sam@arahant.net>" +# set up dependencies for the build process +RUN apt-get -yq update && \ + apt-get -yq install ruby2.3 ruby2.3-dev libsqlite3-dev libssl-dev pkg-config make cmake libssh2-1-dev git g++ libffi-dev ruby-bundler + +# upgrade libssh2 to self-built backport from stage 1 +COPY --from=libssh2-backport \ + /tmp/libssh2-build/libssh2-1_1.7.0-1ubuntu1_amd64.deb \ + /tmp/libssh2-build/libssh2-1-dev_1.7.0-1ubuntu1_amd64.deb \ + /tmp/ +RUN dpkg -i /tmp/*.deb + +# dependencies for hooks +RUN gem install aws-sdk slack-api xmpp4r cisco_spark + +# build and install oxidized +COPY . /tmp/oxidized/ +WORKDIR /tmp/oxidized + +# docker automated build gets shallow copy, but non-shallow copy cannot be unshallowed +RUN git fetch --unshallow || true +RUN rake install + +# web interface +RUN gem install oxidized-web --no-ri --no-rdoc + +# clean up +WORKDIR / +RUN rm -rf /tmp/oxidized +RUN rm /tmp/*.deb +RUN apt-get -yq --purge autoremove ruby-dev pkg-config make cmake ruby-bundler + +# add runit services ADD extra/oxidized.runit /etc/service/oxidized/run ADD extra/auto-reload-config.runit /etc/service/auto-reload-config/run +ADD extra/update-ca-certificates.runit /etc/service/update-ca-certificates/run VOLUME ["/root/.config/oxidized"] EXPOSE 8888/tcp |