forked from Dan4ick/Lidar_Muxa
28 lines
2 KiB
Markdown
28 lines
2 KiB
Markdown
# Колёса для сборки без сети
|
||
|
||
Если там, где собирается образ, нет доступа к download.pytorch.org, колёса PyTorch
|
||
скачиваются на соседней машине и отдаются сборке по HTTP — аргумент `TORCH_WHEELS`
|
||
в docker/Dockerfile. Без аргумента сборка берёт PyTorch из индекса, как обычно.
|
||
|
||
1. Скачать на машине с сетью — хоть на Windows, колёса берутся под Linux:
|
||
|
||
python docker/fetch_wheels.py
|
||
|
||
Обычного `pip download --platform ...` мало: на Windows он молча пропускает
|
||
зависимости «только для Linux» — все библиотеки CUDA и triton. Скрипт берёт их
|
||
список из метаданных колеса torch и докачивает явно, заодно кладёт колесо pip
|
||
(в базовом образе его нет).
|
||
|
||
2. Отдать папку любым HTTP-сервером и собрать образ с сетью хоста:
|
||
|
||
python3 -m http.server 8765 --bind 127.0.0.1 --directory docker/wheels &
|
||
docker build --network host --build-arg TORCH_WHEELS=http://127.0.0.1:8765 \
|
||
-t flyguard -f docker/Dockerfile .
|
||
|
||
`--network host` нужен, чтобы сборка видела сервер на 127.0.0.1. Базовый образ
|
||
и пакеты apt сборка всё равно берёт из сети (или из своего кэша, если эти слои
|
||
уже собирались) — колёса снимают только самую тяжёлую часть, 3.8 ГБ.
|
||
|
||
Колёса в контекст сборки не копируются (`.dockerignore`): это ещё 4 ГБ копий на
|
||
диске. В репозиторий они тоже не кладутся (.gitignore) — около 4 ГБ, 26 файлов.
|
||
После сборки папку можно очистить.
|