История изменений
Исправление PPP328, (текущая версия) :
Это для двух разных этапов сборки. Используется multistage сборка. Первый с альясом (as builder), вторйо без.
- Первый этап (builder):
- Docker строит образ от базового образа node:22.0 и задает алиас builder для этого этапа.
- Устанавливается рабочая директория в /app.
- Копируются package.json и package-lock.json.
- Запускается npm ci для установки зависимостей из package-lock.json.
- Копируются все файлы и папки из текущего каталога в контейнер.
- Запускается npm run build для сборки приложения.
- Второй этап:
- Docker начинает новый этап с базового образа node:22.0 без алиаса.
- Копируется содержимое из первого этапа, используя COPY –from=builder /app ./, чтобы скопировать все файлы из директории /app.
- Выставляется порт экспозиции 3000 для контейнера.
- Устанавливается команда запуска приложения через CMD [«npm», «run», «start»].
В целом вся эта катавасия затем, чтобы в итоговый образ не копировать всю ерунду, что нужна только для самой сборки, а не для итоговой работы.
Исходная версия PPP328, :
Это для двух разных этапов сборки. Используется multistage сборка. Первый с альясом (as builder), вторйо без.
- Первый этап (builder):
- Docker строит образ от базового образа node:22.0 и задает алиас builder для этого этапа.
- Устанавливается рабочая директория в /app.
- Копируются package.json и package-lock.json.
- Запускается npm ci для установки зависимостей из package-lock.json.
- Копируются все файлы и папки из текущего каталога в контейнер.
- Запускается npm run build для сборки приложения.
- Второй этап:
- Docker начинает новый этап с базового образа node:22.0 без алиаса.
- Копируется содержимое из первого этапа, используя COPY –from=builder /app ./, чтобы скопировать все файлы из директории /app.
- Выставляется порт экспозиции 3000 для контейнера.
- Устанавливается команда запуска приложения через CMD [«npm», «run», «start»].