FROM node:18-alpine | |
WORKDIR /app | |
# Copy package files | |
COPY backend/package*.json ./ | |
# Install dependencies | |
RUN npm ci --only=production | |
# Copy source code | |
COPY backend/ . | |
# Create non-root user | |
RUN addgroup -g 1001 -S nodejs | |
RUN adduser -S nodejs -u 1001 | |
# Change ownership of the app directory | |
RUN chown -R nodejs:nodejs /app | |
USER nodejs | |
# Expose port | |
EXPOSE 5000 | |
# Health check | |
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ | |
CMD node healthcheck.js | |
# Start the application | |
CMD ["npm", "start"] |