magicui

Форк
0
/
Dockerfile 
86 строк · 2.6 Кб
1
FROM node:20-alpine AS base
2

3
ARG DATABASE_URL
4
ARG NEXTAUTH_SECRET
5
ARG NEXTAUTH_URL
6
ARG NEXT_PUBLIC_APP_URL
7
ARG RESEND_API_KEY
8
ARG STRIPE_API_KEY
9
ARG NEXT_PUBLIC_STRIPE_PAYMENT_LINK
10
ARG NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY_LIVE
11
ARG NEXT_PUBLIC_POSTHOG_API_KEY
12
ARG NODE_ENV
13
ARG SERVER_URL
14
ARG STRIPE_SECRET_KEY_LIVE
15
ARG STRIPE_WEBHOOK_SECRET
16

17
# Install dependencies only when needed
18
FROM base AS deps
19
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
20
RUN apk add --no-cache libc6-compat
21
WORKDIR /app
22

23
# Install dependencies based on the preferred package manager
24
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
25
RUN \
26
    if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
27
    elif [ -f package-lock.json ]; then npm ci; \
28
    elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && corepack use pnpm@9 && NODE_ENV=development pnpm i --frozen-lockfile; \
29
    else echo "Lockfile not found." && exit 1; \
30
    fi
31

32

33
# Rebuild the source code only when needed
34
FROM base AS builder
35
WORKDIR /app
36
RUN npm i -g turbo
37
COPY --from=deps /app/node_modules ./node_modules
38
COPY . .
39
RUN npx prisma generate
40

41
# Next.js collects completely anonymous telemetry data about general usage.
42
# Learn more here: https://nextjs.org/telemetry
43
# Uncomment the following line in case you want to disable telemetry during the build.
44
# ENV NEXT_TELEMETRY_DISABLED 1
45

46
RUN \
47
    if [ -f yarn.lock ]; then yarn run build; \
48
    elif [ -f package-lock.json ]; then npm run build; \
49
    elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \
50
    else echo "Lockfile not found." && exit 1; \
51
    fi
52

53
# Production image, copy all the files and run next
54
FROM base AS runner
55
WORKDIR /app
56

57
ENV NODE_ENV production
58
# Uncomment the following line in case you want to disable telemetry during runtime.
59
# ENV NEXT_TELEMETRY_DISABLED 1
60

61
RUN addgroup --system --gid 1001 nodejs
62
RUN adduser --system --uid 1001 nextjs
63

64
COPY --from=builder /app/public ./public
65

66
# Set the correct permission for prerender cache
67
RUN mkdir .next
68
RUN chown nextjs:nodejs .next
69

70
# Automatically leverage output traces to reduce image size
71
# https://nextjs.org/docs/advanced-features/output-file-tracing
72
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
73
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
74

75

76
USER nextjs
77

78
EXPOSE 3000
79

80
ENV PORT 3000
81
# set hostname to localhost
82
ENV HOSTNAME "0.0.0.0"
83

84
# server.js is created by next build from the standalone output
85
# https://nextjs.org/docs/pages/api-reference/next-config-js/output
86
CMD ["node", "server.js"]
87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.