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

KUKJIN LEE's profile picture

KUKJIN LEE2일 전 작성

왜 클라우드 배포가 필요할까?

애플리케이션을 개발하고 로컬에서 실행하는 것은 쉽지만, 실제 사용자들이 접근할 수 있도록 배포하려면 클라우드 서버가 필요합니다.
Docker를 활용하면 개발 환경과 동일한 상태로 애플리케이션을 배포할 수 있어 운영이 훨씬 쉬워집니다.

 

Docker 배포의 장점
✔️ 어디서든 동일한 환경에서 실행 가능 (개발 환경 ≈ 운영 환경)
✔️ 빠른 배포 및 롤백 가능
✔️ 다양한 클라우드 플랫폼(AWS, GCP, Azure)에서 손쉽게 실행

 

Docker 애플리케이션 배포 개요

Docker 애플리케이션을 클라우드에 배포하는 방법은 여러 가지가 있지만 아래가 많이 사용됩니다.

  1. Docker Hub에 이미지 업로드 → 서버에서 실행
  2. AWS EC2에서 직접 컨테이너 실행
  3. 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를 활용하는 것이 효율적입니다!

New Tech Posts