ulib-mongodb.dockerfile 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. FROM ubuntu:18.04
  2. COPY ./ ./
  3. RUN apt-get update -yqq && \
  4. apt-get install -yqq software-properties-common build-essential curl locales wget unzip git \
  5. libmysqlclient-dev libpq-dev \
  6. libpcre3 libpcre3-dev \
  7. libssl-dev libcurl4-openssl-dev \
  8. zlib1g-dev \
  9. libreadline6-dev \
  10. libbz2-dev \
  11. libxslt-dev libgdbm-dev ncurses-dev \
  12. libffi-dev libtool bison libevent-dev \
  13. liborc-0.4-0 \
  14. libmcrypt-dev libicu-dev \
  15. re2c libnuma-dev \
  16. postgresql-server-dev-all libcap2-bin && \
  17. add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
  18. apt-get update -yqq && \
  19. apt-get install -yqq gcc-8 g++-8
  20. RUN locale-gen en_US.UTF-8
  21. ENV LANG en_US.UTF-8
  22. ENV LANGUAGE en_US:en
  23. ENV LC_ALL en_US.UTF-8
  24. ENV DEBIAN_FRONTEND noninteractive
  25. ENV CC=gcc-8
  26. ENV CXX=g++-8
  27. ENV AR=gcc-ar-8
  28. ENV RANLIB=gcc-ranlib-8
  29. ENV IROOT=/install
  30. ENV ULIB_ROOT=$IROOT/ULib
  31. ENV ULIB_VERSION=2.4.2
  32. ENV ULIB_DOCUMENT_ROOT=$ULIB_ROOT/ULIB_DOCUMENT_ROOT
  33. WORKDIR $IROOT
  34. RUN wget -q https://github.com/mongodb/mongo-c-driver/releases/download/1.4.0/mongo-c-driver-1.4.0.tar.gz
  35. RUN tar xf mongo-c-driver-1.4.0.tar.gz
  36. RUN cd mongo-c-driver-1.4.0/ && \
  37. ./configure --prefix=${IROOT} --libdir=${IROOT} --disable-automatic-init-and-cleanup && \
  38. make && make install
  39. RUN mkdir -p $ULIB_DOCUMENT_ROOT
  40. RUN wget -q -O ULib-${ULIB_VERSION}.tar.gz https://github.com/stefanocasazza/ULib/archive/v${ULIB_VERSION}.tar.gz
  41. RUN tar xf ULib-${ULIB_VERSION}.tar.gz
  42. WORKDIR $IROOT/ULib-$ULIB_VERSION
  43. # AVOID "configure: error: newly created file is older than distributed files! Check your system clock"
  44. RUN cp /src/* src/ulib/net/server/plugin/usp
  45. RUN find . -exec touch {} \;
  46. RUN echo "userver {" >> $ULIB_ROOT/benchmark.cfg
  47. RUN echo "PORT 8080" >> $ULIB_ROOT/benchmark.cfg
  48. RUN echo "PREFORK_CHILD $(( 3 * $(nproc) / 2 ))" >> $ULIB_ROOT/benchmark.cfg
  49. RUN echo "TCP_LINGER_SET -2" >> $ULIB_ROOT/benchmark.cfg
  50. RUN echo "LISTEN_BACKLOG 256" >> $ULIB_ROOT/benchmark.cfg
  51. RUN echo "DOCUMENT_ROOT $ULIB_DOCUMENT_ROOT " >> $ULIB_ROOT/benchmark.cfg
  52. RUN echo "}" >> $ULIB_ROOT/benchmark.cfg
  53. RUN USP_FLAGS="-DAS_cpoll_cppsp_DO" \
  54. ./configure --prefix=$ULIB_ROOT \
  55. --disable-static --disable-examples \
  56. --without-ssl --disable-HCRS --without-pcre --without-expat \
  57. --without-libz --without-libuuid --disable-HPRS --without-magic --without-libares \
  58. --enable-static-server-plugin=http \
  59. --with-mongodb --with-mongodb-includes="-I$IROOT/include/libbson-1.0 -I$IROOT/include/libmongoc-1.0" --with-mongodb-ldflags="-L$IROOT"
  60. RUN make install && \
  61. cd examples/userver && make install && \
  62. cd ../../src/ulib/net/server/plugin/usp && \
  63. AM_LDFLAGS="-lFortune -lFortuneNoSql" make mfortune.la && \
  64. AM_LDFLAGS="-lWorld -lWorldNoSql" make mdb.la mquery.la mupdate.la && \
  65. cp .libs/mdb.so .libs/mquery.so .libs/mupdate.so .libs/mfortune.so $ULIB_DOCUMENT_ROOT
  66. ENV PATH=${ULIB_ROOT}/bin:${PATH}
  67. ADD ./ /ulib
  68. WORKDIR /ulib
  69. ENV MONGODB_HOST=tfb-database
  70. ENV UMEMPOOL="96,0,0,97,16417,-14,-20,-18,26"
  71. EXPOSE 8080
  72. CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
  73. $IROOT/ULib/bin/userver_tcp -c $IROOT/ULib/benchmark.cfg