Files
2026-06-20 21:45:56 +00:00

39 lines
2.1 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FROM repo.nstart.cloud/dockerhub/library/node:22-alpine AS build
# Build identity для VersionBadge / UpdateBanner. Внутри Docker build context
# нет .git/ (BUILD_CONTEXT=ordinis-admin-ui/), vite execSync падает →
# fallback "unknown" / package.json. CI передаёт реальные значения через
# --build-arg (см. .gitlab-ci.yml publish_script .docker_base).
#
# GIT_TAG — "none" sentinel когда CI_COMMIT_TAG не set (branch pipeline).
# Фильтруем "none" → пустая строка чтобы vite.config.ts видел falsy и
# fallback'ил к package.json.
ARG GIT_COMMIT=unknown
ARG GIT_TAG=none
ENV CI_COMMIT_SHORT_SHA=$GIT_COMMIT
ENV CI_COMMIT_TAG=$GIT_TAG
WORKDIR /app
# .npmrc нужен ДО pnpm install, иначе @nstart/* резолвятся в public npm и 404.
# pnpm-lock.yaml — для воспроизводимости (frozen lockfile в CI).
COPY package.json pnpm-lock.yaml .npmrc ./
# Pin pnpm@9.15.4 — exact version для reproducibility + lockfile compat
# (pnpm-lock.yaml lockfileVersion: '9.0').
# - corepack может hang в CI на integrity-check / non-TTY prompts. npm
# install --silent надёжнее.
# - v10+ блокирует postinstall scripts ("Run pnpm approve-builds..."), в CI
# нет интерактивного prompt'а → exit 1. v9 keeps старое поведение.
RUN npm install -g --silent pnpm@9.15.4
RUN --mount=type=cache,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
FROM repo.nstart.cloud/dockerhub/library/nginx:1.27-alpine
COPY --from=build /app/dist /usr/share/nginx/html
# Шаблон обрабатывается официальным entrypoint nginx-image:
# /docker-entrypoint.d/20-envsubst-on-templates.sh пробегает по
# /etc/nginx/templates/*.template и envsubst'ит ENV vars в /etc/nginx/conf.d/.
COPY nginx.conf /etc/nginx/templates/default.conf.template
ENV NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx/templates \
NGINX_ENVSUBST_TEMPLATE_SUFFIX=.template \
NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx/conf.d
EXPOSE 80