도커 설정
FastAPI app를 컨테이너화 시켜보겠습니다.
시작하기 앞서 도커와 컴포즈가 정상적으로 설치되어 있어야 합니다.
$ docker -v
Docker version 24.0.7, build afdd53b
$ docker-compose -v
Docker Compose version v2.23.3-desktop.2
`project` 디렉토리에 `Dockerfile`를 아래와 같이 만들어 줍니다.
# pull official base image
FROM python:3.12.1-slim-bookworm
# set working directory
WORKDIR /usr/src/app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install python dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
# add app
COPY . .
환경별로 working directory를 생성해주어야 할 수 있습니다.
# set working directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
`.dockerignore` 파일을 project 디렉토리에 추가 하겠습니다.
이름에서 유추할 수 있듯이 .gitignore와 비슷한 역할을 하게 됩니다.
정확히는 특정파일과 폴더가 도커 이미지에 복사되지 않도록 제외 시킬 수 있습니다.
env
.dockerignore
Dockerfile
Dockerfile.prod
project 디렉토리와 동일한 레벨에 `docker-compose.yml`파일을 생성하고 명세합니다.
version: '3.8'
services:
web:
build: ./project
command: uvicorn app.main:app --reload --workers 1 --host 0.0.0.0 --port 8000
volumes:
- ./project:/usr/src/app
ports:
- 8004:8000
environment:
- ENVIRONMENT=dev
- TESTING=0
이미지를 빌드 해보겠습니다.
$ docker-compose build
빌드가 끝나면 detached mode로 컨테이너를 실행시켜 보겠습니다.
$ docker-compose up -d
첫 빌드시에 제대로 생성하지 못했다면 이미지를 삭제하고 다시 빌드 할 수 있습니다.
$ docker-compose down --volumes; docker-compose up --build;
프로젝트의 TREE 구조는 아래와 같습니다.
├── .gitignore
├── docker-compose.yml
└── project
├── .dockerignore
├── Dockerfile
├── app
│ ├── __init__.py
│ ├── config.py
│ └── main.py
└── requirements.txt
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
FastAPI를 이용한 TDD 개발 - 4 (0) | 2024.03.14 |
---|---|
FastAPI를 이용한 TDD 개발 - 3 (0) | 2024.03.12 |
FastAPI를 이용한 TDD 개발 - 1 (0) | 2024.03.10 |
FastAPI를 이용한 TDD 개발 (0) | 2024.03.10 |
re 모듈의 sub 메소드 사용법 (0) | 2021.11.28 |