| 1 | FROM nginx:1.23.2
|
|---|
| 2 |
|
|---|
| 3 | ENV NGINX_VERSION 1.23.2
|
|---|
| 4 | ENV DEBIAN_FRONTEND=noninteractive
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 | ENV ASAN_OPTIONS=detect_leaks=0
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 | RUN apt update && \
|
|---|
| 11 | apt install -y \
|
|---|
| 12 | build-essential \
|
|---|
| 13 | curl \
|
|---|
| 14 | git \
|
|---|
| 15 | libpcre++-dev \
|
|---|
| 16 | libc-ares-dev \
|
|---|
| 17 | zlib1g-dev \
|
|---|
| 18 | libgrpc-dev \
|
|---|
| 19 | libprotobuf-dev \
|
|---|
| 20 | protobuf-compiler \
|
|---|
| 21 | libbrotli-dev \
|
|---|
| 22 | cmake \
|
|---|
| 23 | gcc \
|
|---|
| 24 | libpcre3-dev \
|
|---|
| 25 | libssl-dev \
|
|---|
| 26 | libgeoip-dev \
|
|---|
| 27 | linux-headers-generic \
|
|---|
| 28 | make \
|
|---|
| 29 | unzip \
|
|---|
| 30 | libre2-dev \
|
|---|
| 31 | pkg-config \
|
|---|
| 32 | libgd-dev \
|
|---|
| 33 | libxml2-dev \
|
|---|
| 34 | libgcc-10-dev
|
|---|
| 35 |
|
|---|
| 36 | RUN curl http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz -o /tmp/nginx-${NGINX_VERSION}.tar.gz && \
|
|---|
| 37 | cd /tmp && \
|
|---|
| 38 | tar xvzf nginx-${NGINX_VERSION}.tar.gz
|
|---|
| 39 |
|
|---|
| 40 | RUN mkdir -p /build/abseil-cpp && cd /build/abseil-cpp && \
|
|---|
| 41 | curl -sSL https://github.com/abseil/abseil-cpp/archive/refs/tags/20230125.3.tar.gz | tar -xzf - --strip=1 && \
|
|---|
| 42 | mkdir build && cd build && \
|
|---|
| 43 | cmake .. \
|
|---|
| 44 | -DCMAKE_BUILD_TYPE=Release \
|
|---|
| 45 | -DBUILD_TESTING=OFF \
|
|---|
| 46 | -DBUILD_SHARED_LIBS=yes && \
|
|---|
| 47 | make -j64 install && \
|
|---|
| 48 | ldconfig
|
|---|
| 49 |
|
|---|
| 50 | RUN mkdir -p /build/protobuf && cd /build/protobuf && \
|
|---|
| 51 | curl -sSL https://github.com/google/protobuf/archive/v3.17.3.tar.gz | tar -xzf - --strip=1 && \
|
|---|
| 52 | mkdir build && cd build && \
|
|---|
| 53 | cmake ../cmake \
|
|---|
| 54 | -DCMAKE_BUILD_TYPE=Release \
|
|---|
| 55 | -DBUILD_SHARED_LIBS=yes \
|
|---|
| 56 | -Dprotobuf_BUILD_TESTS=OFF && \
|
|---|
| 57 | make -j64 install && \
|
|---|
| 58 | ldconfig
|
|---|
| 59 |
|
|---|
| 60 | RUN mkdir -p /build/grpc && cd /build/grpc && \
|
|---|
| 61 | curl -sSL https://github.com/grpc/grpc/archive/refs/tags/v1.47.0.tar.gz| tar -xzf - --strip=1 && \
|
|---|
| 62 | mkdir build && cd build && \
|
|---|
| 63 | mkdir install && \
|
|---|
| 64 | mkdir ldconfig && \
|
|---|
| 65 | cmake .. \
|
|---|
| 66 | -DCMAKE_BUILD_TYPE=Release \
|
|---|
| 67 | -DgRPC_INSTALL=ON \
|
|---|
| 68 | -DgRPC_BUILD_TESTS=OFF \
|
|---|
| 69 | -DgRPC_ABSL_PROVIDER=package \
|
|---|
| 70 | -DgRPC_CARES_PROVIDER=package \
|
|---|
| 71 | -DgRPC_PROTOBUF_PROVIDER=package \
|
|---|
| 72 | -DgRPC_RE2_PROVIDER=package \
|
|---|
| 73 | -DgRPC_SSL_PROVIDER=package \
|
|---|
| 74 | -DgRPC_ZLIB_PROVIDER=package && \
|
|---|
| 75 | make -j64 install && \
|
|---|
| 76 | ldconfig
|
|---|
| 77 |
|
|---|
| 78 | # Here was some inner library build
|
|---|
| 79 |
|
|---|
| 80 | ARG GRPC_CLI_MODULE_CONFIG_DEPS="\
|
|---|
| 81 | --add-dynamic-module=/tmp/some-module"
|
|---|
| 82 |
|
|---|
| 83 | RUN CONFARGS=$(nginx -V 2>&1 | sed -n -e 's/^.*arguments: //p') \
|
|---|
| 84 | cd /tmp/nginx-${NGINX_VERSION} && \
|
|---|
| 85 | ./configure --with-cc-opt='-fsanitize=address -DNGX_DEBUG_PALLOC=1' --with-ld-opt=-fsanitize=address --with-compat $CONFARGS $GRPC_CLI_MODULE_CONFIG_DEPS && \
|
|---|
| 86 | make && make install
|
|---|
| 87 |
|
|---|
| 88 | RUN cp /usr/local/nginx/modules/ngx_some_module.so /etc/nginx/modules/ngx_some_module.so
|
|---|
| 89 | RUN rm /etc/nginx/conf.d/default.conf
|
|---|
| 90 |
|
|---|
| 91 | RUN export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib"
|
|---|
| 92 | RUN ldconfig
|
|---|
| 93 |
|
|---|
| 94 | RUN ulimit -c unlimited
|
|---|
| 95 | RUN mkdir /coredump
|
|---|
| 96 | RUN chown nginx:nginx /coredump
|
|---|
| 97 | RUN chmod 1777 /coredump
|
|---|
| 98 |
|
|---|
| 99 | COPY conf/index.html /etc/nginx/html/index.html
|
|---|
| 100 | COPY ./conf/nginx.conf /etc/nginx/nginx.conf
|
|---|
| 101 |
|
|---|
| 102 | EXPOSE 80
|
|---|
| 103 | STOPSIGNAL SIGTERM
|
|---|
| 104 | CMD ["nginx", "-g", "daemon off;"] |
|---|