Dockerfile 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. FROM ubuntu:jammy
  2. ENV DEBIAN_FRONTEND noninteractive
  3. ENV DISTR jammy
  4. RUN apt-get -y update && apt-get install -y wget
  5. RUN wget https://repo.manticoresearch.com/manticore-dev-repo.noarch.deb && \
  6. dpkg -i manticore-dev-repo.noarch.deb && \
  7. apt-get update && apt-get install -y \
  8. manticore-tzdata \
  9. manticore-language-packs \
  10. libmysqlclient-dev \
  11. libexpat-dev \
  12. libpq-dev \
  13. unixodbc-dev \
  14. flex \
  15. bison \
  16. git \
  17. build-essential \
  18. libjemalloc-dev \
  19. libssl-dev \
  20. ca-certificates \
  21. ninja-build \
  22. lsb-release \
  23. software-properties-common \
  24. php \
  25. php-mysql \
  26. php-curl \
  27. php-xml \
  28. php-dompdf \
  29. python3 \
  30. ssh \
  31. mysql-server \
  32. xsltproc \
  33. openssl \
  34. python3-dev
  35. RUN cd / && wget https://dl.min.io/client/mc/release/linux-amd64/mc \
  36. && chmod +x mc && \
  37. mv mc /usr/local/bin/ && \
  38. mc update || [ $? -eq 1 ]
  39. # boost
  40. ARG boostminorver=75
  41. # boost*tar.gz originates from https://boostorg.jfrog.io/artifactory/main/release/1.${boostminorver}.0/source/boost_1_${boostminorver}_0.tar.gz
  42. RUN wget https://repo.manticoresearch.com/repository/misc/boost_1_${boostminorver}_0.tar.gz \
  43. && tar -zxf boost_1_${boostminorver}_0.tar.gz && rm boost_1_${boostminorver}_0.tar.gz \
  44. && cd boost_1_${boostminorver}_0 \
  45. && ./bootstrap.sh \
  46. && ./b2 install --with-context --with-system --with-filesystem \
  47. && cd .. && rm -rf boost_1_${boostminorver}_0
  48. # cmake
  49. ARG cmakever="3.26.3"
  50. RUN cd / \
  51. && wget https://github.com/Kitware/CMake/releases/download/v${cmakever}/cmake-${cmakever}-linux-$(uname -m).tar.gz \
  52. && tar -zxf cmake-${cmakever}-linux-$(uname -m).tar.gz \
  53. && rm cmake-${cmakever}-linux-$(uname -m).tar.gz \
  54. && export arch=$(uname -m)
  55. ENV PATH $PATH:/cmake-${cmakever}-linux-x86_64/bin:/cmake-${cmakever}-linux-aarch64/bin
  56. # clang
  57. RUN wget https://apt.llvm.org/llvm.sh && \
  58. chmod +x llvm.sh && \
  59. ./llvm.sh 13
  60. ENV CC clang-13
  61. ENV CXX clang++-13
  62. # Ubertests settings file
  63. ARG TARGETPLATFORM
  64. RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then ARCHITECTURE=aarch64; else ARCHITECTURE=x86-64bit; fi \
  65. && wget --no-check-certificate -q -O /odbc.tar.gz https://dev.mysql.com/get/Downloads/Connector-ODBC/8.3/mysql-connector-odbc-8.3.0-linux-glibc2.28-${ARCHITECTURE}.tar.gz \
  66. && tar -zxf /odbc.tar.gz \
  67. && rm /odbc.tar.gz \
  68. && mkdir -p /var/run/mysqld && chmod a+rwX /var/run/mysqld \
  69. && { mysqld & } && sleep 30 \
  70. && mysql -e 'CREATE DATABASE test; CREATE USER test@localhost; GRANT ALL PRIVILEGES ON test.* TO test@localhost;' \
  71. && mysqladmin shutdown \
  72. && <<EOF cat > /root/.sphinx
  73. (
  74. "db-host"=>"127.0.0.1",
  75. "db-user"=>"test",
  76. 'lemmatizer_base'=>'/work/aot',
  77. 'odbc_driver'=>'/mysql-connector-odbc-8.3.0-linux-glibc2.28-${ARCHITECTURE}/lib/libmyodbc8w.so;CHARSET=utf8'
  78. )
  79. EOF
  80. # ODBC notes:
  81. # * Urls for various odbc mysql driver versions:
  82. # - https://dev.mysql.com/get/Downloads/Connector-ODBC/8.3/mysql-connector-odbc-8.3.0-linux-glibc2.28-x86-64bit.tar.gz
  83. # - https://dev.mysql.com/get/Downloads/Connector-ODBC/8.3/mysql-connector-odbc-8.3.0-linux-glibc2.28-aarch64.tar.gz
  84. # - https://dev.mysql.com/get/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit.tar.gz
  85. # * If test 228 fails with broken encoding - try to remove ';CHARSET=utf8' ending in the odbc_driver line above. M.b. better is to probe once on local instance before pushing to dockerhub
  86. # AOT
  87. RUN mkdir -p /work/aot && cd /work/aot && \
  88. wget https://repo.manticoresearch.com/repository/morphology/de.pak.tar.xz -q && \
  89. tar -Jxf de.pak.tar.xz && \
  90. wget https://repo.manticoresearch.com/repository/morphology/en.pak.tar.xz -q && \
  91. tar -Jxf en.pak.tar.xz && \
  92. wget https://repo.manticoresearch.com/repository/morphology/ru.pak.tar.xz -q && \
  93. tar -Jxf ru.pak.tar.xz && \
  94. rm *.tar.xz
  95. # Cleanup
  96. RUN rm -rf /var/lib/apt/lists/*
  97. RUN git config --global --add safe.directory '*'
  98. ADD entry_point.sh /
  99. VOLUME [ "/work" ]
  100. WORKDIR /work
  101. ENTRYPOINT ["bash", "/entry_point.sh"]
  102. CMD []
  103. # docker buildx create --name manticore_build --platform linux/amd64,linux/arm64
  104. # docker buildx use manticore_build
  105. # docker buildx build --no-cache --platform linux/amd64,linux/arm64 --push -t manticoresearch/ubertests_ctest:3263_20241005 .
  106. # deprecated:
  107. # docker build -t registry.gitlab.com/manticoresearch/dev/ubertests_ctest:3263 .
  108. # docker push registry.gitlab.com/manticoresearch/dev/ubertests_ctest:3263