h2o.dockerfile 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. ARG UBUNTU_VERSION=22.04
  2. ARG H2O_APP_PREFIX=/opt/h2o_app
  3. FROM "ubuntu:${UBUNTU_VERSION}" AS compile
  4. ARG DEBIAN_FRONTEND=noninteractive
  5. RUN apt-get -yqq update && \
  6. apt-get -yqq install \
  7. autoconf \
  8. bison \
  9. cmake \
  10. curl \
  11. flex \
  12. g++ \
  13. libbrotli-dev \
  14. libcap-dev \
  15. libnuma-dev \
  16. libpq-dev \
  17. libssl-dev \
  18. libtool \
  19. libuv1-dev \
  20. libwslay-dev \
  21. libyajl-dev \
  22. libz-dev \
  23. make \
  24. ninja-build \
  25. pkg-config \
  26. systemtap-sdt-dev
  27. ARG H2O_VERSION=13ba727ad12dfb2338165d2bcfb2136457e33c8a
  28. WORKDIR /tmp/h2o-build
  29. RUN curl -LSs "https://github.com/h2o/h2o/archive/${H2O_VERSION}.tar.gz" | \
  30. tar --strip-components=1 -xz && \
  31. cmake \
  32. -B build \
  33. -DCMAKE_AR=/usr/bin/gcc-ar \
  34. -DCMAKE_C_FLAGS="-flto -march=native -mtune=native" \
  35. -DCMAKE_RANLIB=/usr/bin/gcc-ranlib \
  36. -G Ninja \
  37. -S . && \
  38. cmake --build build -j && \
  39. cmake --install build && \
  40. cp -a deps/picotls/include/picotls* deps/quicly/include/quicly* /usr/local/include
  41. ARG MUSTACHE_C_REVISION=c1948c599edfe48c6099ed70ab1d5911d8c3ddc8
  42. WORKDIR /tmp/mustache-c-build
  43. RUN curl -LSs "https://github.com/x86-64/mustache-c/archive/${MUSTACHE_C_REVISION}.tar.gz" | \
  44. tar --strip-components=1 -xz && \
  45. CFLAGS="-flto -march=native -mtune=native -O3" ./autogen.sh && \
  46. make -j "$(nproc)" install
  47. ARG H2O_APP_PREFIX
  48. WORKDIR /tmp/build
  49. COPY CMakeLists.txt ../
  50. COPY src ../src/
  51. COPY template ../template/
  52. RUN cmake \
  53. -DCMAKE_BUILD_TYPE=Release \
  54. -DCMAKE_C_FLAGS="-march=native -mtune=native" \
  55. -DCMAKE_INSTALL_PREFIX="${H2O_APP_PREFIX}" \
  56. -G Ninja \
  57. -S .. && \
  58. cmake --build . -j && \
  59. cmake --install .
  60. FROM "ubuntu:${UBUNTU_VERSION}"
  61. ARG DEBIAN_FRONTEND=noninteractive
  62. RUN apt-get -yqq update && \
  63. apt-get -yqq install \
  64. libnuma1 \
  65. libpq5 \
  66. libyajl2
  67. ARG H2O_APP_PREFIX
  68. COPY --from=compile "${H2O_APP_PREFIX}" "${H2O_APP_PREFIX}/"
  69. COPY --from=compile /usr/local/lib/libmustache_c.so "${H2O_APP_PREFIX}/lib/"
  70. ENV LD_LIBRARY_PATH="${H2O_APP_PREFIX}/lib"
  71. EXPOSE 8080
  72. ARG BENCHMARK_ENV
  73. ARG TFB_TEST_DATABASE
  74. ARG TFB_TEST_NAME
  75. CMD ["taskset", \
  76. "-c", \
  77. "0", \
  78. "/opt/h2o_app/bin/h2o_app", \
  79. "-a20", \
  80. "-d", \
  81. "dbname=hello_world host=tfb-database password=benchmarkdbpass sslmode=disable user=benchmarkdbuser", \
  82. "-e64", \
  83. "-f", \
  84. "/opt/h2o_app/share/h2o_app/template", \
  85. "-m1"]