h2o.dockerfile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. FROM ubuntu:16.04
  2. COPY ./ ./
  3. RUN apt update && \
  4. apt install -yqq autoconf bison cmake curl file flex g++ git libnuma-dev libpq-dev libssl-dev \
  5. libtool make wget
  6. ### Install mustache-c
  7. ENV MUSTACHE_C_BUILD_DIR=mustache-c
  8. ENV MUSTACHE_C_HOME=/mustache-c
  9. RUN git clone "https://github.com/x86-64/mustache-c.git" "$MUSTACHE_C_BUILD_DIR" && \
  10. cd "$MUSTACHE_C_BUILD_DIR" && \
  11. git checkout 01f1e4732c4862071bbf07242128abf1e28cc105 && \
  12. CFLAGS="-O3 -flto -march=native" ./autogen.sh --prefix="$MUSTACHE_C_HOME" && \
  13. make -j "$(nproc)" install
  14. ENV LD_LIBRARY_PATH="${MUSTACHE_C_HOME}/lib:$LD_LIBRARY_PATH"
  15. ### Install yajl
  16. ENV YAJL_VERSION=2.1.0
  17. ENV YAJL_ARCHIVE="${YAJL_VERSION}.tar.gz"
  18. ENV YAJL_HOME=/yajl
  19. RUN wget -qO "$YAJL_ARCHIVE" "https://github.com/lloyd/yajl/archive/$YAJL_ARCHIVE" && \
  20. tar xf "$YAJL_ARCHIVE" && \
  21. cd "yajl-$YAJL_VERSION" && \
  22. ./configure -p "$YAJL_HOME" && \
  23. make -j "$(nproc)" install
  24. ENV LD_LIBRARY_PATH="${YAJL_HOME}/lib:$LD_LIBRARY_PATH"
  25. ### Install h2o
  26. ENV H2O_VERSION=2.2.4
  27. ENV H2O_ARCHIVE="v${H2O_VERSION}.tar.gz"
  28. ENV H2O_HOME=/h2o
  29. RUN wget -qO "$H2O_ARCHIVE" "https://github.com/h2o/h2o/archive/$H2O_ARCHIVE" && \
  30. tar xf "$H2O_ARCHIVE" && \
  31. cd "h2o-$H2O_VERSION" && \
  32. cmake -DCMAKE_INSTALL_PREFIX="$H2O_HOME" -DCMAKE_C_FLAGS="-flto -march=native" \
  33. -DCMAKE_AR=/usr/bin/gcc-ar -DCMAKE_RANLIB=/usr/bin/gcc-ranlib && \
  34. make -j "$(nproc)" install
  35. CMD ["./start-servers.sh"]