[FastAPI] Docker 이미지 만들기

JinUk Lee·2024년 1월 18일
0

FastAPI

목록 보기
6/9

프로젝트 구성

fastapiboard
├─ Dockerfile
├─ myapp
│  ├─ domain
│  │  ├─ articles
│  │  ├─ comments
│  │  └─ users
│  ├─ main.py
│  ├─ migrations
│  └─ models.py
└─ requirements.txt

Dockerfile 작성

FROM python:3.9

WORKDIR /test

COPY ./requirements.txt /test/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /test/requirements.txt

COPY ./myapp /test/myapp

WORKDIR /test/myapp

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

명령어

Docker을 실행하고 아래의 명령어를 입력해준다.

docker build -t test-image:latest .

주의사항

Dockerfile을 작성할때, main.py의 구성에 주의해야한다.

main.py에는 같은 디렉토리에 있는 domainimport하는 구조로 되어있었는데,

myapp 디렉토리에서 uvicorn main:app --reload 를 실행하면 문제가 발생하지 않았지만,

상위 디렉토리인 fastapiboard에서 uvicorn myapp.main:app --reload로 실행하면 domain 모듈을 불러오지 못해 오류가 발생했다.

따라서, Dockerfile을 작성할때도 이에 주의하여 명령어 직전에 WORKDIR 로 디렉토리를 설정해주어야한다.

결과


이미지 파일을 생성하고 실행까지 제대로 작동했다.

이제 이 파일을 배포해보겠다.

profile
개발자 지망생

0개의 댓글