FROM ubuntu:16.04 RUN apt-get update RUN apt-get install -qqy software-properties-common build-essential curl locales wget unzip git \ libmysqlclient-dev libpq-dev \ libpcre3 libpcre3-dev \ libssl-dev libcurl4-openssl-dev \ zlib1g-dev \ libreadline6-dev \ libbz2-dev \ libxslt-dev libgdbm-dev ncurses-dev \ libffi-dev libtool bison libevent-dev \ libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 \ liborc-0.4-0 libgnutls-dev \ libjson0-dev libmcrypt-dev libicu-dev \ re2c libnuma-dev RUN locale-gen en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 ENV DEBIAN_FRONTEND noninteractive RUN add-apt-repository ppa:ubuntu-toolchain-r/test -y RUN apt-get -yq update RUN apt-get install -qqy gcc-6 g++-6 RUN apt-add-repository --yes ppa:george-edison55/cmake-3.x RUN apt-get update -qq RUN apt-get install -qqy cmake ENV WT_VERSION 4.0.2 ENV BOOST_ROOT /boost ENV BOOST_INC ${BOOST_ROOT}/include ENV BOOST_LIB ${BOOST_ROOT}/lib ENV WT_ROOT /wt ENV WT_LIB ${WT_ROOT}/lib ENV WT_INC ${WT_ROOT}/include ENV LD_LIBRARY_PATH ${BOOST_LIB}:${WT_LIB}:${LD_LIBRARY_PATH} ENV CPLUS_INCLUDE_PATH /usr/include/postgresql:/usr/include/postgresql/9.3/server:${CPLUS_INCLUDE_PATH} WORKDIR ${WT_ROOT} COPY benchmark.cpp benchmark.cpp COPY fortunes.xml fortunes.xml COPY wt_config.xml wt_config.xml # Build boost_thread, boost_system, boost_filesystem and boost_program_options RUN wget -q https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz RUN tar xf boost_1_65_1.tar.gz RUN cd boost_1_65_1 && \ ./bootstrap.sh && \ ./b2 \ -d0 \ toolset=gcc-6 \ variant=release \ link=static \ cxxflags="-std=c++14 -march=native" \ cflags="-march=native" \ --prefix=${BOOST_ROOT} \ --with-system \ --with-thread \ --with-program_options \ --with-filesystem \ install RUN wget -q https://github.com/emweb/wt/archive/${WT_VERSION}.tar.gz RUN mv ${WT_VERSION}.tar.gz wt-${WT_VERSION}.tar.gz RUN tar xf wt-${WT_VERSION}.tar.gz RUN cd wt-$WT_VERSION && \ mkdir -p build && \ cd build && \ cmake .. -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release \ -DBOOST_PREFIX=${BOOST_ROOT} \ -DCMAKE_INSTALL_PREFIX=${WT_ROOT} -DCONFIGDIR=${WT_ROOT}/etc \ -DCMAKE_C_COMPILER=$(which gcc-6) \ -DCMAKE_CXX_COMPILER=$(which g++-6) -DDESTDIR=${WT_ROOT} \ -DWEBUSER=$(id -u -n) -DWEBGROUP=$(id -g -n) \ -DENABLE_SSL=OFF -DHTTP_WITH_ZLIB=OFF \ -DCMAKE_C_FLAGS_RELEASE="-O3 -march=native -DNDEBUG" \ -DCMAKE_CXX_FLAGS_RELEASE="-O3 -march=native -DNDEBUG" \ -DBUILD_TESTS=OFF -DENABLE_LIBWTTEST=OFF \ -DSHARED_LIBS=OFF >/dev/null && \ make && make install RUN g++-6 \ -std=c++14 \ -O3 -march=native -DNDEBUG \ -I${BOOST_INC} \ -L${BOOST_LIB} \ -I${WT_INC} \ -L${WT_LIB} \ -o te-benchmark-pg.wt \ -DBENCHMARK_USE_POSTGRES \ benchmark.cpp \ -lwthttp -lwt \ -lwtdbo -lwtdbopostgres \ -lboost_system \ -lboost_program_options \ -lboost_thread \ -lboost_filesystem \ -lpthread \ -lpq ENV DBHOST tfb-database CMD ./te-benchmark-pg.wt -c wt_config.xml -t $(nproc) --docroot . --approot . --http-listen 0.0.0.0:8080 --accesslog=- --no-compression