- Remove Rollup bundling in favor of direct TypeScript compilation - Move from bundled models to dynamic model loading with configurable paths - Add Docker deployment examples and documentation - Implement robust model loader with fallback mechanisms - Update storage adapters for better cross-environment compatibility - Add comprehensive tests for model loading and package installation - Simplify package.json scripts and remove complex build configurations - Clean up deprecated demo files and old bundling scripts BREAKING CHANGE: Models are no longer bundled with the package. They are now loaded dynamically from CDN or custom paths.
52 lines
No EOL
1.2 KiB
Docker
52 lines
No EOL
1.2 KiB
Docker
# AWS ECS Dockerfile with Auto-Extracted Models
|
|
# Standard Node.js container optimized for ECS
|
|
|
|
FROM node:24-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy package files
|
|
COPY package*.json ./
|
|
|
|
# Install dependencies including @soulcraft/brainy-models
|
|
RUN npm ci --only=production && npm cache clean --force
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
# Extract models using our automatic script
|
|
RUN node scripts/extract-models.js
|
|
|
|
# Production stage
|
|
FROM node:24-alpine AS production
|
|
|
|
WORKDIR /app
|
|
|
|
# Install production dependencies only
|
|
COPY package*.json ./
|
|
RUN npm ci --only=production --omit=optional && npm cache clean --force
|
|
|
|
# Copy application code and extracted models
|
|
COPY --from=builder /app/dist ./dist
|
|
COPY --from=builder /app/models ./models
|
|
COPY --from=builder /app/scripts ./scripts
|
|
|
|
# Create non-root user for security
|
|
RUN addgroup -g 1001 -S nodejs && \
|
|
adduser -S brainy -u 1001 && \
|
|
chown -R brainy:nodejs /app
|
|
|
|
USER brainy
|
|
|
|
# ECS environment variables
|
|
ENV NODE_ENV=production
|
|
ENV PORT=3000
|
|
|
|
# Health check for ECS load balancer
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD curl -f http://localhost:${PORT}/health || exit 1
|
|
|
|
EXPOSE 3000
|
|
|
|
# Start the application
|
|
CMD ["node", "dist/server.js"] |