[FastAPI] Docker, AWS EC2를 활용하여 배포하기

JinUk Lee·2024년 1월 26일
1

FastAPI

목록 보기
9/9

목표

FastAPI로 만든 애플리케이션을 Docker, AWS를 활용하여 배포한다.

Docker

1. Docker 이미지 빌드하기

Docker 이미지 빌드하기

위 포스팅을 참고한다.

2. Docker Hub에 이미지 올리기

Docker Desktop를 쓴다면 Push to Hub로 간단하게 허브에 올릴 수 있다.

CMD 환경이라면 아래의 명령어로 가능하다.

docker push [image 이름]:[tag 이름] 

중요한 점은 image의 이름을 반드시 [Username]/[이미지이름] 으로 해주어야한다는 것이다.

예를 들어서 이미지 이름을 deploy 로 하고싶다.

그러면 본인의 Username/deploy 로 이미지 이름을 설정해야 Hub에 올릴 수 있다.

도커허브에 들어가보면 이미지가 올라온 것을 확인할 수 있다.

3. AWS EC2 설정하기

Ubuntu로 EC2 인스턴스를 생성한다.

인스턴스를 생성했으면 보안그룹에서 인바운드 규칙 편집에 들어간다.

여기서 유형과 포트에 맞는 규칙을 추가해준다.

기본적으로 HTTP는 80포트, HTTPS는 443 포트를 사용하며, ::/00.0.0.0/0 모두 등록해준다. (모든IP를 말한다)

그 후에는 연결로 들어가 EC2 인스턴스를 조작하기 위한 우분투 터미널로 들어간다.

여기서부터는 CMD에서 했던 것과 비슷하다.

도커허브로부터 이미지를 불러와서 컨테이너에 올리고 퍼블릭 DNS로 접속하면 배포가 완료된다.

주의해야 할 것은 도커 컨테이너에 이미지를 올릴때 포트번호이다.

Dockerfile 에서 아래와 같이 지정했다면

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]

도커의 포트번호가 8080인데, 우리가 사용하는 HTTPS의 포트번호는 보통 443이다.

docker run --name {컨테이너 이름} -p 443:8080 -d {docker 이미지 이름}

포트설정을 이런 식으로 하고 컨테이너를 올려야 외부에서 도커 이미지 애플리케이션에 접근이 가능해진다.

profile
개발자 지망생

0개의 댓글