Попытка выполнить сборку докера, которая не удалась при установке chromadb
Я пытаюсь создать образ докера для моего проекта фляги Python.
Похоже, возникла проблема с приведенными ниже пакетами, от которых зависит сборка Chromadb.
- уткадб,
- 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.