FROM node:18 as builder

WORKDIR /build

COPY package.json .
COPY yarn.lock .
COPY .yarnrc .

# Устанавливаем библиотечки NPM
RUN yarn install

COPY . ./

ARG publicPath=/ervu
ENV BASE_URL=${publicPath}
ENV VUE_APP_PROJECT_PATH=${publicPath}
ENV VUE_APP_OCHN_PRIEM_VISIBILITY=VISIBLE_FOR_ALL
ENV NODE_ENV=production

# Это связано с Webpack 4 и его devServer-ом, иначе не соберётся под node:18
ENV NODE_OPTIONS=--openssl-legacy-provider

# disable lint
RUN printf "**\n" > .eslintignore
# Наконецто собираем фронт
RUN yarn build

# Берём NGINX за базу контейнера
FROM nginx:1.24-alpine-slim

# Накатываем собранный дистрибутив фронта
COPY --from=builder /build/public /usr/share/nginx/html
# Конфигурацию Nginx
# ! Использовать /etc/nginx/templates не возможно так как в контексте k8s могут быть тысячи переменных окружения
# и скрипт /docker-entrypoint.d/20-envsubst-on-templates.sh envsubst вылетает с ошибкой "Argument list too long"
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY entrypoint.sh /usr/share/nginx/
COPY app.config.json /usr/share/nginx/
RUN chmod 777 -R /usr/share/nginx/entrypoint.sh
ENTRYPOINT ["/usr/share/nginx/entrypoint.sh"]
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]
