FROM gcc:13
RUN apt-get update && \
apt-get install -y --no-install-recommends \
cmake \
make \
gcc \
g++ \
git \
libcurl4 \
libcurl4-openssl-dev \
nlohmann-json3-dev \
libevent-dev \
python3 \
python3-pip \
gcovr \
&& rm -rf /var/lib/apt/lists/* \
&& pip3 install --break-system-packages junit2html
RUN curl -L https://github.com/pboettch/json-schema-validator/archive/refs/tags/2.3.0.tar.gz \
-o /tmp/json-schema-validator.tar.gz \
&& tar -xzf /tmp/json-schema-validator.tar.gz -C /tmp \
&& cd /tmp/json-schema-validator-2.3.0 \
&& mkdir build && cd build \
&& cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_SHARED_LIBS=ON \
-DJSON_VALIDATOR_BUILD_EXAMPLES=OFF \
-DJSON_VALIDATOR_BUILD_TESTS=OFF \
&& make -j$(nproc) \
&& make install \
&& ldconfig \
&& rm -rf /tmp/*
RUN curl -L https://github.com/nodejs/http-parser/archive/refs/tags/v2.9.4.tar.gz \
-o /tmp/http_parser.tar.gz \
&& tar -xzf /tmp/http_parser.tar.gz -C /tmp \
&& cd /tmp/http-parser-2.9.4 \
&& make package \
&& make install \
&& ldconfig \
&& rm -rf /tmp/*
RUN curl -L https://github.com/google/googletest/archive/refs/tags/v1.16.0.tar.gz \
-o /tmp/gtest.tar.gz \
&& tar -xzf /tmp/gtest.tar.gz -C /tmp \
&& cd /tmp/googletest-1.16.0 \
&& cmake -B build -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=/usr/local \
&& cmake --build build --target install -j$(nproc) \
&& rm -rf /tmp/*
RUN curl -L https://github.com/yhirose/cpp-httplib/archive/refs/tags/v0.18.7.tar.gz \
-o /tmp/httplib.tar.gz \
&& tar -xzf /tmp/httplib.tar.gz -C /tmp \
&& cp /tmp/cpp-httplib-0.18.7/httplib.h /usr/local/include/ \
&& rm -rf /tmp/*
WORKDIR /workspace
CMD ["/bin/bash"]