В типичном веб-приложении вы запускаете какой-то упаковщик (например, Webpack ), который «компилирует» ваше приложение в набор статических файлов. Затем вам понадобится веб-сервер для отправки этих файлов клиентам, но ничто не запускает этот код на стороне сервера после его сборки.
Это очень хорошо соответствует многоступенчатому изображению Docker, которое вы показываете в вопросе. На первом этапе создаются только артефакты, и, как только это будет сделано, ничто никогда не запускает создаваемый ими образ. (Обратите внимание, например, на отсутствие CMD
.) Второй этап COPY --from=build
статических артефактов, которые он создает, и все.
Поскольку на первом этапе нет реального приложения для запуска, нет смысла запускать его как отдельную службу Docker Compose или иным образом "разбивать это" так, как вы показываете.
Если вы не возражаете против использования нескольких инструментов сборки, вы можете рассматривать упакованное приложение как «данные» с точки зрения Nginx (он ничего не знает о содержимом этих файлов, он просто отправляет данные по сети). Вы можете выбрать какой-либо каталог на вашем хосте и смонтировать его в контейнер Nginx
version: "3"
services:
nginx:
image: nginx:1.13.12-alpine
ports:
- "80:80"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./dist:/usr/share/nginx/html
, а затем npm run-script build
в вашей хост-системе, когда вам нужно пересобрать и повторно развернуть приложение.