클라우드에서 Docker로 배포하기

KUKJIN LEE • 2일 전 작성
왜 클라우드 배포가 필요할까?
애플리케이션을 개발하고 로컬에서 실행하는 것은 쉽지만, 실제 사용자들이 접근할 수 있도록 배포하려면 클라우드 서버가 필요합니다.
Docker를 활용하면 개발 환경과 동일한 상태로 애플리케이션을 배포할 수 있어 운영이 훨씬 쉬워집니다.
✅ Docker 배포의 장점
✔️ 어디서든 동일한 환경에서 실행 가능 (개발 환경 ≈ 운영 환경)
✔️ 빠른 배포 및 롤백 가능
✔️ 다양한 클라우드 플랫폼(AWS, GCP, Azure)에서 손쉽게 실행
Docker 애플리케이션 배포 개요
Docker 애플리케이션을 클라우드에 배포하는 방법은 여러 가지가 있지만 아래가 많이 사용됩니다.
- Docker Hub에 이미지 업로드 → 서버에서 실행
- AWS EC2에서 직접 컨테이너 실행
- AWS ECS, GCP Cloud Run 등 컨테이너 서비스 활용
Docker 앱을 AWS EC2에 배포해보기
🔹 Docker Hub에 애플리케이션 이미지 업로드
클라우드에서 실행하려면 먼저 Docker Hub에 이미지를 업로드해야 합니다.
📌 Docker Hub 로그인
docker login
📌 2. 애플리케이션 빌드 (Dockerfile
필요)
docker build -t my-docker-app .
📌 3. Docker Hub에 태그 추가
docker tag my-docker-app <DockerHubID>/my-docker-app
📌 4. Docker Hub에 이미지 업로드
docker push <DockerHubID>/my-docker-app
✅ 이제 클라우드에서 이미지를 가져와 실행할 수 있습니다!
🔹 AWS EC2에서 Docker 컨테이너 실행
이미지를 Hub에 올려놨으니, AWS EC2 인스턴스를 생성하고, Docker 컨테이너를 실행합시다~
📌 1. AWS EC2 인스턴스 생성
-
AWS에 로그인 후 EC2 인스턴스 생성
-
Amazon Linux 2 또는 Ubuntu 선택
-
보안 그룹에서 포트 8080(애플리케이션용)과 22(SSH 접속용) 허용
📌 2. SSH로 EC2 접속
ssh -i my-key.pem ec2-user@<EC2-퍼블릭-아이피>
📌 3. Docker 설치
sudo yum update -y
sudo yum install docker -y
sudo systemctl start docker
sudo usermod -aG docker ec2-user
📌 4. Docker Hub에서 이미지 가져오기 & 실행
docker pull <DockerHubID>/my-docker-app
docker run -d -p 8080:8080 <DockerHubID>/my-docker-app
📌 5. 애플리케이션 접속 확인
이제 웹 브라우저에서 http://<EC2-퍼블릭-IP>:8080
에 접속하면 애플리케이션이 실행됩니다! 🚀
사실 DockerFile만 실행시키면 의미가 없습니다. Docker-compose를 사용하는 것이 좋습니다.
Docker Compose를 활용한 배포
예를들어 MySQL 등 다른 서비스와 함께 배포해야 한다면, Docker Compose를 활용하면 더욱 편리합니다.
📌 EC2에서 docker-compose.yml
파일 작성
version: '3.8'
services:
database:
image: mysql:8.0
container_name: mysql-container
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: testdb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
app:
image: <DockerHubID>/my-docker-app
container_name: spring-app
depends_on:
- database
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://database:3306/testdb
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: password
ports:
- "8080:8080"
📌 Docker Compose 실행
docker-compose up -d
✅ 이제 MySQL과 애플리케이션이 함께 실행됩니다! 🎉
실무에서 활용 가능한 클라우드 배포 옵션
AWS EC2에서 직접 Docker를 실행하는 방법 외에도, 다양한 클라우드 배포 방식이 있습니다.
배포 방식 |
특징 |
---|---|
AWS ECS (Elastic Container Service) |
Docker 컨테이너 자동 관리 가능 |
AWS EKS (Kubernetes) |
대규모 Kubernetes 클러스터 운영 가능 |
GCP Cloud Run |
서버리스 컨테이너 실행 |
Azure Container Apps |
Azure에서 쉽게 컨테이너 실행 |
✅ 규모가 커지면 ECS 또는 Kubernetes를 활용하는 것이 효율적입니다!