제가 하고있는 사이드 프로젝트의 백엔드가 FastAPI로 구성되어있습니다.
프론트, 백엔드, DB 구동을 쉽게하고 전반적인 서비스 관리를 편리하게 하기 위해 Docker를 사용하고자 합니다.
- 프론트 Dockerfile
- 백엔드 Dockerfile
- DB Dockerfile
- Docker-compose
위 4가지가 필요합니다.
이중 2번을 진행해보겠습니다.
우선 폴더 구조를 다음처럼 잡았습니다.
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를 작성해주셔야 프로젝트 구동이 원할하게 이루어집니다.
도커를 빌드해 도커 컨테이너를 생성하기 위한 이미지를 생성하겠습니다.
docker build -t 이미지명 .
이를 진행하고 나면 우리가 만든 이미지가 생성됩니다.
docker run --name 컨테이너명지정 -d -p 9090:80 3의이미지명
컨테이너를 실행할 떄 사용할 수 있는 인자 옵션이 다양하게 있습니다.
docker run (<옵션>) <이미지 식별자> (<명령어>) (<인자>)
이렇게 실행한 컨테이너가 잘 접속되는지 localhost:9090 으로 들어가보면 우리가 구성한 값이 잘 보이는 것을 볼 수 있습니다.