Попытка выполнить сборку докера, которая не удалась при установке chromadb

Я пытаюсь создать образ докера для моего проекта фляги Python.

Похоже, возникла проблема с приведенными ниже пакетами, от которых зависит сборка Chromadb.

  1. уткадб,
  2. hnswlib

Ниже приведено содержимое файла docker.

      FROM python:3.10-slim-buster
ENV HNSWLIB_NO_NATIVE=1
RUN mkdir /app
WORKDIR /app
COPY . /app

RUN pip install --upgrade pip setuptools

RUN pip install -r requirements.txt



RUN export HNSWLIB_NO_NATIVE=1

RUN pip install chromadb

EXPOSE 5000

CMD python ./app.py

Сборка докера завершается с ошибкой «RUN pip install chromadb» с приведенной ниже ошибкой, указывающей на «Не удалось создать колеса для Duckdb, hnswlib» —

      Building wheel for hnswlib (pyproject.toml) did not run successfully.
#0 9.427   │ exit code: 1
#0 9.427   ╰─> [55 lines of output]
#0 9.427       running bdist_wheel
#0 9.427       running build
#0 9.427       running build_ext
#0 9.427       creating tmp
#0 9.427       gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include/python3.10 -c /tmp/tmpohs_vaib.cpp -o tmp/tmpohs_vaib.o -std=c++14
#0 9.427       gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include/python3.10 -c /tmp/tmp1os2pqqf.cpp -o tmp/tmp1os2pqqf.o -std=c++11
#0 9.427       Traceback (most recent call last):
#0 9.427         File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
#0 9.427           main()
#0 9.427         File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
#0 9.427           json_out['return_val'] = hook(**hook_input['kwargs'])
#0 9.427         File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
#0 9.427           return _build_backend().build_wheel(wheel_directory, config_settings,
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 416, in build_wheel
#0 9.427           return self._build_with_temp_dir(['bdist_wheel'], '.whl',
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 401, in _build_with_temp_dir
#0 9.427           self.run_setup()
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 338, in run_setup
#0 9.427           exec(code, locals())
#0 9.427         File "<string>", line 116, in <module>
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/__init__.py", line 107, in setup
#0 9.427           return distutils.core.setup(**attrs)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 185, in setup
#0 9.427           return run_commands(dist)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
#0 9.427           dist.run_commands()
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
#0 9.427           self.run_command(cmd)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1244, in run_command
#0 9.427           super().run_command(command)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
#0 9.427           cmd_obj.run()
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/wheel/bdist_wheel.py", line 343, in run
#0 9.427           self.run_command("build")
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
#0 9.427           self.distribution.run_command(command)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1244, in run_command
#0 9.427           super().run_command(command)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
#0 9.427           cmd_obj.run()
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build.py", line 131, in run
#0 9.427           self.run_command(cmd_name)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
#0 9.427           self.distribution.run_command(command)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1244, in run_command
#0 9.427           super().run_command(command)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
#0 9.427           cmd_obj.run()
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/command/build_ext.py", line 84, in run
#0 9.427           _build_ext.run(self)
#0 9.427         File "/tmp/pip-build-env-o2mbvvt6/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 345, in run
#0 9.427           self.build_extensions()
#0 9.427         File "<string>", line 103, in build_extensions
#0 9.427         File "<string>", line 70, in cpp_flag
#0 9.427       RuntimeError: Unsupported compiler -- at least C++11 support is needed!
#0 9.427       [end of output]
#0 9.427   
#0 9.427   note: This error originates from a subprocess, and is likely not a problem with pip.
#0 9.427   ERROR: Failed building wheel for hnswlib
#0 9.428 Failed to build duckdb hnswlib
#0 9.428 ERROR: Could not build wheels for duckdb, hnswlib, which is required to install pyproject.toml-based projects
------
Dockerfile:15
--------------------
  13 |     RUN export HNSWLIB_NO_NATIVE=1
  14 |     
  15 | >>> RUN pip install chromadb
  16 |     
  17 |     EXPOSE 5000
--------------------
ERROR: failed to solve: process "/bin/sh -c pip install chromadb" did not complete successfully: exit code: 1

Может ли кто-нибудь помочь, пожалуйста?

3 ответа

Решено путем добавления строки apt-get в начало моего файла Docker, как описано здесь, в вопросах hnswlib: https://github.com/chroma-core/chroma/issues/642 .

      # Needed to build hnswlib during pip install. 
# See here https://github.com/chroma-core/chroma/issues/642
RUN apt-get update --fix-missing && apt-get install -y --fix-missing build-essential

Предположительно, проблема в том, что базовый образ python-slim, который я использовал, не имел (в отличие от моего ноутбука) инструментов сборки, необходимых для сборки pip во время установки.

Решено путем установки hnswlib из исходного кода, как указано здесь:https://github.com/nmslib/hnswlib/issues/442#issuecomment-1529328244 .

Глядя на трассировку стека — RuntimeError: неподдерживаемый компилятор — необходима поддержка как минимум C++11! #0 9.427 [конец вывода]

Проблема была решена установкой C++ Complier.

Другие вопросы по тегам