|
@@ -1,39 +1,73 @@
|
|
|
-FROM ubuntu:22.04
|
|
|
+ARG UBUNTU_VERSION=22.04
|
|
|
|
|
|
-COPY ./ ./
|
|
|
+ARG H2O_PREFIX=/opt/h2o
|
|
|
|
|
|
-ENV tz=America/Los_Angeles
|
|
|
-ENV DEBIAN_FRONTEND noninteractive
|
|
|
+FROM "ubuntu:${UBUNTU_VERSION}" AS compile
|
|
|
|
|
|
-RUN apt-get update > /dev/null && \
|
|
|
- apt-get install -yqq autoconf bison cmake curl file flex g++ git libnuma-dev libpq-dev libssl-dev \
|
|
|
- libtool libyajl-dev libz-dev make wget software-properties-common > /dev/null
|
|
|
+ARG H2O_VERSION=9ab3feb4d7429ddda52a3cf84bd6da0e890bd52a
|
|
|
|
|
|
-### Install php
|
|
|
-RUN LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php > /dev/null
|
|
|
-RUN apt-get update -yqq > /dev/null && \
|
|
|
- apt-get install -yqq php8.2 php8.2-common php8.2-cli php8.2-fpm php8.2-mysql > /dev/null
|
|
|
+ARG DEBIAN_FRONTEND=noninteractive
|
|
|
+ARG H2O_PREFIX
|
|
|
+WORKDIR /tmp/h2o-build
|
|
|
+RUN apt-get -yqq update && \
|
|
|
+ apt-get -yqq install \
|
|
|
+ cmake \
|
|
|
+ curl \
|
|
|
+ g++ \
|
|
|
+ libbrotli-dev \
|
|
|
+ libcap-dev \
|
|
|
+ libssl-dev \
|
|
|
+ libtool \
|
|
|
+ libuv1-dev \
|
|
|
+ libwslay-dev \
|
|
|
+ libz-dev \
|
|
|
+ ninja-build \
|
|
|
+ pkg-config \
|
|
|
+ systemtap-sdt-dev && \
|
|
|
+ curl -LSs "https://github.com/h2o/h2o/archive/${H2O_VERSION}.tar.gz" | \
|
|
|
+ tar --strip-components=1 -xz && \
|
|
|
+ cmake \
|
|
|
+ -B build \
|
|
|
+ -DCMAKE_AR=/usr/bin/gcc-ar \
|
|
|
+ -DCMAKE_C_FLAGS="-flto -march=native -mtune=native" \
|
|
|
+ -DCMAKE_INSTALL_PREFIX="${H2O_PREFIX}" \
|
|
|
+ -DCMAKE_RANLIB=/usr/bin/gcc-ranlib \
|
|
|
+ -G Ninja \
|
|
|
+ -S . && \
|
|
|
+ cmake --build build -j && \
|
|
|
+ cmake --install build
|
|
|
|
|
|
-COPY deploy/conf/* /etc/php/8.2/fpm/
|
|
|
+FROM "ubuntu:${UBUNTU_VERSION}"
|
|
|
|
|
|
-RUN if [ $(nproc) = 2 ]; then sed -i "s|pm.max_children = 1024|pm.max_children = 512|g" /etc/php/8.2/fpm/php-fpm.conf ; fi;
|
|
|
+ARG PHP_VERSION=8.2
|
|
|
|
|
|
-### Install h2o
|
|
|
-
|
|
|
-ENV H2O_VERSION=2.2.6
|
|
|
-ENV H2O_ARCHIVE="v${H2O_VERSION}.tar.gz"
|
|
|
-ENV H2O_HOME=/h2o
|
|
|
-
|
|
|
-RUN wget -qO "$H2O_ARCHIVE" "https://github.com/h2o/h2o/archive/$H2O_ARCHIVE" && \
|
|
|
- tar xf "$H2O_ARCHIVE" && \
|
|
|
- cd "h2o-$H2O_VERSION" && \
|
|
|
- cmake -DCMAKE_INSTALL_PREFIX="$H2O_HOME" -DCMAKE_C_FLAGS="-flto -march=native" \
|
|
|
- -DCMAKE_AR=/usr/bin/gcc-ar -DCMAKE_RANLIB=/usr/bin/gcc-ranlib -DWITH_MRUBY=off . && \
|
|
|
- make -j "$(nproc)" install > /dev/null
|
|
|
+ENV TZ=America/Los_Angeles
|
|
|
|
|
|
+ARG DEBIAN_FRONTEND=noninteractive
|
|
|
+RUN apt-get -yqq update && \
|
|
|
+ apt-get -yqq install \
|
|
|
+ apt-utils \
|
|
|
+ software-properties-common && \
|
|
|
+ LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php && \
|
|
|
+ apt-get -yqq update && \
|
|
|
+ apt-get -yqq install \
|
|
|
+ "php${PHP_VERSION}" \
|
|
|
+ "php${PHP_VERSION}-cli" \
|
|
|
+ "php${PHP_VERSION}-common" \
|
|
|
+ "php${PHP_VERSION}-fpm" \
|
|
|
+ "php${PHP_VERSION}-mysql"
|
|
|
+ARG H2O_PREFIX
|
|
|
+COPY --from=compile "${H2O_PREFIX}" "${H2O_PREFIX}/"
|
|
|
+COPY deploy/conf "/etc/php/${PHP_VERSION}/fpm/"
|
|
|
+RUN if [ $(nproc) = 2 ]; then sed -i "s|pm.max_children = 1024|pm.max_children = 512|g" \
|
|
|
+ "/etc/php/${PHP_VERSION}/fpm/php-fpm.conf"; fi;
|
|
|
+COPY deploy/h2o.conf "${H2O_PREFIX}/etc/"
|
|
|
+COPY *.php /var/www/
|
|
|
EXPOSE 8080
|
|
|
+ARG BENCHMARK_ENV
|
|
|
+ARG TFB_TEST_DATABASE
|
|
|
+ARG TFB_TEST_NAME
|
|
|
|
|
|
-CMD export WORKERS=$(( 2 * $(nproc) )) && \
|
|
|
- sed -i "s/num-threads: x/num-threads: $WORKERS/g" /deploy/h2o.conf && \
|
|
|
+CMD sed -i "s/num-threads: x/num-threads: $((2 * $(nproc)))/g" /opt/h2o/etc/h2o.conf && \
|
|
|
service php8.2-fpm start && \
|
|
|
- /h2o/bin/h2o -c /deploy/h2o.conf
|
|
|
+ /opt/h2o/bin/h2o -c /opt/h2o/etc/h2o.conf
|