FastAPI 어플리케이션을 도커
를 사용해 배포해보자. 리눅스 컨테이너 이미지를 생성하여 배포하는 방법은 보안, 반복 가능성, 단순함등의 장점을 갖는다.
개념
컨테이너의 정의
컨테이너(주로 리눅스 컨테이너)는 어플리케이션의 의존성과 필요한 파일들을 모두 패키징하는 매우 가벼운 방법이다. 컨테이너는 같은 시스템에 있는 다른 컨테이너(다른 어플리케이션이나 요소들)와 독립적으로 유지된다.
컨테이너가 시작되면, 해당 커맨드/프로그램이 실행된다.
컨테이너 이미지 개념
컨테이너는 컨테이너 이미지를 실행한 것이다.
컨테이너 이미지란 컨테이너에 필요한 모든 파일, 환경 변수 그리고 디폴트 명령/프로그램의 정적 버전을 의미한다.
여기서 정적이란 말은 컨테이너 이미지가 작동되거나 실행되지 않으며, 단지 패키지 파일과 메타 데이터라는 것을 의미한다.
저장된 정적 컨텐츠인 컨테이너 이미지와 대조되게, 컨테이너란 보통 실행될 수 있는 작동 인스턴스를 의미한다.
컨테이너가 컨테이너 이미지로 부터 시작되고 실행되면, 컨테이너는 파일이나 환경 변수를 생성 및 변경할 수 있다. 이러한 변화는 컨테이너에서만 존재하고, 컨테이너 이미지에는 반영되지 않는다.
컨테이너 이미지는 프로그램 파일이라고 볼 수 있고, 컨테이너는 프로세스로 볼 수 있다.
컨테이너 이미지는 보통 컨테이너를 시작하기 위해 필요한 메타데이터와 디폴트 커맨드/프로그램과 그 프로그램에 전달하기 위한 파라미터들을 포함한다.
도커의 역할
도커는 컨테이너 이미지와 컨테이너를 생성 및 관리할 수 있게 도와주는 도구이다.
도커 허브에는 다양한 도구/환경/데이터베이스에 대해 미리 만들어진 공식 컨테이너 이미지가 존재하며, 이 미리 만들어진 컨테이너 이미지를 사용해 서로 다른 도구들을 결합할 수 있다.
FastAPI를 위한 도커 이미지 빌드하기
Window 환경에서 Docker 설치하기
윈도우 사양 먼저 확인해준다. 나는 Window 11 Home
이기 때문에 WSL2 기반 Docker Engine
을 사용해야 한다.
우선 도커를 다운받는다.
https://learn.microsoft.com/en-us/windows/wsl/install
이거 참고해서 WSL2를 설치했다.