FastAPI Dockerfile 만들기

snooby·2022년 8월 22일
3

🐳 Docker & K8S

목록 보기
31/51
post-thumbnail

제가 하고있는 사이드 프로젝트의 백엔드가 FastAPI로 구성되어있습니다.
프론트, 백엔드, DB 구동을 쉽게하고 전반적인 서비스 관리를 편리하게 하기 위해 Docker를 사용하고자 합니다.

  1. 프론트 Dockerfile
  2. 백엔드 Dockerfile
  3. DB Dockerfile
  4. Docker-compose

위 4가지가 필요합니다.
이중 2번을 진행해보겠습니다.

1. 프로젝트 구조

우선 폴더 구조를 다음처럼 잡았습니다.

2. Dockerfile 작성

Dockerfile에 내용은

FROM python:3.10

COPY ./src /src
WORKDIR /src

RUN pip install -r requirements.txt

EXPOSE 80

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

소스가 src내에 존재하므로 workdir은 src이고 docker로 fastapi 서버를 띄우기위해 필요한 명령문을 CMD 에 작성합니다.
src 폴더 내에 프로젝트를 구동함에 필요한 requirements.txt를 작성해주셔야 프로젝트 구동이 원할하게 이루어집니다.

3. 도커 이미지 빌드

도커를 빌드해 도커 컨테이너를 생성하기 위한 이미지를 생성하겠습니다.

docker build -t 이미지명 .

이를 진행하고 나면 우리가 만든 이미지가 생성됩니다.

4. 컨테이너 실행

docker run --name 컨테이너명지정 -d -p 9090:80 3의이미지명

컨테이너를 실행할 떄 사용할 수 있는 인자 옵션이 다양하게 있습니다.
docker run (<옵션>) <이미지 식별자> (<명령어>) (<인자>)

  • --name 컨테이너명 설정
  • -d 백그라운드 실행
  • --rm 일회성 사용 -> 중지하고 나면 모든 리소스 삭제
  • -p 호스트와 컨테이너 간의 포트 바인드에 사용
    ex) 9090:80 -> 컨테이너 내부에서 80으로 포트 리스능을 하고 있고 컴퓨터 9090에서 접속 가능하다.

이렇게 실행한 컨테이너가 잘 접속되는지 localhost:9090 으로 들어가보면 우리가 구성한 값이 잘 보이는 것을 볼 수 있습니다.

profile
데이터를 가치있게 다루고 싶은 개발자 🐥

0개의 댓글