오늘부터 프로젝트를 하나 진행하기로 했다.
주제는 "배달 어플 클론 코딩(+AI로 리뷰 요약 기능을 곁들인..)"
여러 번 프로젝트를 진행했지만 배포나 인프라 구축에 대해서는 코치님이 하시는 걸 보고 '따라 하기'에만 그쳤어서 항상 찜찜한 상태로 묻어두었었다. 이번 프로젝트에서는 한번 제대로 이해하고 직접 구축해보고자 한다.
목표
- Docker를 이용한 컨테이너 환경 구축
- GitHub Actions를 이용한 CI/CD 파이프라인 구축
- Docker Hub를 이용한 Docker Image 관리
- AWS EC2 자동 배포
- 인프라 아키텍처 설계
Docker를 사용하는 이유
처음에는 CI/CD를 쉽게 하기 위한 목적으로 Docker 도입을 고민했었다. (간단한 프로젝트라 Docker를 사용하는 게 맞는지에 대한 의문도 있었다.)
좀 더 알아보니 Docker를 사용하는 이유는 크게 네 가지였다.
1. 개발 환경과 운영 환경을 동일하게 유지
팀원마다 Java 버전이나 DB 버전이 다르면 실행 오류가 발생할 수 있는데, Docker를 활용하면 모든 팀원이 동일한 환경에서 개발할 수 있다.
2. 배포 환경 관리
Docker Image만 있으면 어느 환경에서도 동일한 애플리케이션을 실행할 수 있다.
3. CI/CD 자동화
GitHub Actions에서 Docker Image를 생성하고 이를 Docker Hub에 업로드(Push)하면, EC2에서는 해당 이미지를 Pull 받아 실행하면 된다.
4. 확장성
프로젝트 내용 중 향후 확장성도 고려해보라는 도전 과제가 있었기에, 확장성 측면에서는 Docker가 가장 적합하다고 판단했다.
Docker Image 생성 과정
오늘 가장 헷갈렸던 부분이다.
① GitHub Actions 실행
GitHub에 Push하면 GitHub Actions가 실행된다.
② Gradle Build
./gradlew build
실행
Java Source
↓
Compile
↓
Test
↓
app.jar 생성
③ Docker Image Build
생성된 app.jar를 이용하여
docker build
를 수행한다.
Dockerfile에서는
COPY build/libs/app.jar app.jar
와 같이 생성된 app.jar를 Docker Image 내부로 복사한다.
Docker Build가 끝나면 Docker Engine 내부의 Local Image Store에 Docker Image가 생성된다.
즉,
Source Code
↓
Gradle Build
↓
app.jar
↓
Docker Build
↓
Docker Image 생성
과 같은 흐름으로 진행된다.
④ Docker Hub Push
생성된 Docker Image를
docker push
명령을 통해 Docker Hub로 업로드한다.
Docker Hub는 Docker Image를 저장하는 원격 저장소 역할을 한다.
GitHub가 소스코드를 저장한다면, Docker Hub는 Docker Image를 저장한다고 이해하면 된다.
⑤ EC2 배포
GitHub Actions는 EC2에 SSH로 접속하여
docker compose pull
docker compose up -d
명령을 수행한다.
그러면 EC2는 Docker Hub에서 최신 이미지를 Pull 받아 새로운 컨테이너를 실행하게 된다.
프로젝트 목표
이번 프로젝트에서 가장 큰 목표는 인프라 구축 경험을 쌓는 것이다.
이번 프로젝트를 통해 경험하고 싶은 내용은 다음과 같다.
- Docker 기반 개발 환경 구축
- Docker Compose를 이용한 멀티 컨테이너 관리
- GitHub Actions 기반 CI/CD
- Docker Hub를 활용한 이미지 배포
- AWS EC2 자동 배포
- Amazon S3 연동
- PostgreSQL 운영
이번에는 특별한 기능 구현보다는 실제 서비스와 유사한 배포 환경을 구축하는 경험에 집중해볼 예정이다.

'Project > 삼인분' 카테고리의 다른 글
| [Infra] 운영 서버 메모리와 Swap 필요성 (0) | 2026.07.15 |
|---|---|
| [결제 도메인] 프로젝트 피드백 및 배운 점 (0) | 2026.07.14 |
| [Infra: AWS] Docker Hub를 활용한 EC2 배포 환경 구축 (AWS EC2 + Docker + Docker Hub) (0) | 2026.07.07 |
| [Infra: Docker] docker compose 만들기 (0) | 2026.07.07 |
| [Infra: Docker] Dockerfile 만들기 (0) | 2026.07.06 |