This repository contains a MERN stack application containerized with Docker. It includes manual setup for the frontend, backend, and database, and uses Docker Compose for management.
Create a common network named mern
that will be used by all services:
docker network create mern
-
Dockerfile in
frontend
:FROM node:18.18.0 WORKDIR /app COPY package.json ./ RUN npm install COPY . . EXPOSE 5173 CMD ["npm", "run", "dev"]
-
Build and run:
cd frontend docker build -t mern-frontend . docker run --name frontend --network=mern -d -p 5173:5173 mern-frontend
Run MongoDB:
docker run --name=mongodb --network=mern -d -p 27017:27017 -v ~/opt/data:/data/db mongo:latest
-
Dockerfile in
backend
:FROM node:18.18.0 WORKDIR /app COPY package.json ./ RUN npm install COPY . . EXPOSE 5000 CMD ["npm", "start"]
-
Build and run:
cd backend docker build -t mern-backend . docker run --name backend --network=mern -d -p 5000:5000 mern-backend
-
Create
docker-compose.yml
:version: '3.8' services: mongodb: image: mongo:latest ports: - "27017:27017" networks: - mern_network volumes: - mongo-data:/data/db backend: build: ./mern/backend ports: - "5050:5050" networks: - mern_network environment: MONGO_URI: mongodb://mongo:27017/mydatabase depends_on: - mongodb frontend: build: ./mern/frontend ports: - "5173:5173" networks: - mern_network environment: REACT_APP_API_URL: http://backend:5050 networks: mern_network: driver: bridge volumes: mongo-data: driver: local # Persist MongoDB data locally
-
Run with Docker Compose:
docker-compose up
This configuration will set up your MongoDB, backend, and frontend services with networking and data persistence.
Hence Dockerized !