Код
FROM node:12-alpine as builder
WORKDIR /app
# Копируем в образ файлы, нужные для установки зависимостей приложения.
COPY package.json package-lock.json ./
# Устанавливаем зависимости приложения.
RUN npm ci
# Копируем в образ все остальные файлы приложения.
COPY . .
# Собираем статические файлы.
RUN npm run build
#############################################################################
FROM node:12-alpine as backend
WORKDIR /app
# Копируем в образ файлы, нужные для установки зависимостей приложения.
COPY package.json package-lock.json ./
# Устанавливаем зависимости приложения.
RUN npm ci --production
# Копируем файлы приложения.
COPY app.js ./
RUN mkdir dist
COPY --from=builder /app/dist/*.html ./dist/
COPY --from=builder /app/bin ./bin/
COPY --from=builder /app/routes ./routes/
#############################################################################
# NGINX-образ с собранными ранее ассетами.
FROM nginx:stable-alpine as frontend
WORKDIR /www
# Копируем собранные ассеты из предыдушего сборочного образа.
COPY --from=builder /app/dist /www/static
# Копируем конфигурацию NGINX.
COPY .werf/nginx.conf /etc/nginx/nginx.conf