Docker Hub는 Docker, Inc.에서 제공하는 클라우드 기반의 Docker 이미지 레지스트리(Registry)입니다. 간단히 말해, "Docker 이미지를 위한 GitHub"라고 생각할 수 있습니다.
핵심 역할:
Dockerfile로 빌드한 나만의 커스텀 이미지를 안전하게 저장합니다.주요 명령어:
docker login: Docker Hub 계정으로 로그인합니다.docker tag <로컬 이미지> <사용자명>/<이미지명>:<태그>: 이미지를 Docker Hub에 푸시하기 위한 이름 형식으로 변경합니다.docker push <사용자명>/<이미지명>:<태그>: Docker Hub로 이미지를 업로드합니다.AWS EC2 인스턴스는 기본적으로 비어있는 가상 서버이므로, Docker 컨테이너를 실행하기 위해서는 먼저 Docker 실행 환경을 구축해야 합니다.
구축 절차:
# Amazon Linux 2 예시
sudo yum update -y
sudo yum install -y dockersudo systemctl start docker
sudo systemctl enable dockersudo 없이 docker 명령어를 실행할 수 있도록 현재 사용자(e.g., ec2-user)를 docker 그룹에 추가합니다. (보안상 주의가 필요하지만 개발/학습 환경에서는 편의성을 위해 사용)sudo usermod -aG docker ec2-user
# 권한 적용을 위해 SSH 세션을 재접속해야 합니다.CI/CD는 "지속적인 통합(Continuous Integration)"과 "지속적인 배포(Continuous Deployment/Delivery)"를 의미하며, 애플리케이션 개발부터 배포까지의 전체 과정을 자동화하는 것을 목표로 합니다.
CI (Continuous Integration): 개발자가 코드를 Git과 같은 중앙 리포지토리에 푸시(Push)하면, 자동으로 빌드(Build)되고 테스트(Test)되는 과정입니다.
CD (Continuous Deployment): CI 단계가 성공적으로 완료되면, 빌드된 결과물(Docker 이미지)이 자동으로 실제 운영 서버에 배포(Deploy)되는 과정입니다.
Jenkins vs GitHub Actions:
.yml 설정 파일만으로 파이프라인을 정의할 수 있어, 시작하기 매우 간편하고 직관적입니다..github/workflows 디렉토리에 워크플로우(Workflow) YAML 파일을 작성하여, 특정 이벤트(e.g., main 브랜치에 코드 푸시)가 발생했을 때 CI/CD 파이프라인이 자동으로 실행되도록 구성합니다.트리거 (Trigger): main 브랜치에 코드가 푸시되면 워크플로우를 시작합니다.
[CI] 애플리케이션 빌드:
./gradlew build 명령어로 Spring Boot 애플리케이션을 빌드하여 JAR 파일을 생성합니다.[CI] Docker 이미지 빌드 및 푸시:
DOCKER_USERNAME과 DOCKER_PASSWORD를 사용하여 Docker Hub에 로그인합니다.Dockerfile을 사용하여 Docker 이미지를 빌드합니다.[CD] AWS EC2에 배포:
EC2_HOST, EC2_USERNAME, EC2_SSH_KEY)를 사용하여, GitHub Actions 서버가 EC2 인스턴스에 SSH로 원격 접속합니다.docker stop)하고 제거(docker rm)합니다.docker run)하여 애플리케이션 배포를 완료합니다.