FastAPI로 만든 애플리케이션을 Docker, AWS를 활용하여 배포한다.
위 포스팅을 참고한다.
Docker Desktop
를 쓴다면 Push to Hub
로 간단하게 허브에 올릴 수 있다.
CMD 환경이라면 아래의 명령어로 가능하다.
docker push [image 이름]:[tag 이름]
중요한 점은 image의 이름을 반드시 [Username]/[이미지이름] 으로 해주어야한다는 것이다.
예를 들어서 이미지 이름을 deploy
로 하고싶다.
그러면 본인의 Username/deploy
로 이미지 이름을 설정해야 Hub에 올릴 수 있다.
도커허브에 들어가보면 이미지가 올라온 것을 확인할 수 있다.
Ubuntu
로 EC2 인스턴스를 생성한다.
인스턴스를 생성했으면 보안그룹에서 인바운드 규칙 편집에 들어간다.
여기서 유형과 포트에 맞는 규칙을 추가해준다.
기본적으로 HTTP는 80포트, HTTPS는 443 포트를 사용하며, ::/0
과 0.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 이미지 이름}
포트설정을 이런 식으로 하고 컨테이너를 올려야 외부에서 도커 이미지 애플리케이션에 접근이 가능해진다.