Docker와 Docker Compose는 애플리케이션을 컨테이너화하고 멀티 컨테이너 애플리케이션을 관리하는 데 필수적인 도구입니다. 우분투 22.04에서 Docker와 Docker Compose를 설치하는 방법을 아래에 설명합니다.
시스템 업데이트:
먼저, 시스템 패키지를 업데이트합니다.
sudo apt-get update
필요한 패키지 설치:
Docker를 설치하기 전에 필요한 패키지를 설치합니다.
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
Docker GPG 키 추가:
Docker의 GPG 키를 시스템에 추가합니다.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Docker 리포지토리 추가:
Docker의 공식 리포지토리를 시스템에 추가합니다.
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker 설치:
이제 Docker를 설치합니다.
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
Docker 서비스 시작:
Docker 서비스를 시작하고, 자동 시작 설정을 합니다.
sudo systemctl start docker
sudo systemctl enable docker
Docker 설치 확인:
설치가 제대로 되었는지 확인합니다.
docker --version
정상적으로 설치되었다면 Docker 버전 정보가 출력됩니다.
Docker Compose 설치:
아래 명령어로 Docker Compose를 설치합니다.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
실행 권한 부여:
sudo chmod +x /usr/local/bin/docker-compose
Docker Compose 버전 확인:
설치가 완료되었으면 버전 정보를 확인합니다.
docker-compose --version
정상적으로 설치되었다면 Docker Compose 버전 정보가 출력됩니다.
Terminus는 SSH 클라이언트로, EC2 인스턴스에 쉽게 접속할 수 있게 도와주는 도구입니다. Terminus를 사용해 AWS EC2 인스턴스에 SSH 접속하는 방법을 설명합니다.
Terminus 실행 후, New Connection을 클릭하여 새로운 SSH 연결을 설정합니다.
SSH 설정 입력:
ec2-xx-xx-xx-xx.compute-1.amazonaws.com (EC2 퍼블릭 IP 또는 DNS)ec2-user (Amazon Linux의 경우) 또는 ubuntu (Ubuntu의 경우).pem 파일을 선택합니다.Connect 버튼 클릭하여 접속합니다.
정상적으로 접속되면 EC2 인스턴스의 터미널로 들어가게 됩니다. 이제 EC2 인스턴스에서 명령어를 실행할 수 있습니다.
AWS Route 53을 사용하여 EC2 인스턴스와 도메인을 연결하는 방법입니다.
A 레코드 추가
@ (루트 도메인)A123.45.67.89)3600초로 설정CNAME 레코드 추가 (선택 사항)
wwwCNAMEmywebsite.com3600Nginx 설치
sudo apt-get install nginx
Nginx 설정 파일 수정
Nginx 설정 파일을 열고, FastAPI 애플리케이션에 대한 리버스 프록시 설정을 추가합니다.
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
location / {
proxy_pass http://fastapi:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nginx 재시작
sudo systemctl restart nginx
Route 53에서 설정한 DNS 레코드가 전파되려면 최대 48시간이 걸릴 수 있습니다. 이 시간이 지나면 도메인을 통해 EC2 인스턴스에 접속할 수 있습니다.