Files
MelodyMuse/Dockerfile
T

47 lines
745 B
Docker

# Build stage
FROM node:18-alpine AS builder
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install all dependencies (including dev dependencies for building)
RUN npm ci
# Copy source code
COPY . .
# Build the Vite SPA
RUN npm run build
# Production stage
FROM node:18-alpine
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install only production dependencies
RUN npm ci --omit=dev
# Copy server files
COPY server.mjs ./
COPY server/ ./server/
# Copy built frontend
COPY --from=builder /app/dist ./dist
# Create data directory for runtime storage
RUN mkdir -p data && chown -R node:node data
# Switch to non-root user
USER node
# Expose the API port
EXPOSE 3000
# Start the server
CMD ["node", "server.mjs"]