FastAPI
설치
python3 -m pip install fastapi uvicron
Config
python3 -m pip install pydantic-settings python-dotenv
.env
DEBUG=true
POD_NAME=fastapi-test
POD_NAMESPACE=localhost
app/config.py
from pydantic_settings import BaseSettings, SettingsConfigDict
class K8sConfig(BaseSettings):
pod_name: str
pod_namespace: str
model_config = SettingsConfigDict(env_file=".env")
class Config(BaseSettings):
debug: bool = False
k8s = K8sConfig()
model_config = SettingsConfigDict(env_file=".env")
config = Config()
Dockerfile
.dockerignore
.env
Dockerfile
FROM python:3.12-alpine as requirements-stage
WORKDIR /app
RUN pip install poetry
COPY pyproject.toml poetry.lock* /app/
RUN poetry export -f requirements.txt --output /app/requirements.txt --without-hashes
FROM python:3.12-alpine as runtime
WORKDIR /app
COPY ./app /app/app
COPY /app/requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt
ENV PORT 8000
CMD ["uvicorn", "app.test.main:app", "--host", "0.0.0.0", "--port", "${PORT}", "--no-access-log", "--no-use-colors"]