summaryrefslogtreecommitdiff
path: root/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile59
1 files changed, 51 insertions, 8 deletions
diff --git a/Dockerfile b/Dockerfile
index 905825e..61b5c71 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -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