wt-postgres.dockerfile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. FROM ubuntu:16.04
  2. RUN apt-get update
  3. RUN apt-get install -qqy software-properties-common build-essential curl locales wget unzip git \
  4. libmysqlclient-dev libpq-dev \
  5. libpcre3 libpcre3-dev \
  6. libssl-dev libcurl4-openssl-dev \
  7. zlib1g-dev \
  8. libreadline6-dev \
  9. libbz2-dev \
  10. libxslt-dev libgdbm-dev ncurses-dev \
  11. libffi-dev libtool bison libevent-dev \
  12. libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 \
  13. liborc-0.4-0 libgnutls-dev \
  14. libjson0-dev libmcrypt-dev libicu-dev \
  15. re2c libnuma-dev
  16. RUN locale-gen en_US.UTF-8
  17. ENV LANG en_US.UTF-8
  18. ENV LANGUAGE en_US:en
  19. ENV LC_ALL en_US.UTF-8
  20. ENV DEBIAN_FRONTEND noninteractive
  21. RUN add-apt-repository ppa:ubuntu-toolchain-r/test -y
  22. RUN apt-get -yq update
  23. RUN apt-get install -qqy gcc-6 g++-6
  24. RUN apt-add-repository --yes ppa:george-edison55/cmake-3.x
  25. RUN apt-get update -qq
  26. RUN apt-get install -qqy cmake
  27. ENV WT_VERSION 4.0.2
  28. ENV BOOST_ROOT /boost
  29. ENV BOOST_INC ${BOOST_ROOT}/include
  30. ENV BOOST_LIB ${BOOST_ROOT}/lib
  31. ENV WT_ROOT /wt
  32. ENV WT_LIB ${WT_ROOT}/lib
  33. ENV WT_INC ${WT_ROOT}/include
  34. ENV LD_LIBRARY_PATH ${BOOST_LIB}:${WT_LIB}:${LD_LIBRARY_PATH}
  35. ENV CPLUS_INCLUDE_PATH /usr/include/postgresql:/usr/include/postgresql/9.3/server:${CPLUS_INCLUDE_PATH}
  36. WORKDIR ${WT_ROOT}
  37. COPY benchmark.cpp benchmark.cpp
  38. COPY fortunes.xml fortunes.xml
  39. COPY wt_config.xml wt_config.xml
  40. # Build boost_thread, boost_system, boost_filesystem and boost_program_options
  41. RUN wget -q https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz
  42. RUN tar xf boost_1_65_1.tar.gz
  43. RUN cd boost_1_65_1 && \
  44. ./bootstrap.sh && \
  45. ./b2 \
  46. -d0 \
  47. toolset=gcc-6 \
  48. variant=release \
  49. link=static \
  50. cxxflags="-std=c++14 -march=native" \
  51. cflags="-march=native" \
  52. --prefix=${BOOST_ROOT} \
  53. --with-system \
  54. --with-thread \
  55. --with-program_options \
  56. --with-filesystem \
  57. install
  58. RUN wget -q https://github.com/emweb/wt/archive/${WT_VERSION}.tar.gz
  59. RUN mv ${WT_VERSION}.tar.gz wt-${WT_VERSION}.tar.gz
  60. RUN tar xf wt-${WT_VERSION}.tar.gz
  61. RUN cd wt-$WT_VERSION && \
  62. mkdir -p build && \
  63. cd build && \
  64. cmake .. -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release \
  65. -DBOOST_PREFIX=${BOOST_ROOT} \
  66. -DCMAKE_INSTALL_PREFIX=${WT_ROOT} -DCONFIGDIR=${WT_ROOT}/etc \
  67. -DCMAKE_C_COMPILER=$(which gcc-6) \
  68. -DCMAKE_CXX_COMPILER=$(which g++-6) -DDESTDIR=${WT_ROOT} \
  69. -DWEBUSER=$(id -u -n) -DWEBGROUP=$(id -g -n) \
  70. -DENABLE_SSL=OFF -DHTTP_WITH_ZLIB=OFF \
  71. -DCMAKE_C_FLAGS_RELEASE="-O3 -march=native -DNDEBUG" \
  72. -DCMAKE_CXX_FLAGS_RELEASE="-O3 -march=native -DNDEBUG" \
  73. -DBUILD_TESTS=OFF -DENABLE_LIBWTTEST=OFF \
  74. -DSHARED_LIBS=OFF >/dev/null && \
  75. make && make install
  76. RUN g++-6 \
  77. -std=c++14 \
  78. -O3 -march=native -DNDEBUG \
  79. -I${BOOST_INC} \
  80. -L${BOOST_LIB} \
  81. -I${WT_INC} \
  82. -L${WT_LIB} \
  83. -o te-benchmark-pg.wt \
  84. -DBENCHMARK_USE_POSTGRES \
  85. benchmark.cpp \
  86. -lwthttp -lwt \
  87. -lwtdbo -lwtdbopostgres \
  88. -lboost_system \
  89. -lboost_program_options \
  90. -lboost_thread \
  91. -lboost_filesystem \
  92. -lpthread \
  93. -lpq
  94. ENV DBHOST tfb-database
  95. CMD ./te-benchmark-pg.wt -c wt_config.xml -t $(nproc) --docroot . --approot . --http-listen 0.0.0.0:8080 --accesslog=- --no-compression