У меня в Dockerfile довольно сложный стек. Мне нужно разрешить gcc
доступ к заголовкам Python для pip
, чтобы установить библиотеку (py-lmdb
), которая имеет зависимость CPython, которую необходимо построить. К сожалению, дистрибутив Linuxkit не включает заголовки Python. gcc
правильно ( проверьте список файлов здесь ), указывая на каталог /usr/include/python3.7m/
, но когда я попытался проверить, есть ли там файлы, я заметил, что такой каталог не существует. Я считаю, что другие файлы зависят от python3.7
lib, поскольку python3 .7 правильно установлен и работает безупречно.
Сохраняются только файлы, которые apt-get install libpython3.7-dev
:
/usr/bin/x86_64-linux-gnu-python3.7-config
/usr/bin/x86_64-linux-gnu-python3.7m-config
/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu/makesetup
/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu/python-config.py
/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu/python.o
/usr/lib/x86_64-linux-gnu/libpython3.7m.a
/usr/lib/x86_64-linux-gnu/libpython3.7m.so
/usr/lib/x86_64-linux-gnu/pkgconfig/python-3.7.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/python-3.7m.pc
/usr/share/doc/libpython3.7-dev
Я использую многоступенчатую сборку, которая:
FROM maven:slim as builder
...
FROM tomcat:8.5.53-jdk11-openjdk-slim
...
Также:
uname -a
Linux b5038a670622 4.19.76-linuxkit #1 SMP Fri Apr 3 15:53:26 UTC 2020 x86_64 GNU/Linux
apt-get install libpython3.7-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libpython3.7-dev is already the newest version (3.7.3-2+deb10u1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Я хотел бы понять причину root этого, чтобы не запускать снова та же проблема. Это было особенно ошеломляющим опытом, так как шесть дней работы привели к сбою последней функции, для которой требовалось py-lmdb
(мы создаем сложную систему машинного обучения ie для обучения в AWS Batch Job). У нас есть альтернативная стратегия для создания этого образа на основе Ubuntu, но я хотел бы разобраться в проблеме здесь, чтобы сделать более обоснованные предположения о выборе между базовыми образами; некоторые люди говорят, что ubuntu по-прежнему более стабилен / лучше документирован / часто задаваемый для облачных вычислений, некоторые говорят, что не должно быть никакой разницы. скажете, что libpython3.7-dev
установлен правильно, но в нем нет большинства файлов?