fleet-memory/docker/services/control-plane.Dockerfile
Nicolò Boschi 3e72984cd2 chunks
2025-11-29 16:34:13 +01:00

65 lines
1.4 KiB
Docker

# Dockerfile for Hindsight Control Plane (standalone)
FROM node:20-alpine AS sdk-builder
WORKDIR /app/sdk
# Build TypeScript SDK
COPY hindsight-clients/typescript/package*.json ./
RUN npm ci
COPY hindsight-clients/typescript/ ./
RUN npm run build
# Build Control Plane
FROM node:20-alpine AS builder
WORKDIR /app
# Copy built SDK
COPY --from=sdk-builder /app/sdk /app/sdk
# Install Control Plane dependencies
COPY hindsight-control-plane/package*.json ./
RUN npm ci
# Copy Control Plane source
COPY hindsight-control-plane/ ./
# Link SDK for build
RUN cd /app/sdk && npm link && cd /app && npm link @hindsight/client
# Build the Next.js app
RUN npm run build
# Create public directory if it doesn't exist
RUN mkdir -p public
# Production image
FROM node:20-alpine
WORKDIR /app
# Copy built SDK
COPY --from=sdk-builder /app/sdk /app/sdk
# Copy package files and install production dependencies only
COPY hindsight-control-plane/package*.json ./
RUN npm ci --omit=dev
# Link SDK for runtime
RUN cd /app/sdk && npm link && cd /app && npm link @hindsight/client
# Copy built app from builder
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/next.config.ts ./next.config.ts
# Expose control plane port
EXPOSE 3000
# Set environment variables
ENV NODE_ENV=production
ENV HINDSIGHT_CP_DATAPLANE_API_URL=http://localhost:8888
# Run the Next.js server
CMD ["npm", "start"]