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 @@
|
||||
# База данных |
||||
DATABASE_URL="postgresql://brandbook:brandbook@localhost:5433/brandbook" |
||||
# База данных (локально: порт как в docker-compose.yml, маппинг 5434 -> 5432 в контейнере) |
||||
DATABASE_URL="postgresql://brandbook:brandbook@localhost:5434/brandbook" |
||||
|
||||
# API (NestJS) |
||||
API_PORT=3001 |
||||
# API (NestJS) — в коде используется переменная PORT |
||||
PORT=3001 |
||||
|
||||
# Web (Next.js) |
||||
# Web (Next.js) — URL API в браузере (при docker compose: 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