4f04872de8
pnpm install в Docker падал т.к. .npmrc отсутствовал — @nstart/* резолвились в public npm registry (404). Добавил .npmrc + pnpm-lock.yaml в первый COPY до install, чтобы scope mapping на repo.nstart.cloud сработал. Заодно --frozen-lockfile вместо --no-frozen-lockfile (lockfile в репо есть, CI воспроизводимый install).
21 lines
1.0 KiB
Docker
21 lines
1.0 KiB
Docker
FROM repo.nstart.cloud/library/node:22-alpine AS build
|
|
WORKDIR /app
|
|
# .npmrc нужен ДО pnpm install, иначе @nstart/* резолвятся в public npm и 404.
|
|
# pnpm-lock.yaml — для воспроизводимости (frozen lockfile в CI).
|
|
COPY package.json pnpm-lock.yaml .npmrc ./
|
|
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
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
|