deafmissoula-website/Dockerfile
2024-10-14 14:15:30 -05:00

54 lines
No EOL
1.1 KiB
Docker

# Build stage
FROM node:14 AS build
WORKDIR /app
# Copy package.json and package-lock.json
COPY .env ./.env
COPY package*.json ./
COPY client/package*.json ./client/
COPY server/package*.json ./server/
# Install dependencies
RUN cd client && npm cache clean --force && rm -rf node_modules && npm install
RUN cd server && npm install
# Copy source code
COPY . .
# Install nodemailer and dotenv
RUN npm install nodemailer dotenv date-fns react-icons
# Build client
RUN cd client && npm run build
# Install all dependencies including devDependencies
RUN cd server && npm install
# Build server
RUN cd server && npm run build
# Remove devDependencies
RUN cd server && npm prune --production
# Production stage
FROM node:14-alpine
WORKDIR /app
# Copy built assets from build stage
COPY --from=build /app/client/build ./client/build
COPY --from=build /app/server ./server
COPY --from=build /app/.env ./.env
# Set working directory to server
WORKDIR /app/server
# Install production dependencies
RUN npm install --only=production
# Expose port
EXPOSE 5000
# Start the server
CMD ["npm", "start"]