# Сборка Docker (GooSeek) ## Почему в логе «дубли» и много строк подряд **Это не дубли.** Собираются **15+ образов параллельно** (cache-worker, chat-svc, api-gateway, web-svc, search-svc, localization-svc, travel-svc, caddy, auth-svc, library-svc, master-agents-svc, projects-svc, llm-svc, discover-svc, geo-device-svc и др.). У каждого свой шаг `RUN npm install`, и вывод в терминале **перемешан** — поэтому кажется, что одна и та же строка повторяется. На самом деле это разные сервисы. ## Ресурсы: хватает ли? - **Ошибка в логе** — `ECONNRESET` при `npm install`: «Client network socket disconnected before secure TLS connection was established». Это **сетевой сбой** (или лимиты при большом числе одновременных запросов к registry), а не нехватка RAM/CPU. - То есть **ресурсов машины обычно хватает**; проблема в том, что при параллельной сборке много образов одновременно качают пакеты с registry.npmjs.org, и часть соединений обрывается. ## Что сделано для устойчивости Во всех сервисных Dockerfile добавлено: 1. **Кэш npm** — `RUN --mount=type=cache,target=/root/.npm ... npm install`. Повторные сборки меньше ходят в сеть. 2. **Повторы при сбоях** — `--fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000`. При обрыве соединения npm повторяет запрос. Так сборка становится устойчивее к нестабильной сети и к параллельной нагрузке на registry. ## Если сборка всё равно падает по сети 1. **Повторить** — часто помогает второй запуск `./run.sh`. 2. **Собрать по одному сервису** (из каталога `deploy/docker`): ```bash docker compose -f docker-compose.yml --env-file ../../.env build localization-svc docker compose -f docker-compose.yml --env-file ../../.env build chat-svc # … и т.д. ``` 3. **Проверить сеть** — VPN, прокси, нестабильный Wi‑Fi могут вызывать ECONNRESET. ## Долго билдится Сборка 15+ Node-образов с полным `npm install` в каждом — тяжёлая операция (сотни секунд). Это нормально. С кэшем npm повторные сборки после небольших изменений будут быстрее.