diff --git a/DockerFile b/DockerFile index 82f4240..ac80fd6 100644 --- a/DockerFile +++ b/DockerFile @@ -1,17 +1,21 @@ # Stage 1: Build FROM node:18-alpine AS builder +# Set working directory WORKDIR /app +# Copy package files and install dependencies COPY package.json package-lock.json ./ RUN npm install --production +# Copy the rest of the app COPY . . -# Build-time environment variable -ARG NEXT_PUBLIC_API_URL=https://cmcbackend.rootxwire.com -ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL +# Pass build-time environment variable +ARG NEXT_PUBLIC_API_URL +ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} +# Build the Next.js app RUN npm run build # Stage 2: Run @@ -19,18 +23,23 @@ FROM node:18-alpine AS runner WORKDIR /app -COPY --from=builder /app/package.json ./ -COPY --from=builder /app/package-lock.json ./ +# Copy built app from builder COPY --from=builder /app/.next ./.next COPY --from=builder /app/public ./public +COPY --from=builder /app/package.json ./package.json +COPY --from=builder /app/package-lock.json ./package-lock.json COPY --from=builder /app/next.config.js ./next.config.js +# Install only production dependencies RUN npm install --production +# Expose port EXPOSE 3000 +# Runtime environment variables ENV NODE_ENV=production -ENV NEXT_PUBLIC_API_URL=https://cmcbackend.rootxwire.com +ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} ENV HOST=0.0.0.0 +# Start the app CMD ["npm", "start"] diff --git a/docker-compose.yml b/docker-compose.yml index 92fd906..2915cfe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,14 +2,13 @@ version: "3.9" services: nextjs: - build: - context: . - args: - NEXT_PUBLIC_API_URL: https://cmcbackend.rootxwire.com + build: . container_name: cmc_nextjs_pro ports: - "9012:3000" - environment: - NODE_ENV: production - NEXT_PUBLIC_API_URL: https://cmcbackend.rootxwire.com + env_file: + - .env # <-- tell Docker to use the .env file restart: unless-stopped + volumes: + - .:/app + - /app/node_modules