init kinda
This commit is contained in:
49
Dockerfile
Normal file
49
Dockerfile
Normal file
@@ -0,0 +1,49 @@
|
||||
# ---------- STAGE 1: Build React Front End ----------
|
||||
FROM node:18-alpine AS build
|
||||
|
||||
# Create app directory
|
||||
WORKDIR /app
|
||||
|
||||
# Copy root package.json/package-lock.json
|
||||
COPY package*.json ./
|
||||
|
||||
# Copy client folder's package.json/package-lock.json
|
||||
COPY client/package*.json ./client/
|
||||
|
||||
# Install dependencies:
|
||||
# 1) Install root dependencies (for server)
|
||||
RUN npm install
|
||||
|
||||
# 2) Install client dependencies
|
||||
WORKDIR /app/client
|
||||
RUN npm install
|
||||
|
||||
# Copy the rest of the React client code
|
||||
COPY client/ /app/client
|
||||
|
||||
# Build the React client
|
||||
RUN npm run build
|
||||
|
||||
# ---------- STAGE 2: Final Image ----------
|
||||
FROM node:18-alpine
|
||||
|
||||
# Create directory for your server
|
||||
WORKDIR /app
|
||||
|
||||
# Copy root package.json/package-lock.json again
|
||||
COPY package*.json ./
|
||||
|
||||
# Install server dependencies
|
||||
RUN npm install
|
||||
|
||||
# Copy your server code
|
||||
COPY server.js ./
|
||||
|
||||
# Copy the compiled React build from STAGE 1
|
||||
COPY --from=build /app/client/build ./client/build
|
||||
|
||||
# We will serve on port 4000 (or your choice)
|
||||
EXPOSE 4000
|
||||
|
||||
# Start the server
|
||||
CMD [ "node", "server.js" ]
|
Reference in New Issue
Block a user