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



# 下载并安装 nlohmann-json-schema-validator

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/*



# 下载并安装 http_parser v2.9.4

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/*



# 下载并安装 GoogleTest v1.16.0

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/*



# 下载 cpp-httplib v0.18.7

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"]