h2o.dockerfile 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. ARG UBUNTU_VERSION=24.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. ca-certificates \
  8. curl \
  9. lsb-release && \
  10. install -dm755 /usr/share/postgresql-common/pgdg && \
  11. curl --fail -LSso /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc \
  12. "https://www.postgresql.org/media/keys/ACCC4CF8.asc" && \
  13. sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
  14. https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > \
  15. /etc/apt/sources.list.d/pgdg.list' && \
  16. apt-get -yqq update && \
  17. apt-get -yqq install \
  18. autoconf \
  19. bison \
  20. cmake \
  21. flex \
  22. g++ \
  23. libbpfcc-dev \
  24. libbrotli-dev \
  25. libcap-dev \
  26. libnuma-dev \
  27. libpq-dev \
  28. libssl-dev \
  29. libtool \
  30. libuv1-dev \
  31. libwslay-dev \
  32. libyajl-dev \
  33. libz-dev \
  34. llvm-dev \
  35. make \
  36. ninja-build \
  37. pkg-config \
  38. rsync \
  39. ruby \
  40. systemtap-sdt-dev
  41. ARG H2O_VERSION=c54c63285b52421da2782f028022647fc2ea3dd1
  42. WORKDIR /tmp/h2o-build
  43. RUN curl -LSs "https://github.com/h2o/h2o/archive/${H2O_VERSION}.tar.gz" | \
  44. tar --strip-components=1 -xz && \
  45. cmake \
  46. -B build \
  47. -DCMAKE_AR=/usr/bin/gcc-ar \
  48. -DCMAKE_C_FLAGS="-flto -march=native -mtune=native" \
  49. -DCMAKE_RANLIB=/usr/bin/gcc-ranlib \
  50. -DWITH_MRUBY=on \
  51. -G Ninja \
  52. -S . && \
  53. cmake --build build -j && \
  54. cmake --install build
  55. ARG MUSTACHE_C_REVISION=7fe52392879d0188c172d94bb4fde7c513d6b929
  56. WORKDIR /tmp/mustache-c-build
  57. RUN curl -LSs "https://github.com/x86-64/mustache-c/archive/${MUSTACHE_C_REVISION}.tar.gz" | \
  58. tar --strip-components=1 -xz && \
  59. CFLAGS="-flto -march=native -mtune=native -O3" ./autogen.sh && \
  60. make -j "$(nproc)" install
  61. ARG H2O_APP_PREFIX
  62. WORKDIR /tmp/build
  63. COPY CMakeLists.txt ../
  64. COPY src ../src/
  65. COPY template ../template/
  66. RUN cmake \
  67. -DCMAKE_BUILD_TYPE=Release \
  68. -DCMAKE_C_FLAGS="-march=native -mtune=native" \
  69. -DCMAKE_INSTALL_PREFIX="${H2O_APP_PREFIX}" \
  70. -G Ninja \
  71. -S .. && \
  72. cmake --build . -j && \
  73. cmake --install .
  74. FROM "ubuntu:${UBUNTU_VERSION}"
  75. ARG POSTGRESQL_VERSION=17
  76. ARG DEBIAN_FRONTEND=noninteractive
  77. RUN apt-get -yqq update && \
  78. apt-get -yqq install \
  79. ca-certificates \
  80. curl \
  81. lsb-release && \
  82. install -dm755 /usr/share/postgresql-common/pgdg && \
  83. curl --fail -LSso /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc \
  84. "https://www.postgresql.org/media/keys/ACCC4CF8.asc" && \
  85. sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
  86. https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > \
  87. /etc/apt/sources.list.d/pgdg.list' && \
  88. apt-get -yqq update && \
  89. apt-get -yqq install \
  90. libnuma1 \
  91. libyajl2 \
  92. "postgresql-client-${POSTGRESQL_VERSION}"
  93. ARG H2O_APP_PREFIX
  94. COPY --from=compile "${H2O_APP_PREFIX}" "${H2O_APP_PREFIX}/"
  95. COPY --from=compile /usr/local/lib/libmustache_c.so "${H2O_APP_PREFIX}/lib/"
  96. ENV LD_LIBRARY_PATH="${H2O_APP_PREFIX}/lib"
  97. EXPOSE 8080
  98. ARG BENCHMARK_ENV
  99. ARG TFB_TEST_DATABASE
  100. ARG TFB_TEST_NAME
  101. CMD ["taskset", \
  102. "-c", \
  103. "0", \
  104. "/opt/h2o_app/bin/h2o_app", \
  105. "-a20", \
  106. "-d", \
  107. "dbname=hello_world host=tfb-database password=benchmarkdbpass sslmode=disable user=benchmarkdbuser", \
  108. "-f", \
  109. "/opt/h2o_app/share/h2o_app/template", \
  110. "-m1"]