FROM ubuntu:18.04 ENV RAGEL_VERSION 6.10 ENV HYPERSCAN_VERSION 5.2.1 ENV GO_VERSION 1.14.1 ENV NODE_VERSION v12.18.2 ENV NODE_DISTRO linux-x64 ENV PATH /usr/local/lib/nodejs/node-$NODE_VERSION-$NODE_DISTRO/bin:/usr/local/go/bin:$PATH # Install tools and libraries RUN apt-get update && apt-get install -y git wget make cmake build-essential python3 libpcap-dev pkg-config # Get Boost source to compile Hyperscan RUN wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz -P /tmp/ && \ tar -C /tmp/ -xzf /tmp/boost_1_72_0.tar.gz # Get Ragel source and install it RUN wget http://www.colm.net/files/ragel/ragel-$RAGEL_VERSION.tar.gz -P /tmp && \ tar -C /tmp/ -xzf /tmp/ragel-$RAGEL_VERSION.tar.gz && \ cd /tmp/ragel-$RAGEL_VERSION/ && \ ./configure && \ make && \ make install # Get Hyperscan source and install it RUN wget https://github.com/intel/hyperscan/archive/v$HYPERSCAN_VERSION.tar.gz -P /tmp && \ tar -C /tmp/ -xzf /tmp/v$HYPERSCAN_VERSION.tar.gz && \ cd /tmp/hyperscan-$HYPERSCAN_VERSION/ && \ mkdir build && \ cd build && \ cmake -G "Unix Makefiles" -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DBUILD_STATIC_AND_SHARED=1 \ -DBOOST_ROOT=/tmp/boost_1_72_0 .. && \ make && \ make install && \ ln -s /usr/local/lib/libhs.so.5 /usr/lib/libhs.so.5 # Get GoLang and install it RUN wget https://dl.google.com/go/go$GO_VERSION.linux-amd64.tar.gz -P /tmp && \ tar -C /usr/local -xzf /tmp/go$GO_VERSION.linux-amd64.tar.gz # Get NodeJs and install it RUN wget https://nodejs.org/dist/$NODE_VERSION/node-$NODE_VERSION-$NODE_DISTRO.tar.xz -P /tmp/ && \ mkdir -p /usr/local/lib/nodejs && \ tar -C /usr/local/lib/nodejs -xJf /tmp/node-$NODE_VERSION-$NODE_DISTRO.tar.xz # Remove source files RUN rm -rf /tmp/* CMD /bin/bash