Files
mdm-ordinis/ordinis-admin-ui/Dockerfile
T
2026-05-10 17:33:44 +00:00

36 lines
2.0 KiB
Docker
Raw 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/library/node:22-alpine AS build
# Git commit для VersionBadge / UpdateBanner (vite.config.ts читает
# process.env.CI_COMMIT_SHORT_SHA на build time). Внутри Docker build
# context нет .git/ (BUILD_CONTEXT=ordinis-admin-ui/), vite
# execSync('git rev-parse') падает → fallback "unknown".
# CI передаёт реальный SHA через --build-arg GIT_COMMIT (см. .gitlab-ci.yml
# publish_script). ENV exposes его vite-процессу через CI_COMMIT_SHORT_SHA
# (тот же ключ что vite.config.ts проверяет первым).
ARG GIT_COMMIT=unknown
ENV CI_COMMIT_SHORT_SHA=$GIT_COMMIT
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/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