Как исправить установку python-dev в Docker Linuxkit?
У меня в 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.
Я хотел бы понять основную причину этого, чтобы избежать повторения этой же проблемы. Это было особенно ошеломляющим опытом, поскольку шесть дней работы сводились к последней функции, которая требовалаpy-lmdb
(мы создаем сложную штуку с машинным обучением для обучения в AWS Batch Job). У нас есть альтернативная стратегия для создания этого образа на основе Ubuntu, но я хотел бы разобраться в проблеме здесь, чтобы сделать более обоснованные предположения о выборе между базовыми образами; некоторые люди говорят, что ubuntu по-прежнему более стабильна / лучше документирована / часто задаваемые вопросы для облачных вычислений, некоторые говорят, что не должно быть никакой разницы.
Думаю, мой ключевой вопрос: почему это apt-get
в Linuxkit
скажи libpython3.7-dev
установлен правильно, при этом не хватает большинства файлов?