FastAPI를 이용한 TDD 개발 - 2

2024. 3. 11. 14:29·프로그래밍 언어/파이썬

도커 설정

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
'프로그래밍 언어/파이썬' 카테고리의 다른 글
  • FastAPI를 이용한 TDD 개발 - 4
  • FastAPI를 이용한 TDD 개발 - 3
  • FastAPI를 이용한 TDD 개발 - 1
  • FastAPI를 이용한 TDD 개발
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (283)
      • 여러가지 (107)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 운영체제 (0)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    RDS
    DP
    백준
    시험
    AWS
    취업리부트
    mybatis
    FastAPI
    spring
    reactor
    java
    Spring WebFlux
    항해99
    그리디
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    celery
    완전탐색
    프로그래머스
    docker
    OOP
    자바
    파이썬
    Python
    ecs
    Spring Boot
    WebFlux
    Redis
    EC2
    SAA
    Docker-compose
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
FastAPI를 이용한 TDD 개발 - 2
상단으로

티스토리툴바