brainy/examples/brainy-service-template/Dockerfile

44 lines
871 B
Text
Raw Normal View History

FROM node:24-alpine
# Set working directory
WORKDIR /app
# Install system dependencies
RUN apk add --no-cache \
python3 \
make \
g++ \
git
# Copy package files
COPY package*.json ./
# Install dependencies
RUN npm ci --only=production
# Download Brainy models for offline operation
RUN npm run download-models
# Copy application code
COPY . .
# Create logs directory
RUN mkdir -p logs
# Create non-root user
RUN addgroup -g 1001 -S nodejs && \
adduser -S brainy -u 1001 -G nodejs
# Change ownership
RUN chown -R brainy:nodejs /app
USER brainy
# Expose port
EXPOSE 3000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
CMD node -e "fetch('http://localhost:3000/health/liveness').then(r=>r.ok?process.exit(0):process.exit(1)).catch(()=>process.exit(1))"
# Start the application
CMD ["npm", "start"]