Files
plane/apps/space/Dockerfile.space
T

104 lines
3.3 KiB
Docker
Raw Normal View History

2025-08-19 07:36:42 -07:00
# syntax=docker/dockerfile:1.7
FROM node:22-alpine AS base
2025-07-03 01:08:49 +05:30
2025-08-19 07:36:42 -07:00
# Setup pnpm package manager with corepack and configure global bin directory for caching
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
2024-05-10 02:32:42 +05:30
# *****************************************************************************
# STAGE 1: Build the project
# *****************************************************************************
2025-01-09 16:05:39 +05:30
FROM base AS builder
2023-08-21 18:12:41 +05:30
RUN apk add --no-cache libc6-compat
WORKDIR /app
2025-08-19 07:36:42 -07:00
ARG TURBO_VERSION=2.5.6
RUN corepack enable pnpm && pnpm add -g turbo@${TURBO_VERSION}
2023-08-21 18:12:41 +05:30
COPY . .
RUN turbo prune --scope=space --docker
2024-05-10 02:32:42 +05:30
# *****************************************************************************
# STAGE 2: Install dependencies & build the project
# *****************************************************************************
2025-01-09 16:05:39 +05:30
FROM base AS installer
2023-08-21 18:12:41 +05:30
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY .gitignore .gitignore
COPY --from=builder /app/out/json/ .
2025-08-19 07:36:42 -07:00
COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
RUN corepack enable pnpm
RUN --mount=type=cache,id=pnpm-store,target=/pnpm/store pnpm fetch --store-dir=/pnpm/store
2023-08-21 18:12:41 +05:30
COPY --from=builder /app/out/full/ .
COPY turbo.json turbo.json
2025-08-19 07:36:42 -07:00
RUN --mount=type=cache,id=pnpm-store,target=/pnpm/store pnpm install --offline --frozen-lockfile --store-dir=/pnpm/store
2023-08-21 18:12:41 +05:30
ARG NEXT_PUBLIC_API_BASE_URL=""
2024-05-10 02:32:42 +05:30
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
2024-05-23 13:38:20 +05:30
ARG NEXT_PUBLIC_ADMIN_BASE_URL=""
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH
ARG NEXT_PUBLIC_SPACE_BASE_URL=""
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL
2023-08-21 18:12:41 +05:30
2024-05-10 02:32:42 +05:30
ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces"
2024-05-09 21:05:51 +05:30
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH
2024-05-23 13:38:20 +05:30
ARG NEXT_PUBLIC_WEB_BASE_URL=""
ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL
2025-07-03 01:08:49 +05:30
ENV NEXT_TELEMETRY_DISABLED=1
ENV TURBO_TELEMETRY_DISABLED=1
2025-08-19 07:36:42 -07:00
RUN pnpm turbo run build --filter=space
2023-08-21 18:12:41 +05:30
2024-05-10 02:32:42 +05:30
# *****************************************************************************
# STAGE 3: Copy the project and start it
# *****************************************************************************
2025-01-09 16:05:39 +05:30
FROM base AS runner
2023-08-21 18:12:41 +05:30
WORKDIR /app
2025-07-03 01:08:49 +05:30
# Don't run production as root
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
USER nextjs
2025-07-03 01:08:49 +05:30
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=installer /app/apps/space/.next/standalone ./
COPY --from=installer /app/apps/space/.next/static ./apps/space/.next/static
COPY --from=installer /app/apps/space/public ./apps/space/public
2023-08-21 18:12:41 +05:30
ARG NEXT_PUBLIC_API_BASE_URL=""
2024-05-10 02:32:42 +05:30
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
2024-05-23 13:38:20 +05:30
ARG NEXT_PUBLIC_ADMIN_BASE_URL=""
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH
ARG NEXT_PUBLIC_SPACE_BASE_URL=""
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL
2023-08-21 18:12:41 +05:30
2024-05-10 02:32:42 +05:30
ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces"
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH
2023-08-21 18:12:41 +05:30
2024-05-23 13:38:20 +05:30
ARG NEXT_PUBLIC_WEB_BASE_URL=""
ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL
2025-07-03 01:08:49 +05:30
ENV NEXT_TELEMETRY_DISABLED=1
ENV TURBO_TELEMETRY_DISABLED=1
2023-08-21 18:12:41 +05:30
EXPOSE 3000
2025-08-19 07:36:42 -07:00
CMD ["node", "apps/space/server.js"]