코더
docker 재정리 본문
배경 : docker 배포하는 방법은 알지만 자세하게 어떻게 동작하는지에 대한 지식이 부족해 정리가 필요했다.
CASE : 1 mysql:3306 차이
만약에 인텔리제이에서 실행을 하고 내 pc에서 테스트 하려면?
jdbc:mysql://localhost:3306/dream_stadium_V2
으로 일단 localhost로 yml파일 설정을 한 후
docker compose up -d
로 일단 docker-compose.yml 을 빌드를 해준다.
그 후 생긴 컨테이너로 start 하면 된다.
docker start dream-stadium-V2
즉, 이렇게 하면 docker-compose.yml 통해 빌드 된것을 통해 docker start로 mysql 만 키는것이다.
즉, 인텔리제이도 실행 + 맨 처음 yml 빌드된것 중에 mysql 을 start + docker-compose.yml은 이미 만들어진것을 통해 해당 설정을 킨것이지 이걸 다시 실행은 안한다.
mysql:3306 해야하는 이유가 docker-compose.yml에서 실행을 하는데 그 mysql에 접근을 하기 위해서는 도커의 컨테이너에 있는 mysql을 접속해야 한다는거지? 내 local pc의 mysql을 찾는게 아니라?
CASE : 2 명령어
docker compose up
→ 컨테이너 실행 + 로그를 현재 터미널에 계속 보여줌
docker compose up -d
→ 컨테이너 실행 + 백그라운드에서 실행하고 터미널을 바로 돌려줌
docker compose down
docker compose up --build -d
→
docker compose down
↓ 기존 컨테이너 종료 + 삭제
docker compose up --build -d
↓ Dockerfile 다시 빌드
↓ 새 app 이미지 생성
↓ mysql 컨테이너 생성/실행
↓ app 컨테이너 생성/실행
↓ 백그라운드 실행
docker compose logs -f app
CASE : 3 app의 존재 이유
app은 MySQL을 쓰기 위해 필요한 게 아니라, Spring Boot 서버를 Docker 안에서 실행하기 위해 필요한 거다.
\Docker Compose에서는 이 둘을 각각 컨테이너로 실행한다.
Docker
├── mysql 컨테이너
│ └── DB
│
└── app 컨테이너
└── Spring Boot
그런데 localhost:3306 으로 하면 app이 필요가 없어진다.
즉.
Docker로 백엔드까지 실행하고 싶다 -> mysql + app 둘 다 필요
IntelliJ에서 백엔드를 실행한다 -> app 컨테이너 필요 없음 -> mysql 컨테이너만 있어도 됨
'최종 프로젝트' 카테고리의 다른 글
| 깃허브 관리 / 발생한 문제점 (0) | 2026.08.14 |
|---|---|
| (최종 프로젝트) 구글 recaptcha (0) | 2026.08.13 |
| (최종 프로젝트)Oauth2.0 정리 (0) | 2026.08.13 |