Ваш слой development
содержит
CMD [ "yarn", "run", "dev" ]
, что означает, что экземпляр окончательного изображения будет запускать сценарий dev
.Вы, вероятно, хотите иметь что-то вроде
FROM base AS development
...
ENTRYPOINT [ "yarn", "run" ]
CMD [ "dev" ]
FROM nginx:alpine AS production
...
CMD [ "prod" ]
. Основная проблема заключается в том, что вы пытаетесь встроить как образ разработки, так и рабочий образ в один и тот же Dockerfile.
Многоступенчатые файлы Docker обычно используются дляизбегайте сборочных утилит, занимающих пространство (и увеличивающее поверхность атаки) производственного образа.Кроме того, промежуточный уровень, на котором выполняются все модульные / приемочные тесты, может гарантировать, что изображение не будет создано, если тест не пройден.
Если вам требуется отдельный образ разработки, см. Раздел «Остановка на определенном этапе сборки» документация многоступенчатой сборки .