AWS EC2에서 Docker를 활용한 배포
·
Infra/Docker
이번 글에서는 AWS EC2와 Docker를 조합하여 Spring Boot 애플리케이션을 효율적으로 배포하는 방법을 단계별로 알아보겠습니다. 특히 AWS ECR(Elastic Container Registry)을 활용한 이미지 관리부터 Docker Compose를 통한 멀티 컨테이너 환경 구축까지 다룰 예정입니다.EC2 환경 준비하기Docker와 Docker Compose 설치먼저 Ubuntu EC2 인스턴스에 Docker 환경을 구축해야 합니다. 다음 명령어로 한 번에 설치할 수 있습니다.sudo apt-get update && \sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \c..
AWS EC2에 서버 배포
·
Infra/Docker
로컬 환경에서 완성한 웹 애플리케이션을 실제 사용자들이 접근할 수 있도록 만드는 것, 바로 배포입니다. 도커를 활용한 배포를 학습하기 전, 이번 글에서는 AWS EC2를 활용하여 서버를 배포하는 전 과정을 단계별로 살펴보겠습니다.배포의 본질과 필요성배포란 무엇인가배포(Deployment)는 우리가 개발한 애플리케이션을 다른 사용자들이 인터넷을 통해 접근할 수 있도록 만드는 과정입니다. 로컬 환경에서만 동작하던 서버를 외부에 공개하여 전 세계 어디서든 접속 가능하게 만드는 것이죠.배포가 완료되면 애플리케이션은 고유한 주소를 부여받게 됩니다. IP 주소(예: 124.16.2.1)나 도메인(예: www.example.com) 형태로 제공되는 이 주소를 통해 사용자들은 우리의 서비스에 접근할 수 있습니다.개인 ..
Docker Compose 2
·
Infra/Docker
현대 애플리케이션은 단일 서비스로만 구성되는 경우가 드뭅니다. 대부분 웹 서버, 데이터베이스, 캐시 서버 등 여러 컴포넌트가 함께 동작하여 완전한 시스템을 구성합니다. 개발 과정에서 이런 복잡한 환경을 매번 수동으로 설정하는 것은 매우 비효율적입니다. Docker Compose는 이런 문제를 해결해주는 도구로, 여러 컨테이너를 하나의 설정 파일로 관리할 수 있게 해줍니다.Docker Compose의 필요성다중 컨테이너 관리의 복잡성실제 웹 애플리케이션을 개발할 때를 생각해보겠습니다. Spring Boot로 개발한 백엔드 서버가 있고, MySQL 데이터베이스가 필요하며, 성능 향상을 위해 Redis 캐시 서버도 함께 사용한다고 가정해보겠습니다.Docker 없이 이런 환경을 구성한다면 각각의 서비스를 개별적..
Docker Compose 1
·
Infra/Docker
Docker를 사용하다 보면 필연적으로 마주치게 되는 문제가 있습니다. 단일 컨테이너만으로는 실제 서비스를 구성하기 어렵다는 점입니다. 웹 애플리케이션을 운영하려면 프론트엔드 서버, 백엔드 API 서버, 데이터베이스, 캐시 서버 등 여러 컨테이너가 함께 동작해야 합니다. 각각의 컨테이너를 개별적으로 관리하는 것은 복잡하고 비효율적입니다. Docker Compose는 이러한 문제를 해결하여 여러 컨테이너를 하나의 서비스로 정의하고 통합 관리할 수 있게 해주는 도구입니다.Docker Compose의 핵심 가치복잡성 제거와 표준화Docker Compose의 가장 큰 장점은 복잡한 Docker CLI 명령어들을 YAML 파일 하나로 대체할 수 있다는 점입니다. 긴 옵션들과 매개변수들로 가득한 docker run..
Dockerfile
·
Infra/Docker
Docker를 사용하다 보면 기존에 제공되는 이미지만으로는 우리의 요구사항을 충족하기 어려운 경우가 많습니다. 특정 애플리케이션을 실행하거나, 개발 환경에 맞는 커스텀 설정이 필요할 때가 그런 상황입니다. Dockerfile은 이러한 문제를 해결해주는 강력한 도구로, 우리만의 맞춤형 Docker 이미지를 생성할 수 있게 해줍니다.Dockerfile의 개념과 필요성Docker 이미지 커스터마이징의 한계Docker Hub에서 제공하는 기본 이미지들은 범용적으로 설계되어 있어 특정 프로젝트의 요구사항을 완벽하게 만족하기 어렵습니다. 예를 들어, Node.js 이미지를 다운로드받아도 우리의 애플리케이션 코드는 포함되어 있지 않고, 필요한 의존성 패키지도 설치되어 있지 않습니다.매번 컨테이너를 실행할 때마다 수동..
Docker Volume
·
Infra/Docker
Docker를 사용하여 개발하다 보면 반드시 마주치게 되는 문제가 있습니다. 바로 컨테이너가 삭제되면 내부 데이터도 함께 사라진다는 점입니다. 개발 환경에서 데이터베이스 컨테이너를 재시작할 때마다 기존 데이터가 모두 사라진다면, 매번 초기 설정을 다시 해야 하는 번거로움이 발생합니다. Docker Volume은 이러한 문제를 해결하여 컨테이너의 생명주기와 독립적으로 데이터를 보존할 수 있게 해주는 기능입니다.컨테이너 데이터의 근본적 한계일시적 데이터 저장소로서의 컨테이너Docker 컨테이너는 태생적으로 임시적인 특성을 가지고 있습니다. 컨테이너가 실행되는 동안 생성되는 모든 데이터는 컨테이너의 내부 파일 시스템에 저장되는데, 이는 컨테이너와 함께 생성되고 소멸됩니다.이러한 특성은 무상태(stateless..