|
@@ -1,50 +1,92 @@
|
|
|
-FROM ubuntu:22.04
|
|
|
+ARG UBUNTU_VERSION=22.04
|
|
|
|
|
|
-WORKDIR /h2o_app_src
|
|
|
-COPY ./ ./
|
|
|
+ARG H2O_APP_PREFIX=/opt/h2o_app
|
|
|
+
|
|
|
+FROM "ubuntu:${UBUNTU_VERSION}" AS compile
|
|
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
RUN apt-get -yqq update && \
|
|
|
- apt-get -yqq install autoconf bison cmake curl file flex g++ git libnuma-dev libpq-dev \
|
|
|
- libssl-dev libtool libyajl-dev libz-dev make ninja-build wget
|
|
|
-
|
|
|
-### Install mustache-c
|
|
|
-
|
|
|
-ARG MUSTACHE_C_REVISION=c1948c599edfe48c6099ed70ab1d5911d8c3ddc8
|
|
|
+ apt-get -yqq install \
|
|
|
+ autoconf \
|
|
|
+ bison \
|
|
|
+ cmake \
|
|
|
+ curl \
|
|
|
+ flex \
|
|
|
+ g++ \
|
|
|
+ libnuma-dev \
|
|
|
+ libpq-dev \
|
|
|
+ libssl-dev \
|
|
|
+ libtool \
|
|
|
+ libuv1-dev \
|
|
|
+ libwslay-dev \
|
|
|
+ libyajl-dev \
|
|
|
+ libz-dev \
|
|
|
+ make \
|
|
|
+ ninja-build \
|
|
|
+ pkg-config
|
|
|
|
|
|
-ARG MUSTACHE_C_BUILD_DIR=mustache-c-build
|
|
|
-ENV MUSTACHE_C_PREFIX=/opt/mustache-c
|
|
|
-
|
|
|
-RUN mkdir -p "$MUSTACHE_C_BUILD_DIR" && \
|
|
|
- cd "$MUSTACHE_C_BUILD_DIR" && \
|
|
|
- wget -qO - "https://github.com/x86-64/mustache-c/archive/${MUSTACHE_C_REVISION}.tar.gz" | \
|
|
|
- tar xz --strip-components=1 && \
|
|
|
- CFLAGS="-O3 -flto -march=native -mtune=native" ./autogen.sh --prefix="$MUSTACHE_C_PREFIX" && \
|
|
|
- make -j "$(nproc)" install && \
|
|
|
- cd .. && \
|
|
|
- rm -rf "$MUSTACHE_C_BUILD_DIR"
|
|
|
+ARG H2O_VERSION=v2.2.6
|
|
|
|
|
|
-### Install h2o
|
|
|
+WORKDIR /tmp/h2o-build
|
|
|
+RUN 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_RANLIB=/usr/bin/gcc-ranlib \
|
|
|
+ -G Ninja \
|
|
|
+ -S . && \
|
|
|
+ cmake --build build -j && \
|
|
|
+ cmake --install build
|
|
|
|
|
|
-ARG H2O_VERSION=v2.2.6
|
|
|
+ARG MUSTACHE_C_REVISION=c1948c599edfe48c6099ed70ab1d5911d8c3ddc8
|
|
|
|
|
|
-ARG H2O_BUILD_DIR=h2o-build
|
|
|
-ENV H2O_PREFIX=/opt/h2o
|
|
|
+WORKDIR /tmp/mustache-c-build
|
|
|
+RUN curl -LSs "https://github.com/x86-64/mustache-c/archive/${MUSTACHE_C_REVISION}.tar.gz" | \
|
|
|
+ tar --strip-components=1 -xz && \
|
|
|
+ CFLAGS="-flto -march=native -mtune=native -O3" ./autogen.sh && \
|
|
|
+ make -j "$(nproc)" install
|
|
|
|
|
|
-RUN mkdir -p "${H2O_BUILD_DIR}/build" && \
|
|
|
- cd "$H2O_BUILD_DIR" && \
|
|
|
- wget -qO - "https://github.com/h2o/h2o/archive/${H2O_VERSION}.tar.gz" | \
|
|
|
- tar xz --strip-components=1 && \
|
|
|
- cd build && \
|
|
|
- cmake -DCMAKE_INSTALL_PREFIX="$H2O_PREFIX" -DCMAKE_C_FLAGS="-flto -march=native -mtune=native" \
|
|
|
- -DCMAKE_AR=/usr/bin/gcc-ar -DCMAKE_RANLIB=/usr/bin/gcc-ranlib -G Ninja .. && \
|
|
|
+ARG H2O_APP_PREFIX
|
|
|
+WORKDIR /tmp/build
|
|
|
+COPY CMakeLists.txt ../
|
|
|
+COPY src ../src/
|
|
|
+COPY template ../template/
|
|
|
+RUN cmake \
|
|
|
+ -DCMAKE_BUILD_TYPE=Release \
|
|
|
+ -DCMAKE_C_FLAGS="-march=native -mtune=native" \
|
|
|
+ -DCMAKE_INSTALL_PREFIX="${H2O_APP_PREFIX}" \
|
|
|
+ -G Ninja \
|
|
|
+ -S .. && \
|
|
|
cmake --build . -j && \
|
|
|
- cmake --install . && \
|
|
|
- cd ../.. && \
|
|
|
- rm -rf "$H2O_BUILD_DIR"
|
|
|
+ cmake --install .
|
|
|
|
|
|
-ARG BENCHMARK_ENV
|
|
|
-ENV BENCHMARK_ENV=$BENCHMARK_ENV
|
|
|
+FROM "ubuntu:${UBUNTU_VERSION}"
|
|
|
+
|
|
|
+ARG DEBIAN_FRONTEND=noninteractive
|
|
|
+RUN apt-get -yqq update && \
|
|
|
+ apt-get -yqq install \
|
|
|
+ libnuma1 \
|
|
|
+ libpq5 \
|
|
|
+ libyajl2
|
|
|
+ARG H2O_APP_PREFIX
|
|
|
+COPY --from=compile "${H2O_APP_PREFIX}" "${H2O_APP_PREFIX}/"
|
|
|
+COPY --from=compile /usr/local/lib/libmustache_c.so "${H2O_APP_PREFIX}/lib/"
|
|
|
+ENV LD_LIBRARY_PATH="${H2O_APP_PREFIX}/lib"
|
|
|
EXPOSE 8080
|
|
|
+ARG BENCHMARK_ENV
|
|
|
+ARG TFB_TEST_DATABASE
|
|
|
+ARG TFB_TEST_NAME
|
|
|
|
|
|
-CMD ["./h2o.sh"]
|
|
|
+CMD ["taskset", \
|
|
|
+ "-c", \
|
|
|
+ "0", \
|
|
|
+ "/opt/h2o_app/bin/h2o_app", \
|
|
|
+ "-a20", \
|
|
|
+ "-d", \
|
|
|
+ "dbname=hello_world host=tfb-database password=benchmarkdbpass sslmode=disable user=benchmarkdbuser", \
|
|
|
+ "-e64", \
|
|
|
+ "-f", \
|
|
|
+ "/opt/h2o_app/share/h2o_app/template", \
|
|
|
+ "-m1"]
|