본문 바로가기

프로젝트/캡스톤

FastApi + Docker 로 분리된 서버 배포 준비 (+bind mount)

독립적인 마이크로 서비스 서버 하나를 만들었으니.. 이걸 메인서버랑 분리가 가능하다...따라서!

 

도커를 사용해서 배포 쪽을 자동화 해보겠다.

 

최종 목표는... 이 서버는 GET 용으로 사용할 예정이기 때문에 서버 내부의 매커니즘이 inconsistent해질 일이 없다.

 

따라서 이중화를 해서 로드밸런싱 해보는 것 까지 목표로..!

 

FROM python:latest

WORKDIR /app

COPY ./requirements.txt /app/

RUN pip install -r requirements.txt

COPY . .

CMD uvicorn main:app --host=0.0.0.0 --port=8000

간단하게 이렇게 해놓고(포트번호는 일단 8000으로 해놓고 나중에 배포 단계에서 동적으로 할당시킬것 ex) 7999 8000 8001 8002 이런식으로 포트 여러개 찍어 내서 이중화할 예정 -> 여러 도커 인스턴스를 만들어놓고 앞에 미들웨어 서버 만들어서 GLB 역할하는 프로그램 하나 두면됨)

 

docker build -t capstone .

 

빌드하면...잘 된다!!

 

잘 되지만 견본이므로,, 저번주에 배운 몇가지 간단한 잔재주만 써보고 다시 공부하러 간다

 

FROM python:latest

WORKDIR /app

COPY ./requirements.txt /app/

RUN pip install -r requirements.txt

COPY . .

ARG DEFAULT_PORT=8000

ENV PORT $DEFAULT_PORT

EXPOSE $PORT

CMD uvicorn main:app --host=0.0.0.0 --port=$PORT --reload

1. 포트를 도커 런타임에서 설정할 수 있게 바꾸었다. 다만 설정하지 않는다면 포트번호는 8000

 

docker run -p 8000:8000 --rm --env PORT=8000 -v C:\Users\bjm77\PycharmProjects\capstone:/app:ro --name capstone-app capstone

2. 바인드 마운트 적용 - 프로덕트가 아니라  개발 모드이기 때문에 코드가 다 완성되기 전에는 당분간 이렇게 사용하기로 한다.

리로딩도 정확하게 된다!!

 

이제 모듈간 통신을...

도커 좀 더 공부해봐야겠다...