Files
plane/apps/runners/node-runner/Dockerfile.runner
T
AaronandGitHub 308faaa861 chore: migrate to pnpm catalog v2, Turbo 2.8.13, @tailwindcss/vite (#6178)
- Migrate all dependencies to pnpm catalog v2 (catalogMode: prefer)
- Bump Turbo to 2.8.13
- Migrate silo from jest to vitest with vite-tsconfig-paths
- Switch all Vite apps (web, admin, space, mobile-editor) from @tailwindcss/postcss
  to @tailwindcss/vite plugin; delete all postcss.config.* files
- Migrate Storybook (propel, ui) to @tailwindcss/vite via viteFinal
- Consolidate @import "tailwindcss" into @plane/tailwindcss/index.css
- Rename packages/tailwind-config → packages/tailwindcss (@plane/tailwindcss)
  with style export condition matching tailwindcss package convention
- Add style export condition to @plane/editor and @plane/propel root exports
  so consumers can use @import "@plane/editor" and @import "@plane/propel"
- Normalize propel CSS: rename react-day-picker.css → src/styles/index.css
- Remove eslint-plugin-storybook from oxlint jsPlugins (crashes oxlint, known bug)
- Fix Docker build failures: NODE_ENV placement, tailwind dep resolution
- Revert TURBO_* remote cache secrets from Docker (incompatible with reusable action)
- Apply oxfmt auto-formatting across web, silo, space, packages
2026-03-10 00:02:41 +05:30

76 lines
2.7 KiB
Docker

# syntax=docker/dockerfile:1.7
FROM node:22-alpine AS base
# 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
# *****************************************************************************
# STAGE 1: Prune the project
# *****************************************************************************
FROM base AS builder
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk update
RUN apk add --no-cache libc6-compat
# Set working directory
WORKDIR /app
ARG TURBO_VERSION=2.8.13
RUN corepack enable pnpm && pnpm add -g turbo@${TURBO_VERSION}
COPY . .
RUN turbo prune --scope=plane-runner-host --docker
# *****************************************************************************
# STAGE 2: Install dependencies & build the project
# *****************************************************************************
# Add lockfile and package.json's of isolated subworkspace
FROM base AS installer
RUN apk update
RUN apk add --no-cache libc6-compat
WORKDIR /app
# First install dependencies (as they change less often)
COPY .gitignore .gitignore
COPY --from=builder /app/out/json/ .
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
# Build the project and its dependencies
COPY --from=builder /app/out/full/ .
COPY turbo.json turbo.json
ENV CI=true
RUN --mount=type=cache,id=pnpm-store,target=/pnpm/store pnpm install --store-dir=/pnpm/store
ENV TURBO_TELEMETRY_DISABLED=1
RUN pnpm turbo run build --filter=plane-runner-host
# *****************************************************************************
# STAGE 3: Run the project
# *****************************************************************************
FROM base AS runner
WORKDIR /app
COPY --from=installer /app/packages ./packages
COPY --from=installer /app/apps/runners/node-runner/dist ./apps/runners/node-runner/dist
COPY --from=installer /app/apps/runners/node-runner/node_modules ./apps/runners/node-runner/node_modules
COPY --from=installer /app/apps/runners/node-runner/package.json ./apps/runners/node-runner/package.json
COPY --from=installer /app/node_modules ./node_modules
# Directory where script packages will be installed at runtime
RUN mkdir -p /app/scripts
COPY LICENSE.txt .
RUN mkdir -p /usr/share/licenses/plane/
COPY LICENSE.txt /usr/share/licenses/plane/LICENSE.txt
ENV NODE_ENV=production
ENV TURBO_TELEMETRY_DISABLED=1
ENV NPM_CONFIG_CACHE=/tmp/.npm-cache
EXPOSE 3000
CMD ["node", "apps/runners/node-runner/dist/index.js"]