41 lines
796 B
Docker
41 lines
796 B
Docker
# Build stage
|
|
FROM node:20-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Install build dependencies for native modules
|
|
RUN apk add --no-cache python3 make g++
|
|
|
|
# Copy package files
|
|
COPY package.json yarn.lock ./
|
|
|
|
# Remove any existing node_modules and reinstall for Alpine Linux
|
|
RUN rm -rf node_modules && yarn install --frozen-lockfile
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
|
|
# Build the application
|
|
RUN yarn build
|
|
|
|
# Production stage
|
|
FROM node:20-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy built artifacts from builder stage
|
|
COPY --from=builder /app/.output ./.output
|
|
COPY --from=builder /app/package.json ./package.json
|
|
|
|
# Expose the port the app runs on
|
|
EXPOSE 3000
|
|
|
|
# Set environment variables
|
|
ENV NUXT_HOST=0.0.0.0
|
|
ENV NUXT_PORT=3000
|
|
ENV NODE_ENV=production
|
|
|
|
# Start the application
|
|
CMD ["node", ".output/server/index.mjs"]
|