diff --git a/README.md b/README.md index d6f5cfe..47733d7 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,33 @@ After running the seed script, you can log in with these local-only development | Student 1 | `student1@learnhub.com` | `student1password` | | Student 2 | `student2@learnhub.com` | `student2password` | -> These accounts are for local development only and are generated by the seed script. +
+ +## (Alternatively)Running with Docker + +### Start all services + +```bash +docker compose up --build +``` + +### Stop services + +```bash +docker compose down +``` + +### Seed the database + +```bash +docker compose exec backend node seed.js +``` + +Frontend: http://localhost:5173 + +Backend: http://localhost:5000 + +## 🛠 Roadmap / Not Yet Implemented ## Roadmap / Not Yet Implemented diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..8db1b4f --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,5 @@ +node_modules +.git +.gitignore +npm-debug.log +Dockerfile \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..f8ede12 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,12 @@ +FROM node:22-alpine + +WORKDIR /app +COPY package*.json ./ + +RUN npm ci + +COPY . . + +EXPOSE 5000 + +CMD [ "npm", "start" ] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..58e4e3a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,50 @@ +services: + mongodb: + image: mongo:8 + + ports: + - "27017:27017" + + volumes: + - mongo-data:/data/db + + backend: + build: + context: ./backend + + container_name: learnhub-backend + + ports: + - "5000:5000" + + env_file: + - ./backend/.env + + environment: + MONGO_URI: mongodb://mongodb:27017/learnhub + + depends_on: + - mongodb + + volumes: + - ./backend:/app + - /app/node_modules + + frontend: + build: + context: ./frontend + + container_name: learnhub-frontend + + ports: + - "5173:5173" + + depends_on: + - backend + + volumes: + - ./frontend:/app + - /app/node_modules + +volumes: + mongo-data: \ No newline at end of file diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..30e61be --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,6 @@ +node_modules +dist +.git +.gitignore +npm-debug.log +Dockerfile \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..b1addcc --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,13 @@ +FROM node:22-alpine + +WORKDIR /app + +COPY package*.json ./ + +RUN npm ci + +COPY . . + +EXPOSE 5173 + +CMD [ "npm", "run", "dev", "--", "--host" ] \ No newline at end of file