php-h2o.dockerfile 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. ARG UBUNTU_VERSION=22.04
  2. ARG H2O_PREFIX=/opt/h2o
  3. FROM "ubuntu:${UBUNTU_VERSION}" AS compile
  4. ARG H2O_VERSION=13ba727ad12dfb2338165d2bcfb2136457e33c8a
  5. ARG DEBIAN_FRONTEND=noninteractive
  6. ARG H2O_PREFIX
  7. WORKDIR /tmp/h2o-build
  8. RUN apt-get -yqq update && \
  9. apt-get -yqq install \
  10. cmake \
  11. curl \
  12. g++ \
  13. libbrotli-dev \
  14. libcap-dev \
  15. libssl-dev \
  16. libtool \
  17. libuv1-dev \
  18. libwslay-dev \
  19. libz-dev \
  20. ninja-build \
  21. pkg-config \
  22. systemtap-sdt-dev && \
  23. curl -LSs "https://github.com/h2o/h2o/archive/${H2O_VERSION}.tar.gz" | \
  24. tar --strip-components=1 -xz && \
  25. cmake \
  26. -B build \
  27. -DCMAKE_AR=/usr/bin/gcc-ar \
  28. -DCMAKE_C_FLAGS="-flto -march=native -mtune=native" \
  29. -DCMAKE_INSTALL_PREFIX="${H2O_PREFIX}" \
  30. -DCMAKE_RANLIB=/usr/bin/gcc-ranlib \
  31. -G Ninja \
  32. -S . && \
  33. cmake --build build -j && \
  34. cmake --install build
  35. FROM "ubuntu:${UBUNTU_VERSION}"
  36. ARG PHP_VERSION=8.2
  37. ENV TZ=America/Los_Angeles
  38. ARG DEBIAN_FRONTEND=noninteractive
  39. RUN apt-get -yqq update && \
  40. apt-get -yqq install \
  41. apt-utils \
  42. software-properties-common && \
  43. LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php && \
  44. apt-get -yqq update && \
  45. apt-get -yqq install \
  46. "php${PHP_VERSION}" \
  47. "php${PHP_VERSION}-cli" \
  48. "php${PHP_VERSION}-common" \
  49. "php${PHP_VERSION}-fpm" \
  50. "php${PHP_VERSION}-mysql"
  51. ARG H2O_PREFIX
  52. COPY --from=compile "${H2O_PREFIX}/bin/h2o" "${H2O_PREFIX}/bin/"
  53. COPY --from=compile "${H2O_PREFIX}/share" "${H2O_PREFIX}/share/"
  54. COPY deploy/conf "/etc/php/${PHP_VERSION}/fpm/"
  55. RUN if [ $(nproc) = 2 ]; then sed -i "s|pm.max_children = 1024|pm.max_children = 512|g" \
  56. "/etc/php/${PHP_VERSION}/fpm/php-fpm.conf"; fi;
  57. COPY deploy/h2o.conf "${H2O_PREFIX}/etc/"
  58. COPY *.php /var/www/
  59. EXPOSE 8080
  60. ARG BENCHMARK_ENV
  61. ARG TFB_TEST_DATABASE
  62. ARG TFB_TEST_NAME
  63. CMD sed -i "s/num-threads: x/num-threads: $((2 * $(nproc)))/g" /opt/h2o/etc/h2o.conf && \
  64. service php8.2-fpm start && \
  65. /opt/h2o/bin/h2o -c /opt/h2o/etc/h2o.conf