Ticket #2588: Dockerfile_ubuntu

File Dockerfile_ubuntu, 2.8 KB (added by Ivan Shaverskyi, 2 years ago)
Line 
1FROM nginx:1.23.2
2
3ENV NGINX_VERSION 1.23.2
4ENV DEBIAN_FRONTEND=noninteractive
5
6
7ENV ASAN_OPTIONS=detect_leaks=0
8
9
10RUN 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
36RUN 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
40RUN 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
50RUN 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
60RUN 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
80ARG GRPC_CLI_MODULE_CONFIG_DEPS="\
81 --add-dynamic-module=/tmp/some-module"
82
83RUN 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
88RUN cp /usr/local/nginx/modules/ngx_some_module.so /etc/nginx/modules/ngx_some_module.so
89RUN rm /etc/nginx/conf.d/default.conf
90
91RUN export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib"
92RUN ldconfig
93
94RUN ulimit -c unlimited
95RUN mkdir /coredump
96RUN chown nginx:nginx /coredump
97RUN chmod 1777 /coredump
98
99COPY conf/index.html /etc/nginx/html/index.html
100COPY ./conf/nginx.conf /etc/nginx/nginx.conf
101
102EXPOSE 80
103STOPSIGNAL SIGTERM
104CMD ["nginx", "-g", "daemon off;"]