이제 도커 네트워크까지 배웠으니, **프론트(React) - 백엔드(Node.js) - 데이터베이스(MongoDB)**로 구성된 3-Tier 구조를 실제로 배포해봅시다.


🏗️ 1. 호스트에 직접 애플리케이션 구축

먼저 일반적인 방식으로 호스트 머신에 React, Node.js, MongoDB를 설치해 실행할 수 있습니다.

하지만 이렇게 하면 환경 설정이 복잡하고 배포 시마다 동일한 환경 보장 어려움 → 그래서 **도커라이징(Dockerizing)**을 진행합니다.


🗄️ 2. MongoDB 컨테이너화

✅ (1) 데이터 유지를 위한 볼륨 사용

docker run -d --name my-mongo \\
  -p 27016:27017 \\
  -v mongo-data:/data/db \\
  mongo --auth

✅ (2) 컨테이너 접속 후 DB 설정

docker exec -it my-mongo mongosh admin

db.createUser({
  user: "root",
  pwd: "1234",
  roles:[{ role: "root", db: "admin" }]
});

use my-todo;

db.users.insertOne({
  username: "sesac",
  password: "1234",
  age: 25,
  refreshToken: "dummy_refresh_token"
});


🖧 3. 백엔드(Node.js) 도커라이징

✅ (1) 네트워크 생성

docker network create my-net

✅ (2) MongoDB 컨테이너를 네트워크에 추가

docker run -d --name my-mongo-db \\
  -p 27016:27017 \\
  --network my-net \\
  -v mongo-data:/data/db \\
  mongo