# Use the official Node.js runtime as the base image FROM node:18-alpine # Set the working directory in the container WORKDIR /app # Copy package.json and package-lock.json (if available) COPY package*.json ./ # Install dependencies RUN npm ci --only=production # Copy the rest of the application code COPY . . # Create the SQLite database directory RUN mkdir -p /app/data # Build the Next.js application RUN npm run build # Expose the port the app runs on EXPOSE 3000 # Set environment variables ENV NODE_ENV=production ENV DATABASE_URL=/app/data/sqlite.db # Create a non-root user to run the application RUN addgroup -g 1001 -S nodejs RUN adduser -S nextjs -u 1001 # Change ownership of the app directory to the nextjs user RUN chown -R nextjs:nodejs /app USER nextjs # Command to run the application CMD ["npm", "start"]