35 lines
829 B
Docker
35 lines
829 B
Docker
# Build stage - using pnpm for workspace dependency resolution
|
|
FROM node:20-alpine AS build
|
|
|
|
# Install pnpm
|
|
RUN npm install -g pnpm
|
|
|
|
WORKDIR /workspace
|
|
|
|
# Copy workspace configuration files
|
|
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml* ./
|
|
|
|
# Copy shared packages (required for workspace:* dependencies)
|
|
COPY packages/ ./packages/
|
|
|
|
# Copy the app component
|
|
COPY apps/studio-ui/ ./apps/studio-ui/
|
|
|
|
# Install dependencies using pnpm (resolves workspace:* correctly)
|
|
RUN pnpm install --frozen-lockfile || pnpm install
|
|
|
|
# Build the app
|
|
WORKDIR /workspace/apps/studio-ui
|
|
RUN pnpm build
|
|
|
|
# Production stage
|
|
FROM nginx:alpine
|
|
|
|
# Copy built assets
|
|
COPY --from=build /workspace/apps/studio-ui/dist /usr/share/nginx/html
|
|
COPY apps/studio-ui/nginx.conf /etc/nginx/conf.d/default.conf
|
|
|
|
EXPOSE 3001
|
|
|
|
CMD ["nginx", "-g", "daemon off;"]
|