7 changed files with 153 additions and 6 deletions
@ -0,0 +1,15 @@ |
|||||||
|
node_modules |
||||||
|
**/node_modules |
||||||
|
**/.next |
||||||
|
**/dist |
||||||
|
.git |
||||||
|
.gitignore |
||||||
|
*.md |
||||||
|
.env |
||||||
|
.env.* |
||||||
|
!.env.example |
||||||
|
coverage |
||||||
|
**/.turbo |
||||||
|
**/coverage |
||||||
|
.DS_Store |
||||||
|
apps/web/pnpm-lock.yaml |
||||||
@ -1,8 +1,8 @@ |
|||||||
# База данных |
# База данных (локально: порт как в docker-compose.yml, маппинг 5434 -> 5432 в контейнере) |
||||||
DATABASE_URL="postgresql://brandbook:brandbook@localhost:5433/brandbook" |
DATABASE_URL="postgresql://brandbook:brandbook@localhost:5434/brandbook" |
||||||
|
|
||||||
# API (NestJS) |
# API (NestJS) — в коде используется переменная PORT |
||||||
API_PORT=3001 |
PORT=3001 |
||||||
|
|
||||||
# Web (Next.js) |
# Web (Next.js) — URL API в браузере (при docker compose: http://localhost:3001) |
||||||
NEXT_PUBLIC_API_URL=http://localhost:3001 |
NEXT_PUBLIC_API_URL=http://localhost:3001 |
||||||
|
|||||||
@ -0,0 +1,29 @@ |
|||||||
|
FROM node:22-bookworm-slim AS api |
||||||
|
|
||||||
|
WORKDIR /app |
||||||
|
|
||||||
|
RUN apt-get update -y \ |
||||||
|
&& apt-get install -y --no-install-recommends openssl ca-certificates wget \ |
||||||
|
&& rm -rf /var/lib/apt/lists/* |
||||||
|
|
||||||
|
RUN corepack enable && corepack prepare pnpm@9.15.4 --activate |
||||||
|
|
||||||
|
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./ |
||||||
|
COPY apps/api/package.json ./apps/api/ |
||||||
|
COPY apps/web/package.json ./apps/web/ |
||||||
|
|
||||||
|
RUN pnpm install --frozen-lockfile |
||||||
|
|
||||||
|
COPY apps/api ./apps/api |
||||||
|
|
||||||
|
RUN pnpm --filter api exec prisma generate \ |
||||||
|
&& pnpm --filter api build |
||||||
|
|
||||||
|
WORKDIR /app/apps/api |
||||||
|
|
||||||
|
ENV NODE_ENV=production |
||||||
|
ENV PORT=3001 |
||||||
|
|
||||||
|
EXPOSE 3001 |
||||||
|
|
||||||
|
CMD ["sh", "-c", "pnpm exec prisma migrate deploy && node dist/main.js"] |
||||||
@ -0,0 +1,50 @@ |
|||||||
|
FROM node:22-bookworm-slim AS deps |
||||||
|
|
||||||
|
WORKDIR /app |
||||||
|
|
||||||
|
RUN apt-get update -y \ |
||||||
|
&& apt-get install -y --no-install-recommends openssl ca-certificates \ |
||||||
|
&& rm -rf /var/lib/apt/lists/* |
||||||
|
|
||||||
|
RUN corepack enable && corepack prepare pnpm@9.15.4 --activate |
||||||
|
|
||||||
|
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./ |
||||||
|
COPY apps/web/package.json ./apps/web/ |
||||||
|
COPY apps/api/package.json ./apps/api/ |
||||||
|
|
||||||
|
RUN pnpm install --frozen-lockfile |
||||||
|
|
||||||
|
FROM deps AS builder |
||||||
|
|
||||||
|
WORKDIR /app |
||||||
|
|
||||||
|
COPY apps/web ./apps/web |
||||||
|
|
||||||
|
ARG NEXT_PUBLIC_API_URL=http://localhost:3001 |
||||||
|
ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} |
||||||
|
ENV NEXT_TELEMETRY_DISABLED=1 |
||||||
|
ENV NODE_ENV=production |
||||||
|
|
||||||
|
RUN pnpm --filter web build |
||||||
|
|
||||||
|
FROM node:22-bookworm-slim AS runner |
||||||
|
|
||||||
|
WORKDIR /app |
||||||
|
|
||||||
|
ENV NODE_ENV=production |
||||||
|
ENV NEXT_TELEMETRY_DISABLED=1 |
||||||
|
ENV PORT=3000 |
||||||
|
ENV HOSTNAME=0.0.0.0 |
||||||
|
|
||||||
|
RUN addgroup --system --gid 1001 nodejs \ |
||||||
|
&& adduser --system --uid 1001 nextjs |
||||||
|
|
||||||
|
COPY --from=builder --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public |
||||||
|
COPY --from=builder --chown=nextjs:nodejs /app/apps/web/.next/standalone ./ |
||||||
|
COPY --from=builder --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static |
||||||
|
|
||||||
|
USER nextjs |
||||||
|
|
||||||
|
EXPOSE 3000 |
||||||
|
|
||||||
|
CMD ["node", "apps/web/server.js"] |
||||||
Loading…
Reference in new issue