728x90
도커를 사용한 FastAPI 애플리케이션 컨테이너화
강의 목표:
- Docker를 사용하여 FastAPI 애플리케이션을 컨테이너화하는 방법을 학습한다.
- Dockerfile을 작성하고, 컨테이너 이미지를 생성 및 실행해 FastAPI 애플리케이션을 배포할 수 있다.
강의 세부 내용:
1. Docker와 컨테이너 개념
- Docker란?: 애플리케이션과 그 의존성을 함께 패키징하여 일관된 실행 환경을 제공하는 컨테이너 기술.
- 컨테이너: 운영체제 레벨에서 격리된 환경에서 애플리케이션을 실행할 수 있도록 해주는 가상화 기술.
- Docker를 사용하면 FastAPI 애플리케이션을 개발 환경과 동일하게 실행할 수 있으며, 일관된 환경에서 배포 및 스케일링이 가능합니다.
2. Docker로 FastAPI 애플리케이션 컨테이너화
예제 1: Dockerfile 작성
FastAPI 애플리케이션을 Docker 이미지로 만들기 위해 Dockerfile을 작성합니다.
- 프로젝트 구조:
my_fastapi_app/ ├── main.py ├── requirements.txt └── Dockerfile
- main.py: FastAPI 애플리케이션의 기본 코드를 작성합니다.
from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"message": "Hello, Docker!"}
- requirements.txt: FastAPI와 Uvicorn을 포함한 의존성을 정의합니다.
fastapi uvicorn
- Dockerfile: Docker 이미지를 빌드하기 위한 Dockerfile을 작성합니다.
# Python 3.9 이미지를 기반으로 설정 FROM python:3.9 # 작업 디렉터리 생성 WORKDIR /app # 필요한 파일들을 컨테이너에 복사 COPY requirements.txt . # 의존성 설치 RUN pip install --no-cache-dir -r requirements.txt # 애플리케이션 파일 복사 COPY . . # Uvicorn을 사용하여 FastAPI 애플리케이션 실행 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
3. Docker 이미지 생성 및 실행
- Docker 이미지 빌드: Dockerfile이 있는 디렉토리에서 다음 명령어를 사용하여 이미지를 생성합니다.
- -t my_fastapi_app: 이미지를 my_fastapi_app이라는 이름으로 태그합니다.
- .: 현재 디렉토리에 있는 Dockerfile을 사용하여 이미지를 빌드합니다.
docker build -t my_fastapi_app .
- Docker 컨테이너 실행: 빌드한 Docker 이미지를 사용해 컨테이너를 실행합니다.
docker run -d -p 8000:8000 my_fastapi_app
- -d: 컨테이너를 백그라운드에서 실행합니다.
- -p 8000:8000: 로컬 호스트의 8000 포트와 컨테이너의 8000 포트를 연결합니다.
- FastAPI 애플리케이션 접속: 브라우저에서 http://localhost:8000으로 접속하여 FastAPI 애플리케이션이 정상적으로 동작하는지 확인합니다.
docker run -d -p 8000:8000 my_fastapi_app
{ "message": "Hello, Docker!" }
4. Docker 컨테이너 관리
- 실행 중인 컨테이너 확인:
docker ps
- 컨테이너 중지:
docker stop <컨테이너 ID>
- 컨테이너 제거:
docker rm <컨테이너 ID>
- 이미지 목록 확인:
docker images
5. Docker Compose로 여러 서비스 관리
예제 2: Docker Compose 파일 작성
Docker Compose를 사용하면 여러 서비스를 함께 실행할 수 있습니다. 예를 들어, 데이터베이스와 함께 FastAPI 애플리케이션을 실행할 수 있습니다.
- docker-compose.yml 파일 작성:
version: '3' services: web: build: . ports: - "8000:8000" depends_on: - db db: image: postgres environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: mydatabase
- Compose로 애플리케이션 실행:
docker-compose up --build
- FastAPI 애플리케이션과 PostgreSQL 데이터베이스를 함께 실행합니다.
마무리 및 추가 학습
- 이번 강의에서는 Docker를 사용해 FastAPI 애플리케이션을 컨테이너화하고, 이를 실행하는 방법을 학습했습니다.
- Docker Compose를 통해 여러 서비스를 쉽게 관리하는 방법도 살펴봤습니다.
- 다음 강의에서는 Kubernetes를 활용한 배포 과정을 다룹니다.
728x90
'FastAPI' 카테고리의 다른 글
FastAPI 강좌 8강: 성능 테스트 및 모니터링 (4) | 2024.10.09 |
---|---|
FastAPI 강좌 7강: Kubernetes를 활용한 애플리케이션 배포 (0) | 2024.10.09 |
FastAPI 강좌 5강: 비동기 처리와 성능 최적화 (1) | 2024.10.09 |
FastAPI 강좌 4강: 데이터 분석 결과 API 구현 (0) | 2024.10.09 |
FastAPI 강좌 3강: 데이터 처리와 Pandas 연동 (4) | 2024.10.09 |