# Stage 1: Build the web application and core dependencies FROM --platform=$BUILDPLATFORM node:22-alpine AS builder WORKDIR /app # Copy package manifests for optimal layer caching COPY package*.json ./ COPY packages/core/package*.json ./packages/core/ COPY packages/cli/package*.json ./packages/cli/ COPY packages/web/package*.json ./packages/web/ # Install dependencies using clean install RUN npm ci # Copy full source repository COPY . . # Build core library and web application RUN npm run build --workspace=@2password/core && npm run build --workspace=@2password/web # Stage 2: Production Node.js runtime (no Nginx) FROM node:22-alpine AS runner WORKDIR /app ENV NODE_ENV=production ENV PORT=3000 ENV HOST=0.0.0.0 # Copy built distribution and server script COPY --from=builder /app/packages/web/dist ./packages/web/dist COPY packages/web/server.mjs ./packages/web/server.mjs EXPOSE 3000 CMD ["node", "packages/web/server.mjs"]