cutelyst-nginx-pg.dockerfile 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. FROM ubuntu:16.04
  2. RUN apt update
  3. RUN apt install -yqq software-properties-common build-essential curl locales wget unzip git \
  4. libmysqlclient-dev libpq-dev \
  5. libpcre3 libpcre3-dev \
  6. libssl-dev libcurl4-openssl-dev \
  7. zlib1g-dev \
  8. libreadline6-dev \
  9. libbz2-dev \
  10. libxslt-dev libgdbm-dev ncurses-dev \
  11. libffi-dev libtool bison libevent-dev \
  12. libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 \
  13. liborc-0.4-0 libgnutls-dev \
  14. libjson0-dev libmcrypt-dev libicu-dev \
  15. re2c libnuma-dev
  16. RUN locale-gen en_US.UTF-8
  17. ENV LANG en_US.UTF-8
  18. ENV LANGUAGE en_US:en
  19. ENV LC_ALL en_US.UTF-8
  20. ENV DEBIAN_FRONTEND noninteractive
  21. ENV QT_VERSION_MM 59
  22. ENV QT_VERSION_FULL 594-xenial
  23. ENV CMAKE_PREFIX_PATH /opt/qt${QT_VERSION_MM}
  24. ENV LD_LIBRARY_PATH ${CMAKE_PREFIX_PATH}/lib
  25. ENV QT_VERSION_MM 59
  26. ENV QT_VERSION_FULL 594-xenial
  27. ENV CMAKE_PREFIX_PATH /opt/qt${QT_VERSION_MM}
  28. ENV LD_LIBRARY_PATH ${CMAKE_PREFIX_PATH}/lib
  29. RUN apt-add-repository --yes ppa:beineri/opt-qt$QT_VERSION_FULL && \
  30. apt update -qq && \
  31. apt install -yqq \
  32. cmake \
  33. clearsilver-dev \
  34. libgrantlee5-dev \
  35. libjemalloc-dev \
  36. qt${QT_VERSION_MM}base \
  37. qt${QT_VERSION_MM}script \
  38. qt${QT_VERSION_MM}tools
  39. RUN apt install -yqq uwsgi uwsgi uuid-dev libcap-dev libzmq3-dev
  40. ENV CUTELYST_VER 2.0.1
  41. RUN wget -q https://github.com/cutelyst/cutelyst/archive/v$CUTELYST_VER.tar.gz -O cutelyst-$CUTELYST_VER.tar.gz && \
  42. tar zxf cutelyst-$CUTELYST_VER.tar.gz && \
  43. cd cutelyst-$CUTELYST_VER && mkdir build && cd build && \
  44. cmake .. \
  45. -DCMAKE_BUILD_TYPE=Release \
  46. -DCMAKE_INSTALL_PREFIX=/usr \
  47. -DPLUGIN_UWSGI=on \
  48. -DPLUGIN_VIEW_GRANTLEE=on \
  49. -DUSE_JEMALLOC=on && \
  50. make && make install
  51. ENV TROOT /cutelyst-benchmark-app
  52. ENV LD_LIBRARY_PATH ${CMAKE_PREFIX_PATH}/lib
  53. ENV CUTELYST_APP ${TROOT}/build/libcutelyst_benchmarks.so
  54. COPY src ${TROOT}/
  55. COPY config/config.ini /cutelyst.ini
  56. COPY config/config_socket.ini /cutelyst_socket.ini
  57. COPY nginx.conf /nginx.conf
  58. RUN sed -i "s|DatabaseHostName=.*|DatabaseHostName=tfb-database|g" /cutelyst.ini
  59. RUN sed -i "s|DatabaseHostName=.*|DatabaseHostName=tfb-database|g" /cutelyst_socket.ini
  60. RUN cd ${TROOT} && \
  61. mkdir -p build && \
  62. cd build && \
  63. cmake ${TROOT} \
  64. -DCMAKE_BUILD_TYPE=Release && \
  65. make
  66. RUN apt install -yqq nginx
  67. RUN sed -i "s|SendDate=.*|SendDate=false|g" /cutelyst_socket.ini
  68. ENV C_THREADS 1
  69. ENV CPU_AFFINITY 1
  70. ENV DRIVER QPSQL
  71. RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst_socket.ini
  72. CMD nginx -c /nginx.conf && uwsgi \
  73. --ini /cutelyst_socket.ini \
  74. --plugin /usr/lib/uwsgi/plugins/cutelyst2_plugin.so \
  75. --cutelyst-app ${CUTELYST_APP} \
  76. --processes=$(nproc) \
  77. --threads=${C_THREADS} \
  78. --cpu-affinity=${CPU_AFFINITY} \
  79. --reuse-port