Skip to content

FastAPI ๐Ÿ“ฆ - โ˜

๐Ÿ•โ” ๐Ÿ› ๏ธ FastAPI ๐Ÿˆธ โš  ๐ŸŽฏ ๐Ÿ— ๐Ÿ’พ ๐Ÿ“ฆ ๐Ÿ–ผ. โšซ๏ธ ๐Ÿ›Ž ๐Ÿ”จ โš™๏ธ โ˜. ๐Ÿ‘† ๐Ÿ’ช โคด๏ธ ๐Ÿ› ๏ธ ๐Ÿ‘ˆ ๐Ÿ“ฆ ๐Ÿ–ผ 1๏ธโƒฃ ๐Ÿ‘ฉโ€โคโ€๐Ÿ‘จ ๐Ÿ’ช ๐ŸŒŒ.

โš™๏ธ ๐Ÿ’พ ๐Ÿ“ฆ โœ”๏ธ ๐Ÿ“š ๐Ÿ“ˆ โœ… ๐Ÿ’‚โ€โ™‚, ๐Ÿ”ฌ, ๐Ÿฆ, & ๐ŸŽ.

Tip

๐Ÿƒ & โช ๐Ÿ’ญ ๐Ÿ‘‰ ๐Ÿ’ฉ โ“ ๐Ÿฆ˜ Dockerfile ๐Ÿ”› ๐Ÿ‘ถ.

๐Ÿ“ ๐ŸŽฎ ๐Ÿ‘ถ
FROM python:3.9

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

COPY ./app /code/app

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]

# If running behind a proxy like Nginx or Traefik add --proxy-headers
# CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80", "--proxy-headers"]

โšซ๏ธโ” ๐Ÿ“ฆ

๐Ÿ“ฆ (โœด๏ธ ๐Ÿ’พ ๐Ÿ“ฆ) ๐Ÿ“ถ ๐Ÿ’ฟ ๐ŸŒŒ ๐Ÿ“ฆ ๐Ÿˆธ โœ… ๐ŸŒ ๐Ÿ‘ซ ๐Ÿ”— & ๐Ÿ’ช ๐Ÿ“ โช ๐Ÿšง ๐Ÿ‘ซ โŽ โšช๏ธโžก๏ธ ๐ŸŽ ๐Ÿ“ฆ (๐ŸŽ ๐Ÿˆธ โš–๏ธ ๐Ÿฆฒ) ๐ŸŽ โš™๏ธ.

๐Ÿ’พ ๐Ÿ“ฆ ๐Ÿƒ โš™๏ธ ๐ŸŽ ๐Ÿ’พ ๐Ÿ’พ ๐Ÿฆ  (๐ŸŽฐ, ๐Ÿ•น ๐ŸŽฐ, โ˜ ๐Ÿ’ฝ, โ™’๏ธ). ๐Ÿ‘‰ โ›“ ๐Ÿ‘ˆ ๐Ÿ‘ซ ๐Ÿ“ถ ๐Ÿ’ฟ (๐Ÿ”ฌ ๐ŸŒ• ๐Ÿ•น ๐ŸŽฐ ๐Ÿ‘ ๐ŸŽ‚ ๐Ÿƒโ€โ™‚ โš™๏ธ).

๐Ÿ‘‰ ๐ŸŒŒ, ๐Ÿ“ฆ ๐Ÿด ๐Ÿฅ โ„น, ๐Ÿ’ธ โญ ๐Ÿƒโ€โ™‚ ๐Ÿ› ๏ธ ๐Ÿ”— (๐Ÿ•น ๐ŸŽฐ ๐Ÿ”œ ๐Ÿด ๐ŸŒ… ๐ŸŒ…).

๐Ÿ“ฆ โœ”๏ธ ๐Ÿ‘ซ ๐Ÿ‘ โŽ ๐Ÿƒโ€โ™‚ ๐Ÿ› ๏ธ (๐Ÿ›Ž 1๏ธโƒฃ ๐Ÿ› ๏ธ), ๐Ÿ“ โš™๏ธ, & ๐Ÿ•ธ, ๐Ÿ”ฌ ๐Ÿ› ๏ธ, ๐Ÿ’‚โ€โ™‚, ๐Ÿ› ๏ธ, โ™’๏ธ.

โšซ๏ธโ” ๐Ÿ“ฆ ๐Ÿ–ผ

๐Ÿ“ฆ ๐Ÿƒ โšช๏ธโžก๏ธ ๐Ÿ“ฆ ๐Ÿ–ผ.

๐Ÿ“ฆ ๐Ÿ–ผ ๐ŸŽป โฌ ๐ŸŒ ๐Ÿ“, ๐ŸŒ ๐Ÿ”ข, & ๐Ÿ”ข ๐Ÿ“‹/๐Ÿ“‹ ๐Ÿ‘ˆ ๐Ÿ”œ ๐ŸŽ ๐Ÿ“ฆ. ๐ŸŽป ๐Ÿ“ฅ โ›“ ๐Ÿ‘ˆ ๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿšซ ๐Ÿƒ, โšซ๏ธ ๐Ÿšซ โž– ๐Ÿ› ๏ธ, โšซ๏ธ ๐Ÿ•ด ๐Ÿ“ฆ ๐Ÿ“ & ๐Ÿ—ƒ.

๐Ÿ”… "๐Ÿ“ฆ ๐Ÿ–ผ" ๐Ÿ‘ˆ ๐Ÿช ๐ŸŽป ๐ŸŽš,"๐Ÿ“ฆ" ๐Ÿ›Ž ๐Ÿ”— ๐Ÿƒโ€โ™‚ ๐Ÿ‘, ๐Ÿ‘œ ๐Ÿ‘ˆ โž– ๐Ÿ› ๏ธ.

๐Ÿ•โ” ๐Ÿ“ฆ โ–ถ๏ธ & ๐Ÿƒโ€โ™‚ (โ–ถ๏ธ โšช๏ธโžก๏ธ ๐Ÿ“ฆ ๐Ÿ–ผ) โšซ๏ธ ๐Ÿ’ช โœ โš–๏ธ ๐Ÿ”€ ๐Ÿ“, ๐ŸŒ ๐Ÿ”ข, โ™’๏ธ. ๐Ÿ‘ˆ ๐Ÿ”€ ๐Ÿ”œ ๐Ÿ”€ ๐Ÿ•ด ๐Ÿ‘ˆ ๐Ÿ“ฆ, โœ‹๏ธ ๐Ÿ”œ ๐Ÿšซ ๐Ÿ˜ฃ ๐Ÿ‘ฝ ๐Ÿ“ฆ ๐Ÿ–ผ (๐Ÿ”œ ๐Ÿšซ ๐Ÿ–Š ๐Ÿ’พ).

๐Ÿ“ฆ ๐Ÿ–ผ โญ ๐Ÿ“‹ ๐Ÿ“ & ๐ŸŽš, โœ… python & ๐Ÿ“ main.py.

& ๐Ÿ“ฆ โšซ๏ธ (๐Ÿ”… ๐Ÿ“ฆ ๐Ÿ–ผ) โ˜‘ ๐Ÿƒ ๐Ÿ‘ ๐Ÿ–ผ, โญ ๐Ÿ› ๏ธ. ๐Ÿ‘, ๐Ÿ“ฆ ๐Ÿƒ ๐Ÿ•ด ๐Ÿ•โ” โšซ๏ธ โœ”๏ธ ๐Ÿ› ๏ธ ๐Ÿƒ (& ๐Ÿ›Ž โšซ๏ธ ๐Ÿ•ด ๐Ÿ‘ ๐Ÿ› ๏ธ). ๐Ÿ“ฆ โ›”๏ธ ๐Ÿ•โ” ๐Ÿ“ค ๐Ÿ™…โ€โ™‚ ๐Ÿ› ๏ธ ๐Ÿƒ โšซ๏ธ.

๐Ÿ“ฆ ๐Ÿ–ผ

โ˜ โœ”๏ธ 1๏ธโƒฃ ๐Ÿ‘‘ ๐Ÿงฐ โœ & ๐Ÿ› ๏ธ ๐Ÿ“ฆ ๐Ÿ–ผ & ๐Ÿ“ฆ.

& ๐Ÿ“ค ๐Ÿ“ข โ˜ ๐ŸŽก โฎ๏ธ ๐Ÿค-โš’ ๐Ÿ›‚ ๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿ“š ๐Ÿงฐ, ๐ŸŒ, ๐Ÿ’ฝ, & ๐Ÿˆธ.

๐Ÿ–ผ, ๐Ÿ“ค ๐Ÿ›‚ ๐Ÿ ๐Ÿ–ผ.

& ๐Ÿ“ค ๐Ÿ“š ๐ŸŽ ๐Ÿ–ผ ๐ŸŽ ๐Ÿ‘œ ๐Ÿ’– ๐Ÿ’ฝ, ๐Ÿ–ผ:

โš™๏ธ ๐Ÿค-โš’ ๐Ÿ“ฆ ๐Ÿ–ผ โšซ๏ธ ๐Ÿ“ถ โฉ ๐ŸŒ€ & โš™๏ธ ๐ŸŽ ๐Ÿงฐ. ๐Ÿ–ผ, ๐Ÿ”„ ๐Ÿ‘… ๐Ÿ†• ๐Ÿ’ฝ. ๐ŸŒ… ๐Ÿ’ผ, ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ›‚ ๐Ÿ–ผ, & ๐Ÿ”— ๐Ÿ‘ซ โฎ๏ธ ๐ŸŒ ๐Ÿ”ข.

๐Ÿ‘ˆ ๐ŸŒŒ, ๐Ÿ“š ๐Ÿ’ผ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ’ก ๐Ÿ”ƒ ๐Ÿ“ฆ & โ˜ & ๐Ÿค-โš™๏ธ ๐Ÿ‘ˆ ๐Ÿ’ก โฎ๏ธ ๐Ÿ“š ๐ŸŽ ๐Ÿงฐ & ๐Ÿฆฒ.

, ๐Ÿ‘† ๐Ÿ”œ ๐Ÿƒ ๐Ÿ’— ๐Ÿ“ฆ โฎ๏ธ ๐ŸŽ ๐Ÿ‘œ, ๐Ÿ’– ๐Ÿ’ฝ, ๐Ÿ ๐Ÿˆธ, ๐Ÿ•ธ ๐Ÿ’ฝ โฎ๏ธ ๐Ÿ˜ฅ ๐Ÿ•ธ ๐Ÿˆธ, & ๐Ÿ”— ๐Ÿ‘ซ ๐Ÿ‘ฏโ€โ™‚๏ธ ๐Ÿ“จ ๐Ÿ‘ซ ๐Ÿ”— ๐Ÿ•ธ.

๐ŸŒ ๐Ÿ“ฆ ๐Ÿงพ โš™๏ธ (๐Ÿ’– โ˜ โš–๏ธ Kubernetes) โœ”๏ธ ๐Ÿ‘ซ ๐Ÿ•ธ โš’ ๐Ÿ› ๏ธ ๐Ÿ”˜ ๐Ÿ‘ซ.

๐Ÿ“ฆ & ๐Ÿ› ๏ธ

๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿ›Ž ๐Ÿ”Œ ๐Ÿšฎ ๐Ÿ—ƒ ๐Ÿ”ข ๐Ÿ“‹ โš–๏ธ ๐Ÿ“‹ ๐Ÿ‘ˆ ๐Ÿ”œ ๐Ÿƒ ๐Ÿ•โ” ๐Ÿ“ฆ โ–ถ๏ธ & ๐Ÿ”ข ๐Ÿšถโ€โ™€๏ธ ๐Ÿ‘ˆ ๐Ÿ“‹. ๐Ÿ“ถ ๐ŸŽ โšซ๏ธโ” ๐Ÿ”œ ๐Ÿšฅ โšซ๏ธ ๐Ÿ“‹ โธ.

๐Ÿ•โ” ๐Ÿ“ฆ โ–ถ๏ธ, โšซ๏ธ ๐Ÿ”œ ๐Ÿƒ ๐Ÿ‘ˆ ๐Ÿ“‹/๐Ÿ“‹ (๐Ÿ‘ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ” โšซ๏ธ & โš’ โšซ๏ธ ๐Ÿƒ ๐ŸŽ ๐Ÿ“‹/๐Ÿ“‹).

๐Ÿ“ฆ ๐Ÿƒ ๐Ÿ“ ๐Ÿ‘‘ ๐Ÿ› ๏ธ (๐Ÿ“‹ โš–๏ธ ๐Ÿ“‹) ๐Ÿƒ.

๐Ÿ“ฆ ๐Ÿ›Ž โœ”๏ธ ๐Ÿ‘ ๐Ÿ› ๏ธ, โœ‹๏ธ โšซ๏ธ ๐Ÿ’ช โ–ถ๏ธ โœณ โšช๏ธโžก๏ธ ๐Ÿ‘‘ ๐Ÿ› ๏ธ, & ๐Ÿ‘ˆ ๐ŸŒŒ ๐Ÿ‘† ๐Ÿ”œ โœ”๏ธ ๐Ÿ’— ๐Ÿ› ๏ธ ๐ŸŽ ๐Ÿ“ฆ.

โœ‹๏ธ โšซ๏ธ ๐Ÿšซ ๐Ÿ’ช โœ”๏ธ ๐Ÿƒโ€โ™‚ ๐Ÿ“ฆ ๐Ÿต ๐ŸŒ˜ 1๏ธโƒฃ ๐Ÿƒโ€โ™‚ ๐Ÿ› ๏ธ. ๐Ÿšฅ ๐Ÿ‘‘ ๐Ÿ› ๏ธ โ›”๏ธ, ๐Ÿ“ฆ โ›”๏ธ.

๐Ÿ— โ˜ ๐Ÿ–ผ FastAPI

๐Ÿ†—, โžก๏ธ ๐Ÿ— ๐Ÿ•ณ ๐Ÿ”œ โ— ๐Ÿ‘ถ

๐Ÿ‘ค ๐Ÿ”œ ๐ŸŽฆ ๐Ÿ‘† โ” ๐Ÿ— โ˜ ๐Ÿ–ผ FastAPI โšช๏ธโžก๏ธ ๐Ÿ–Œ, โš“๏ธ ๐Ÿ”› ๐Ÿ›‚ ๐Ÿ ๐Ÿ–ผ.

๐Ÿ‘‰ โšซ๏ธโ” ๐Ÿ‘† ๐Ÿ”œ ๐Ÿ’š ๐Ÿ† ๐Ÿ’ผ, ๐Ÿ–ผ:

  • โš™๏ธ Kubernetes โš–๏ธ ๐ŸŽ ๐Ÿงฐ
  • ๐Ÿ•โ” ๐Ÿƒโ€โ™‚ ๐Ÿ”› ๐Ÿ“ ๐Ÿ‘ฒ
  • โš™๏ธ โ˜ ๐Ÿ•โ€๐Ÿฆบ ๐Ÿ‘ˆ ๐Ÿ”œ ๐Ÿƒ ๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿ‘†, โ™’๏ธ.

๐Ÿ“ฆ ๐Ÿ“„

๐Ÿ‘† ๐Ÿ”œ ๐Ÿ›Ž โœ”๏ธ ๐Ÿ“ฆ ๐Ÿ“„ ๐Ÿ‘† ๐Ÿˆธ ๐Ÿ“.

โšซ๏ธ ๐Ÿ”œ ๐Ÿช€ โœด๏ธ ๐Ÿ”› ๐Ÿงฐ ๐Ÿ‘† โš™๏ธ โŽ ๐Ÿ‘ˆ ๐Ÿ“„.

๐ŸŒ… โš  ๐ŸŒŒ โšซ๏ธ โœ”๏ธ ๐Ÿ“ requirements.txt โฎ๏ธ ๐Ÿ“ฆ ๐Ÿ“› & ๐Ÿ‘ซ โฌ, 1๏ธโƒฃ ๐Ÿ“ โธ.

๐Ÿ‘† ๐Ÿ”œ โ†—๏ธ โš™๏ธ ๐ŸŽ ๐Ÿ’ญ ๐Ÿ‘† โœ ๐Ÿ”ƒ FastAPI โฌ โš’ โ†” โฌ.

๐Ÿ–ผ, ๐Ÿ‘† requirements.txt ๐Ÿ’ช ๐Ÿ‘€ ๐Ÿ’–:

fastapi>=0.68.0,<0.69.0
pydantic>=1.8.0,<2.0.0
uvicorn>=0.15.0,<0.16.0

& ๐Ÿ‘† ๐Ÿ”œ ๐Ÿ›Ž โŽ ๐Ÿ‘ˆ ๐Ÿ“ฆ ๐Ÿ”— โฎ๏ธ pip, ๐Ÿ–ผ:

$ pip install -r requirements.txt
---> 100%
Successfully installed fastapi pydantic uvicorn

Info

๐Ÿ“ค ๐ŸŽ ๐Ÿ“ & ๐Ÿงฐ ๐Ÿ”ฌ & โŽ ๐Ÿ“ฆ ๐Ÿ”—.

๐Ÿ‘ค ๐Ÿ”œ ๐ŸŽฆ ๐Ÿ‘† ๐Ÿ–ผ โš™๏ธ ๐ŸŽถ โช ๐Ÿ“„ ๐Ÿ”›. ๐Ÿ‘ถ

โœ FastAPI ๐Ÿ“Ÿ

  • โœ app ๐Ÿ“ & โ›” โšซ๏ธ.
  • โœ ๐Ÿ› ๐Ÿ“ __init__.py.
  • โœ main.py ๐Ÿ“ โฎ๏ธ:
from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

๐Ÿ“

๐Ÿ”œ ๐ŸŽ ๐Ÿ— ๐Ÿ“ โœ ๐Ÿ“ Dockerfile โฎ๏ธ:

# (1)
FROM python:3.9

# (2)
WORKDIR /code

# (3)
COPY ./requirements.txt /code/requirements.txt

# (4)
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

# (5)
COPY ./app /code/app

# (6)
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]

1๏ธโƒฃ. โ–ถ๏ธ โšช๏ธโžก๏ธ ๐Ÿ›‚ ๐Ÿ ๐Ÿงข ๐Ÿ–ผ.

2๏ธโƒฃ. โš’ โฎ๏ธ ๐Ÿ‘ท ๐Ÿ“ /code.

๐Ÿ‘‰ ๐ŸŒโ” ๐Ÿ‘ฅ ๐Ÿ”œ ๐Ÿšฎ `requirements.txt` ๐Ÿ“ &amp; `app` ๐Ÿ“.

3๏ธโƒฃ. ๐Ÿ“ ๐Ÿ“ โฎ๏ธ ๐Ÿ“„ /code ๐Ÿ“.

๐Ÿ“ **๐Ÿ•ด** ๐Ÿ“ โฎ๏ธ ๐Ÿ“„ ๐Ÿฅ‡, ๐Ÿšซ ๐ŸŽ‚ ๐Ÿ“Ÿ.

๐Ÿ‘‰ ๐Ÿ“ **๐Ÿšซ ๐Ÿ”€ ๐Ÿ›Ž**, โ˜ ๐Ÿ”œ ๐Ÿ” โšซ๏ธ &amp; โš™๏ธ **๐Ÿ’พ** ๐Ÿ‘‰ ๐Ÿ”, ๐Ÿ› ๏ธ ๐Ÿ’พ โญ ๐Ÿ” ๐Ÿ’โ€โ™‚๏ธ.

4๏ธโƒฃ. โŽ ๐Ÿ“ฆ ๐Ÿ”— ๐Ÿ“„ ๐Ÿ“.

 `--no-cache-dir` ๐ŸŽ› ๐Ÿ’ฌ `pip` ๐Ÿšซ ๐Ÿ–Š โฌ ๐Ÿ“ฆ ๐ŸŒ, ๐Ÿ‘ˆ ๐Ÿ•ด ๐Ÿšฅ `pip` ๐Ÿ”œ ๐Ÿƒ ๐Ÿ”„ โŽ ๐ŸŽ ๐Ÿ“ฆ, โœ‹๏ธ ๐Ÿ‘ˆ ๐Ÿšซ ๐Ÿ’ผ ๐Ÿ•โ” ๐Ÿ‘ท โฎ๏ธ ๐Ÿ“ฆ.

!!! note
     `--no-cache-dir` ๐Ÿ•ด ๐Ÿ”— `pip`, โšซ๏ธ โœ”๏ธ ๐Ÿ•ณ โฎ๏ธ โ˜ โš–๏ธ ๐Ÿ“ฆ.

 `--upgrade` ๐ŸŽ› ๐Ÿ’ฌ `pip` โ™ป ๐Ÿ“ฆ ๐Ÿšฅ ๐Ÿ‘ซ โช โŽ.

โ†ฉ๏ธ โฎ๏ธ ๐Ÿ” ๐Ÿ–จ ๐Ÿ“ ๐Ÿ’ช ๐Ÿ” **โ˜ ๐Ÿ’พ**, ๐Ÿ‘‰ ๐Ÿ” ๐Ÿ”œ **โš™๏ธ โ˜ ๐Ÿ’พ** ๐Ÿ•โ” ๐Ÿ’ช.

โš™๏ธ ๐Ÿ’พ ๐Ÿ‘‰ ๐Ÿ” ๐Ÿ”œ **๐Ÿ–Š** ๐Ÿ‘† ๐Ÿ“š **๐Ÿ•ฐ** ๐Ÿ•โ” ๐Ÿ— ๐Ÿ–ผ ๐Ÿ”„ &amp; ๐Ÿ”„ โฎ๏ธ ๐Ÿ› ๏ธ, โ†ฉ๏ธ **โฌ &amp; โŽ** ๐ŸŒ ๐Ÿ”— **๐Ÿ”  ๐Ÿ•ฐ**.

5๏ธโƒฃ. ๐Ÿ“ ./app ๐Ÿ“ ๐Ÿ”˜ /code ๐Ÿ“.

๐Ÿ‘‰ โœ”๏ธ ๐ŸŒ ๐Ÿ“Ÿ โ” โšซ๏ธโ” **๐Ÿ”€ ๐ŸŒ… ๐Ÿ›Ž** โ˜ **๐Ÿ’พ** ๐Ÿ† ๐Ÿšซ โš™๏ธ ๐Ÿ‘‰ โš–๏ธ ๐Ÿ™† **๐Ÿ“„ ๐Ÿ”** ๐Ÿ’ช.

, โšซ๏ธ โš  ๐Ÿšฎ ๐Ÿ‘‰ **๐Ÿ˜ ๐Ÿ”š** `Dockerfile`, ๐Ÿ”ฌ ๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿ— ๐Ÿ•ฐ.

6๏ธโƒฃ. โš’ ๐Ÿ“‹ ๐Ÿƒ uvicorn ๐Ÿ’ฝ.

`CMD` โœŠ ๐Ÿ“‡ ๐ŸŽป, ๐Ÿ”  ๐Ÿ‘ซ ๐ŸŽป โšซ๏ธโ” ๐Ÿ‘† ๐Ÿ”œ ๐Ÿ†Ž ๐Ÿ“‹ โธ ๐Ÿ‘ฝ ๐Ÿš€.

๐Ÿ‘‰ ๐Ÿ“‹ ๐Ÿ”œ ๐Ÿƒ โšช๏ธโžก๏ธ **โฎ๏ธ ๐Ÿ‘ท ๐Ÿ“**, ๐ŸŽ `/code` ๐Ÿ“ ๐Ÿ‘† โš’ ๐Ÿ”› โฎ๏ธ `WORKDIR /code`.

โ†ฉ๏ธ ๐Ÿ“‹ ๐Ÿ”œ โ–ถ๏ธ `/code` &amp; ๐Ÿ”˜ โšซ๏ธ ๐Ÿ“ `./app` โฎ๏ธ ๐Ÿ‘† ๐Ÿ“Ÿ, **Uvicorn** ๐Ÿ”œ ๐Ÿ’ช ๐Ÿ‘€ &amp; **๐Ÿ—„** `app` โšช๏ธโžก๏ธ `app.main`.

Tip

๐Ÿ“„ โšซ๏ธโ” ๐Ÿ”  โธ ๐Ÿ”จ ๐Ÿ–Š ๐Ÿ”  ๐Ÿ”ข ๐Ÿ’ญ ๐Ÿ“Ÿ. ๐Ÿ‘ถ

๐Ÿ‘† ๐Ÿ”œ ๐Ÿ”œ โœ”๏ธ ๐Ÿ“ ๐Ÿ“Š ๐Ÿ’–:

.
โ”œโ”€โ”€ app
โ”‚ย ย  โ”œโ”€โ”€ __init__.py
โ”‚   โ””โ”€โ”€ main.py
โ”œโ”€โ”€ Dockerfile
โ””โ”€โ”€ requirements.txt

โ›… ๐Ÿค โŽ ๐Ÿ—ณ

๐Ÿšฅ ๐Ÿ‘† ๐Ÿƒโ€โ™‚ ๐Ÿ‘† ๐Ÿ“ฆ โ›… ๐Ÿค โŽ ๐Ÿ—ณ (๐Ÿ“ โš™) ๐Ÿ’– ๐Ÿ‘Œ โš–๏ธ Traefik, ๐Ÿšฎ ๐ŸŽ› --proxy-headers, ๐Ÿ‘‰ ๐Ÿ”œ ๐Ÿ’ฌ Uvicorn ๐Ÿ’™ ๐ŸŽš ๐Ÿ“จ ๐Ÿ‘ˆ ๐Ÿ—ณ ๐Ÿ’ฌ โšซ๏ธ ๐Ÿ‘ˆ ๐Ÿˆธ ๐Ÿƒ โ›… ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ”, โ™’๏ธ.

CMD ["uvicorn", "app.main:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "80"]

โ˜ ๐Ÿ’พ

๐Ÿ“ค โš  ๐ŸŽฑ ๐Ÿ‘‰ Dockerfile, ๐Ÿ‘ฅ ๐Ÿฅ‡ ๐Ÿ“ ๐Ÿ“ โฎ๏ธ ๐Ÿ”— ๐Ÿ˜ž, ๐Ÿšซ ๐ŸŽ‚ ๐Ÿ“Ÿ. โžก๏ธ ๐Ÿ‘ค ๐Ÿ’ฌ ๐Ÿ‘† โšซ๏ธโ” ๐Ÿ‘ˆ.

COPY ./requirements.txt /code/requirements.txt

โ˜ & ๐ŸŽ ๐Ÿงฐ ๐Ÿ— ๐Ÿ‘‰ ๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿ”, ๐Ÿšฎ 1๏ธโƒฃ ๐Ÿงฝ ๐Ÿ”› ๐Ÿ” ๐ŸŽ, โ–ถ๏ธ โšช๏ธโžก๏ธ ๐Ÿ” Dockerfile & โŽ ๐Ÿ™† ๐Ÿ“ โœ ๐Ÿ”  ๐Ÿ‘ฉโ€๐ŸŒพ Dockerfile.

โ˜ & ๐ŸŽ ๐Ÿงฐ โš™๏ธ ๐Ÿ”— ๐Ÿ’พ ๐Ÿ•โ” ๐Ÿ— ๐Ÿ–ผ, ๐Ÿšฅ ๐Ÿ“ ๐Ÿšซ ๐Ÿ”€ โ†ฉ๏ธ ๐Ÿ ๐Ÿ•ฐ ๐Ÿ— ๐Ÿ“ฆ ๐Ÿ–ผ, โคด๏ธ โšซ๏ธ ๐Ÿ”œ ๐Ÿค-โš™๏ธ ๐ŸŽ ๐Ÿงฝ โœ ๐Ÿ ๐Ÿ•ฐ, โ†ฉ๏ธ ๐Ÿ–จ ๐Ÿ“ ๐Ÿ”„ & ๐Ÿ— ๐Ÿ†• ๐Ÿงฝ โšช๏ธโžก๏ธ ๐Ÿ–Œ.

โŽ ๐Ÿ“ ๐Ÿ“ ๐Ÿšซ ๐ŸŽฏ ๐Ÿ“‰ ๐Ÿ‘œ ๐Ÿ’โ€โ™‚๏ธ ๐ŸŒ…, โœ‹๏ธ โ†ฉ๏ธ โšซ๏ธ โš™๏ธ ๐Ÿ’พ ๐Ÿ‘ˆ ๐Ÿ”, โšซ๏ธ ๐Ÿ’ช โš™๏ธ ๐Ÿ’พ โญ ๐Ÿ”. ๐Ÿ–ผ, โšซ๏ธ ๐Ÿ’ช โš™๏ธ ๐Ÿ’พ ๐Ÿ‘ฉโ€๐ŸŒพ ๐Ÿ‘ˆ โŽ ๐Ÿ”— โฎ๏ธ:

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

๐Ÿ“ โฎ๏ธ ๐Ÿ“ฆ ๐Ÿ“„ ๐Ÿ† ๐Ÿšซ ๐Ÿ”€ ๐Ÿ›Ž. , ๐Ÿ–จ ๐Ÿ•ด ๐Ÿ‘ˆ ๐Ÿ“, โ˜ ๐Ÿ”œ ๐Ÿ’ช โš™๏ธ ๐Ÿ’พ ๐Ÿ‘ˆ ๐Ÿ”.

& โคด๏ธ, โ˜ ๐Ÿ”œ ๐Ÿ’ช โš™๏ธ ๐Ÿ’พ โญ ๐Ÿ” ๐Ÿ‘ˆ โฌ & โŽ ๐Ÿ‘ˆ ๐Ÿ”—. & ๐Ÿ“ฅ ๐ŸŒโ” ๐Ÿ‘ฅ ๐Ÿ–Š ๐Ÿ“š ๐Ÿ•ฐ. ๐Ÿ‘ถ ...& โŽ ๐Ÿ˜ฉ โŒ›. ๐Ÿ‘ถ ๐Ÿ‘ถ

โฌ & โŽ ๐Ÿ“ฆ ๐Ÿ”— ๐Ÿ’ช โœŠ โฒ, โœ‹๏ธ โš™๏ธ ๐Ÿ’พ ๐Ÿ”œ โœŠ ๐Ÿฅˆ ๐ŸŒ….

& ๐Ÿ‘† ๐Ÿ”œ ๐Ÿ— ๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿ”„ & ๐Ÿ”„ โฎ๏ธ ๐Ÿ› ๏ธ โœ… ๐Ÿ‘ˆ ๐Ÿ‘† ๐Ÿ“Ÿ ๐Ÿ”€ ๐Ÿ‘ท, ๐Ÿ“ค ๐Ÿ“š ๐Ÿ“ˆ ๐Ÿ•ฐ ๐Ÿ‘‰ ๐Ÿ”œ ๐Ÿ–Š.

โคด๏ธ, ๐Ÿ˜ ๐Ÿ”š Dockerfile, ๐Ÿ‘ฅ ๐Ÿ“ ๐ŸŒ ๐Ÿ“Ÿ. ๐Ÿ‘‰ โšซ๏ธโ” ๐Ÿ”€ ๐Ÿ† ๐Ÿ›Ž, ๐Ÿ‘ฅ ๐Ÿšฎ โšซ๏ธ ๐Ÿ˜ ๐Ÿ”š, โ†ฉ๏ธ ๐ŸŒ– ๐Ÿ•ง, ๐Ÿ•ณ โฎ๏ธ ๐Ÿ‘‰ ๐Ÿ” ๐Ÿ”œ ๐Ÿšซ ๐Ÿ’ช โš™๏ธ ๐Ÿ’พ.

COPY ./app /code/app

๐Ÿ— โ˜ ๐Ÿ–ผ

๐Ÿ”œ ๐Ÿ‘ˆ ๐ŸŒ ๐Ÿ“ ๐Ÿฅ‰, โžก๏ธ ๐Ÿ— ๐Ÿ“ฆ ๐Ÿ–ผ.

  • ๐Ÿšถ ๐Ÿ— ๐Ÿ“ (๐ŸŒโ” ๐Ÿ‘† Dockerfile , โš— ๐Ÿ‘† app ๐Ÿ“).
  • ๐Ÿ— ๐Ÿ‘† FastAPI ๐Ÿ–ผ:
$ docker build -t myimage .

---> 100%

Tip

๐Ÿ‘€ . ๐Ÿ”š, โšซ๏ธ ๐ŸŒ“ ./, โšซ๏ธ ๐Ÿ’ฌ โ˜ ๐Ÿ“ โš™๏ธ ๐Ÿ— ๐Ÿ“ฆ ๐Ÿ–ผ.

๐Ÿ‘‰ ๐Ÿ’ผ, โšซ๏ธ ๐ŸŽ โฎ๏ธ ๐Ÿ“ (.).

โ–ถ๏ธ โ˜ ๐Ÿ“ฆ

  • ๐Ÿƒ ๐Ÿ“ฆ โš“๏ธ ๐Ÿ”› ๐Ÿ‘† ๐Ÿ–ผ:
$ docker run -d --name mycontainer -p 80:80 myimage

โœ… โšซ๏ธ

๐Ÿ‘† ๐Ÿ”œ ๐Ÿ’ช โœ… โšซ๏ธ ๐Ÿ‘† โ˜ ๐Ÿ“ฆ ๐Ÿ“›, ๐Ÿ–ผ: http://192.168.99.100/items/5?q=somequery โš–๏ธ http://127.0.0.1/items/5?q=somequery (โš–๏ธ ๐ŸŒ“, โš™๏ธ ๐Ÿ‘† โ˜ ๐Ÿฆ ).

๐Ÿ‘† ๐Ÿ”œ ๐Ÿ‘€ ๐Ÿ•ณ ๐Ÿ’–:

{"item_id": 5, "q": "somequery"}

๐ŸŽ“ ๐Ÿ› ๏ธ ๐Ÿฉบ

๐Ÿ”œ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿšถ http://192.168.99.100/docs โš–๏ธ http://127.0.0.1/docs (โš–๏ธ ๐ŸŒ“, โš™๏ธ ๐Ÿ‘† โ˜ ๐Ÿฆ ).

๐Ÿ‘† ๐Ÿ”œ ๐Ÿ‘€ ๐Ÿง ๐ŸŽ“ ๐Ÿ› ๏ธ ๐Ÿงพ (๐Ÿšš ๐Ÿฆ ๐ŸŽš):

Swagger UI

๐ŸŽ› ๐Ÿ› ๏ธ ๐Ÿฉบ

& ๐Ÿ‘† ๐Ÿ’ช ๐Ÿšถ http://192.168.99.100/redoc โš–๏ธ http://127.0.0.1/redoc (โš–๏ธ ๐ŸŒ“, โš™๏ธ ๐Ÿ‘† โ˜ ๐Ÿฆ ).

๐Ÿ‘† ๐Ÿ”œ ๐Ÿ‘€ ๐ŸŽ› ๐Ÿง ๐Ÿงพ (๐Ÿšš ๐Ÿ“„):

ReDoc

๐Ÿ— โ˜ ๐Ÿ–ผ โฎ๏ธ ๐Ÿ‘-๐Ÿ“ FastAPI

๐Ÿšฅ ๐Ÿ‘† FastAPI ๐Ÿ‘ ๐Ÿ“, ๐Ÿ–ผ, main.py ๐Ÿต ./app ๐Ÿ“, ๐Ÿ‘† ๐Ÿ“ ๐Ÿ“Š ๐Ÿ’ช ๐Ÿ‘€ ๐Ÿ’– ๐Ÿ‘‰:

.
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ main.py
โ””โ”€โ”€ requirements.txt

โคด๏ธ ๐Ÿ‘† ๐Ÿ”œ โœ”๏ธ ๐Ÿ”€ ๐Ÿ”— โžก ๐Ÿ“ ๐Ÿ“ ๐Ÿ”˜ Dockerfile:

FROM python:3.9

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

# (1)
COPY ./main.py /code/

# (2)
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

1๏ธโƒฃ. ๐Ÿ“ main.py ๐Ÿ“ /code ๐Ÿ“ ๐Ÿ”— (๐Ÿต ๐Ÿ™† ./app ๐Ÿ“).

2๏ธโƒฃ. ๐Ÿƒ Uvicorn & ๐Ÿ’ฌ โšซ๏ธ ๐Ÿ—„ app ๐ŸŽš โšช๏ธโžก๏ธ main (โ†ฉ๏ธ ๐Ÿญ โšช๏ธโžก๏ธ app.main).

โคด๏ธ ๐Ÿ”† Uvicorn ๐Ÿ“‹ โš™๏ธ ๐Ÿ†• ๐Ÿ•น main โ†ฉ๏ธ app.main ๐Ÿ—„ FastAPI ๐ŸŽš app.

๐Ÿ› ๏ธ ๐Ÿ”ง

โžก๏ธ ๐Ÿ’ฌ ๐Ÿ”„ ๐Ÿ”ƒ ๐ŸŽ ๐Ÿ› ๏ธ ๐Ÿ”ง โš– ๐Ÿ“ฆ.

๐Ÿ“ฆ โœด๏ธ ๐Ÿงฐ ๐Ÿ“‰ ๐Ÿ› ๏ธ ๐Ÿ— & ๐Ÿ› ๏ธ ๐Ÿˆธ, โœ‹๏ธ ๐Ÿ‘ซ ๐Ÿšซ ๐Ÿ› ๏ธ ๐ŸŽฏ ๐ŸŽฏ ๐Ÿต ๐Ÿ‘‰ ๐Ÿ› ๏ธ ๐Ÿ”ง, & ๐Ÿ“ค ๐Ÿ“š ๐Ÿ’ช ๐ŸŽ›.

๐Ÿ‘ ๐Ÿ“ฐ ๐Ÿ‘ˆ โฎ๏ธ ๐Ÿ”  ๐ŸŽ ๐ŸŽ› ๐Ÿ“ค ๐ŸŒŒ ๐Ÿ“” ๐ŸŒ ๐Ÿ› ๏ธ ๐Ÿ”ง. ๐Ÿ‘ถ

โžก๏ธ ๐Ÿ“„ ๐Ÿ‘‰ ๐Ÿ› ๏ธ ๐Ÿ”ง โš– ๐Ÿ“ฆ:

  • ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ”
  • ๐Ÿƒโ€โ™‚ ๐Ÿ”› ๐Ÿ•ด
  • โ
  • ๐Ÿงฌ (๐Ÿ”ข ๐Ÿ› ๏ธ ๐Ÿƒ)
  • ๐Ÿ’พ
  • โฎ๏ธ ๐Ÿ” โญ โ–ถ๏ธ

๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ”

๐Ÿšฅ ๐Ÿ‘ฅ ๐ŸŽฏ ๐Ÿ”› ๐Ÿ“ฆ ๐Ÿ–ผ FastAPI ๐Ÿˆธ (& โช ๐Ÿƒโ€โ™‚ ๐Ÿ“ฆ), ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” ๐Ÿ›Ž ๐Ÿ”œ ๐Ÿต ๐Ÿ—œ โž•1๏ธโƒฃ ๐Ÿงฐ.

โšซ๏ธ ๐Ÿ’ช โž•1๏ธโƒฃ ๐Ÿ“ฆ, ๐Ÿ–ผ โฎ๏ธ Traefik, ๐Ÿšš ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” & ๐Ÿง ๐Ÿ› ๏ธ ๐Ÿ“„.

Tip

Traefik โœ”๏ธ ๐Ÿ› ๏ธ โฎ๏ธ โ˜, Kubernetes, & ๐ŸŽ, โšซ๏ธ ๐Ÿ“ถ โฉ โš’ ๐Ÿ†™ & ๐Ÿ”— ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” ๐Ÿ‘† ๐Ÿ“ฆ โฎ๏ธ โšซ๏ธ.

๐Ÿ‘, ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” ๐Ÿ’ช ๐Ÿต โ˜ ๐Ÿ•โ€๐Ÿฆบ 1๏ธโƒฃ ๐Ÿ‘ซ ๐Ÿ•โ€๐Ÿฆบ (โช ๐Ÿƒ ๐Ÿˆธ ๐Ÿ“ฆ).

๐Ÿƒโ€โ™‚ ๐Ÿ”› ๐Ÿ•ด & โ

๐Ÿ“ค ๐Ÿ›Ž โž•1๏ธโƒฃ ๐Ÿงฐ ๐Ÿˆš โ–ถ๏ธ & ๐Ÿƒโ€โ™‚ ๐Ÿ‘† ๐Ÿ“ฆ.

โšซ๏ธ ๐Ÿ’ช โ˜ ๐Ÿ”—, โ˜ โœ, Kubernetes, โ˜ ๐Ÿ•โ€๐Ÿฆบ, โ™’๏ธ.

๐ŸŒ… (โš–๏ธ ๐ŸŒ) ๐Ÿ’ผ, ๐Ÿ“ค ๐Ÿ™… ๐ŸŽ› ๐Ÿ› ๏ธ ๐Ÿƒ ๐Ÿ“ฆ ๐Ÿ”› ๐Ÿ•ด & ๐Ÿ› ๏ธ โ ๐Ÿ”› โŒ. ๐Ÿ–ผ, โ˜, โšซ๏ธ ๐Ÿ“‹ โธ ๐ŸŽ› --restart.

๐Ÿต โš™๏ธ ๐Ÿ“ฆ, โš’ ๐Ÿˆธ ๐Ÿƒ ๐Ÿ”› ๐Ÿ•ด & โฎ๏ธ โ ๐Ÿ’ช โš  & โš . โœ‹๏ธ ๐Ÿ•โ” ๐Ÿ‘ท โฎ๏ธ ๐Ÿ“ฆ ๐ŸŒ… ๐Ÿ’ผ ๐Ÿ‘ˆ ๐Ÿ› ๏ธ ๐Ÿ”Œ ๐Ÿ”ข. ๐Ÿ‘ถ

๐Ÿงฌ - ๐Ÿ”ข ๐Ÿ› ๏ธ

๐Ÿšฅ ๐Ÿ‘† โœ”๏ธ ๐ŸŒ‘ ๐ŸŽฐ โฎ๏ธ โ˜, โ˜ ๐Ÿ ๐Ÿ“ณ, ๐Ÿ––, โš–๏ธ โž•1๏ธโƒฃ ๐ŸŽ ๐Ÿ— โš™๏ธ ๐Ÿ› ๏ธ ๐Ÿ“Ž ๐Ÿ“ฆ ๐Ÿ”› ๐Ÿ’— ๐ŸŽฐ, โคด๏ธ ๐Ÿ‘† ๐Ÿ”œ ๐ŸŽฒ ๐Ÿ’š ๐Ÿต ๐Ÿงฌ ๐ŸŒ‘ ๐ŸŽš โ†ฉ๏ธ โš™๏ธ ๐Ÿ› ๏ธ ๐Ÿ‘จโ€๐Ÿ’ผ (๐Ÿ’– ๐Ÿ โฎ๏ธ ๐Ÿ‘จโ€๐Ÿญ) ๐Ÿ”  ๐Ÿ“ฆ.

1๏ธโƒฃ ๐Ÿ“š ๐Ÿ“Ž ๐Ÿ“ฆ ๐Ÿงพ โš™๏ธ ๐Ÿ’– Kubernetes ๐Ÿ›Ž โœ”๏ธ ๐Ÿ› ๏ธ ๐ŸŒŒ ๐Ÿšš ๐Ÿงฌ ๐Ÿ“ฆ โช ๐Ÿ”— ๐Ÿ“ โš– ๐Ÿ“จ ๐Ÿ“จ. ๐ŸŒ ๐ŸŒ‘ ๐ŸŽš.

๐Ÿ“š ๐Ÿ’ผ, ๐Ÿ‘† ๐Ÿ”œ ๐ŸŽฒ ๐Ÿ’š ๐Ÿ— โ˜ ๐Ÿ–ผ โšช๏ธโžก๏ธ ๐Ÿ–Œ ๐Ÿ”ฌ ๐Ÿ”›, โŽ ๐Ÿ‘† ๐Ÿ”—, & ๐Ÿƒโ€โ™‚ ๐Ÿ‘ Uvicorn ๐Ÿ› ๏ธ โ†ฉ๏ธ ๐Ÿƒโ€โ™‚ ๐Ÿ•ณ ๐Ÿ’– ๐Ÿ โฎ๏ธ Uvicorn ๐Ÿ‘จโ€๐Ÿญ.

๐Ÿ“ โš™

๐Ÿ•โ” โš™๏ธ ๐Ÿ“ฆ, ๐Ÿ‘† ๐Ÿ”œ ๐Ÿ›Ž โœ”๏ธ ๐Ÿฆฒ ๐Ÿ‘‚ ๐Ÿ”› ๐Ÿ‘‘ โ›ด. โšซ๏ธ ๐Ÿ’ช ๐ŸŽฒ โž•1๏ธโƒฃ ๐Ÿ“ฆ ๐Ÿ‘ˆ ๐Ÿค โŽ ๐Ÿ—ณ ๐Ÿต ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” โš–๏ธ ๐ŸŽ ๐Ÿงฐ.

๐Ÿ‘‰ ๐Ÿฆฒ ๐Ÿ”œ โœŠ ๐Ÿ“ ๐Ÿ“จ & ๐Ÿ“Ž ๐Ÿ‘ˆ ๐Ÿ‘ช ๐Ÿ‘จโ€๐Ÿญ (๐Ÿคž) โš– ๐ŸŒŒ, โšซ๏ธ ๐Ÿ›Ž ๐Ÿค™ ๐Ÿ“ โš™.

Tip

๐ŸŽ ๐Ÿค โŽ ๐Ÿ—ณ ๐Ÿฆฒ โš™๏ธ ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” ๐Ÿ”œ ๐ŸŽฒ ๐Ÿ“ โš™.

& ๐Ÿ•โ” ๐Ÿ‘ท โฎ๏ธ ๐Ÿ“ฆ, ๐ŸŽ โš™๏ธ ๐Ÿ‘† โš™๏ธ โ–ถ๏ธ & ๐Ÿ› ๏ธ ๐Ÿ‘ซ ๐Ÿ”œ โช โœ”๏ธ ๐Ÿ”— ๐Ÿงฐ ๐Ÿ“ถ ๐Ÿ•ธ ๐Ÿ“ป (โœ… ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” ๐Ÿ“จ) โšช๏ธโžก๏ธ ๐Ÿ‘ˆ ๐Ÿ“ โš™ (๐Ÿ‘ˆ ๐Ÿ’ช ๐Ÿค โŽ ๐Ÿ—ณ) ๐Ÿ“ฆ(โ“‚) โฎ๏ธ ๐Ÿ‘† ๐Ÿ“ฑ.

1๏ธโƒฃ ๐Ÿ“ โš™ - ๐Ÿ’— ๐Ÿ‘จโ€๐Ÿญ ๐Ÿ“ฆ

๐Ÿ•โ” ๐Ÿ‘ท โฎ๏ธ Kubernetes โš–๏ธ ๐ŸŽ ๐Ÿ“Ž ๐Ÿ“ฆ ๐Ÿงพ โš™๏ธ, โš™๏ธ ๐Ÿ‘ซ ๐Ÿ”— ๐Ÿ•ธ ๐Ÿ› ๏ธ ๐Ÿ”œ โœ” ๐Ÿ‘ ๐Ÿ“ โš™ ๐Ÿ‘ˆ ๐Ÿ‘‚ ๐Ÿ”› ๐Ÿ‘‘ โ›ด ๐Ÿ“ถ ๐Ÿ“ป (๐Ÿ“จ) ๐ŸŽฒ ๐Ÿ’— ๐Ÿ“ฆ ๐Ÿƒ ๐Ÿ‘† ๐Ÿ“ฑ.

๐Ÿ”  ๐Ÿ‘ซ ๐Ÿ“ฆ ๐Ÿƒโ€โ™‚ ๐Ÿ‘† ๐Ÿ“ฑ ๐Ÿ”œ ๐Ÿ›Ž โœ”๏ธ 1๏ธโƒฃ ๐Ÿ› ๏ธ (โœ… Uvicorn ๐Ÿ› ๏ธ ๐Ÿƒ ๐Ÿ‘† FastAPI ๐Ÿˆธ). ๐Ÿ‘ซ ๐Ÿ”œ ๐ŸŒ ๐ŸŒ“ ๐Ÿ“ฆ, ๐Ÿƒโ€โ™‚ ๐ŸŽ ๐Ÿ‘œ, โœ‹๏ธ ๐Ÿ”  โฎ๏ธ ๐Ÿšฎ ๐Ÿ‘ ๐Ÿ› ๏ธ, ๐Ÿ’พ, โ™’๏ธ. ๐Ÿ‘ˆ ๐ŸŒŒ ๐Ÿ‘† ๐Ÿ”œ โœŠ ๐Ÿ“ˆ ๐Ÿ› ๏ธ ๐ŸŽ ๐Ÿš ๐Ÿ’ฝ, โš–๏ธ ๐ŸŽ ๐ŸŽฐ.

& ๐Ÿ“Ž ๐Ÿ“ฆ โš™๏ธ โฎ๏ธ ๐Ÿ“ โš™ ๐Ÿ”œ ๐Ÿ“Ž ๐Ÿ“จ ๐Ÿ”  1๏ธโƒฃ ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ‘† ๐Ÿ“ฑ ๐Ÿ”„. , ๐Ÿ”  ๐Ÿ“จ ๐Ÿ’ช ๐Ÿต 1๏ธโƒฃ ๐Ÿ’— ๐Ÿ” ๐Ÿ“ฆ ๐Ÿƒ ๐Ÿ‘† ๐Ÿ“ฑ.

& ๐Ÿ›Ž ๐Ÿ‘‰ ๐Ÿ“ โš™ ๐Ÿ”œ ๐Ÿ’ช ๐Ÿต ๐Ÿ“จ ๐Ÿ‘ˆ ๐Ÿšถ ๐ŸŽ ๐Ÿ“ฑ ๐Ÿ‘† ๐ŸŒ‘ (โœ… ๐ŸŽ ๐Ÿ†”, โš–๏ธ ๐Ÿ”ฝ ๐ŸŽ ๐Ÿ“› โžก ๐Ÿ”ก), & ๐Ÿ”œ ๐Ÿ“ถ ๐Ÿ‘ˆ ๐Ÿ“ป โ–ถ๏ธ๏ธ ๐Ÿ“ฆ ๐Ÿ‘ˆ ๐ŸŽ ๐Ÿˆธ ๐Ÿƒโ€โ™‚ ๐Ÿ‘† ๐ŸŒ‘.

1๏ธโƒฃ ๐Ÿ› ๏ธ ๐Ÿ“ ๐Ÿ“ฆ

๐Ÿ‘‰ ๐Ÿ†Ž ๐Ÿ˜, ๐Ÿ‘† ๐ŸŽฒ ๐Ÿ”œ ๐Ÿ’š โœ”๏ธ ๐Ÿ‘ (Uvicorn) ๐Ÿ› ๏ธ ๐Ÿ“ ๐Ÿ“ฆ, ๐Ÿ‘† ๐Ÿ”œ โช ๐Ÿšš ๐Ÿงฌ ๐ŸŒ‘ ๐ŸŽš.

, ๐Ÿ‘‰ ๐Ÿ’ผ, ๐Ÿ‘† ๐Ÿ”œ ๐Ÿšซ ๐Ÿ’š โœ”๏ธ ๐Ÿ› ๏ธ ๐Ÿ‘จโ€๐Ÿ’ผ ๐Ÿ’– ๐Ÿ โฎ๏ธ Uvicorn ๐Ÿ‘จโ€๐Ÿญ, โš–๏ธ Uvicorn โš™๏ธ ๐Ÿšฎ ๐Ÿ‘ Uvicorn ๐Ÿ‘จโ€๐Ÿญ. ๐Ÿ‘† ๐Ÿ”œ ๐Ÿ’š โœ”๏ธ ๐Ÿ‘ Uvicorn ๐Ÿ› ๏ธ ๐Ÿ“ ๐Ÿ“ฆ (โœ‹๏ธ ๐ŸŽฒ ๐Ÿ’— ๐Ÿ“ฆ).

โœ”๏ธ โž•1๏ธโƒฃ ๐Ÿ› ๏ธ ๐Ÿ‘จโ€๐Ÿ’ผ ๐Ÿ”˜ ๐Ÿ“ฆ (๐Ÿ”œ โฎ๏ธ ๐Ÿ โš–๏ธ Uvicorn ๐Ÿ› ๏ธ Uvicorn ๐Ÿ‘จโ€๐Ÿญ) ๐Ÿ”œ ๐Ÿ•ด ๐Ÿšฎ ๐Ÿ™ƒ ๐Ÿ”€ ๐Ÿ‘ˆ ๐Ÿ‘† ๐ŸŒ… ๐ŸŽฒ โช โœŠ ๐Ÿ’… โฎ๏ธ ๐Ÿ‘† ๐ŸŒ‘ โš™๏ธ.

๐Ÿ“ฆ โฎ๏ธ ๐Ÿ’— ๐Ÿ› ๏ธ & ๐ŸŽ ๐Ÿ’ผ

โ†—๏ธ, ๐Ÿ“ค ๐ŸŽ ๐Ÿ’ผ ๐ŸŒโ” ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ’š โœ”๏ธ ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ ๐Ÿ› ๏ธ ๐Ÿ‘จโ€๐Ÿ’ผ โ–ถ๏ธ ๐Ÿ“š Uvicorn ๐Ÿ‘จโ€๐Ÿญ ๐Ÿ› ๏ธ ๐Ÿ”˜.

๐Ÿ“š ๐Ÿ’ผ, ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ›‚ โ˜ ๐Ÿ–ผ ๐Ÿ‘ˆ ๐Ÿ”Œ ๐Ÿ ๐Ÿ› ๏ธ ๐Ÿ‘จโ€๐Ÿ’ผ ๐Ÿƒโ€โ™‚ ๐Ÿ’— Uvicorn ๐Ÿ‘จโ€๐Ÿญ ๐Ÿ› ๏ธ, & ๐Ÿ”ข โš’ ๐Ÿ”† ๐Ÿ”ข ๐Ÿ‘จโ€๐Ÿญ โš“๏ธ ๐Ÿ”› โฎ๏ธ ๐Ÿ’ฝ ๐Ÿš ๐Ÿ”. ๐Ÿ‘ค ๐Ÿ”œ ๐Ÿ’ฌ ๐Ÿ‘† ๐ŸŒ… ๐Ÿ”ƒ โšซ๏ธ ๐Ÿ”› ๐Ÿ›‚ โ˜ ๐Ÿ–ผ โฎ๏ธ ๐Ÿ - Uvicorn.

๐Ÿ“ฅ ๐Ÿ–ผ ๐Ÿ•โ” ๐Ÿ‘ˆ ๐Ÿ’ช โš’ ๐Ÿ”‘:

๐Ÿ™… ๐Ÿ“ฑ

๐Ÿ‘† ๐Ÿ’ช ๐Ÿ’š ๐Ÿ› ๏ธ ๐Ÿ‘จโ€๐Ÿ’ผ ๐Ÿ“ฆ ๐Ÿšฅ ๐Ÿ‘† ๐Ÿˆธ ๐Ÿ™… ๐Ÿฅƒ ๐Ÿ‘ˆ ๐Ÿ‘† ๐Ÿšซ ๐Ÿ’ช (๐Ÿฅ ๐Ÿšซ) ๐Ÿ‘Œ-๐ŸŽถ ๐Ÿ”ข ๐Ÿ› ๏ธ ๐Ÿ’โ€โ™‚๏ธ ๐ŸŒ…, & ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿง ๐Ÿ”ข (โฎ๏ธ ๐Ÿ›‚ โ˜ ๐Ÿ–ผ), & ๐Ÿ‘† ๐Ÿƒโ€โ™‚ โšซ๏ธ ๐Ÿ”› ๐Ÿ‘ ๐Ÿ’ฝ, ๐Ÿšซ ๐ŸŒ‘.

โ˜ โœ

๐Ÿ‘† ๐Ÿ’ช ๐Ÿ› ๏ธ ๐Ÿ‘ ๐Ÿ’ฝ (๐Ÿšซ ๐ŸŒ‘) โฎ๏ธ โ˜ โœ, ๐Ÿ‘† ๐Ÿšซ๐Ÿ”œ โœ”๏ธ โฉ ๐ŸŒŒ ๐Ÿ› ๏ธ ๐Ÿงฌ ๐Ÿ“ฆ (โฎ๏ธ โ˜ โœ) โช ๐Ÿ›ก ๐Ÿ”— ๐Ÿ•ธ & ๐Ÿ“ โš–.

โคด๏ธ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ’š โœ”๏ธ ๐Ÿ‘ ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ› ๏ธ ๐Ÿ‘จโ€๐Ÿ’ผ โ–ถ๏ธ ๐Ÿ“š ๐Ÿ‘จโ€๐Ÿญ ๐Ÿ› ๏ธ ๐Ÿ”˜.

๐Ÿคด & ๐ŸŽ ๐Ÿค”

๐Ÿ‘† ๐Ÿ’ช โœ”๏ธ ๐ŸŽ ๐Ÿค” ๐Ÿ‘ˆ ๐Ÿ”œ โš’ โšซ๏ธ โฉ โœ”๏ธ ๐Ÿ‘ ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ’— ๐Ÿ› ๏ธ โ†ฉ๏ธ โœ”๏ธ ๐Ÿ’— ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ‘ ๐Ÿ› ๏ธ ๐Ÿ”  ๐Ÿ‘ซ.

๐Ÿ–ผ (๐Ÿช€ ๐Ÿ”› ๐Ÿ‘† ๐Ÿ–ฅ) ๐Ÿ‘† ๐Ÿ’ช โœ”๏ธ ๐Ÿงฐ ๐Ÿ’– ๐Ÿคด ๐Ÿญ ๐ŸŽ ๐Ÿ“ฆ ๐Ÿ‘ˆ ๐Ÿ”œ โœ”๏ธ ๐Ÿ” ๐Ÿ”  ๐Ÿ“จ ๐Ÿ‘ˆ ๐Ÿ‘Ÿ.

๐Ÿ‘‰ ๐Ÿ’ผ, ๐Ÿšฅ ๐Ÿ‘† โœ”๏ธ ๐Ÿ’— ๐Ÿ“ฆ, ๐Ÿ”ข, ๐Ÿ•โ” ๐Ÿคด ๐Ÿ‘Ÿ โœ โš–, โšซ๏ธ ๐Ÿ”œ ๐Ÿคš ๐Ÿ• ๐Ÿ‘ ๐Ÿ“ฆ ๐Ÿ”  ๐Ÿ•ฐ (๐Ÿ“ฆ ๐Ÿ‘ˆ ๐Ÿต ๐Ÿ‘ˆ ๐ŸŽฏ ๐Ÿ“จ), โ†ฉ๏ธ ๐Ÿคš ๐Ÿ“ˆ โš– ๐ŸŒ ๐Ÿ” ๐Ÿ“ฆ.

โคด๏ธ, ๐Ÿ‘ˆ ๐Ÿ’ผ, โšซ๏ธ ๐Ÿ’ช ๐Ÿ™… โœ”๏ธ 1๏ธโƒฃ ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ’— ๐Ÿ› ๏ธ, & ๐Ÿ‡ง๐Ÿ‡ฟ ๐Ÿงฐ (โœ… ๐Ÿคด ๐Ÿญ) ๐Ÿ”› ๐ŸŽ ๐Ÿ“ฆ ๐Ÿ“ˆ ๐Ÿคด โš– ๐ŸŒ ๐Ÿ”— ๐Ÿ› ๏ธ & ๐ŸŽฆ ๐Ÿ‘ˆ โš– ๐Ÿ”› ๐Ÿ‘ˆ ๐Ÿ‘ ๐Ÿ“ฆ.


๐Ÿ‘‘ โ˜, ๐Ÿ‘Œ ๐Ÿ‘‰ ๐Ÿšซ โœ ๐Ÿ—ฟ ๐Ÿ‘ˆ ๐Ÿ‘† โœ”๏ธ ๐Ÿ˜„ โฉ. ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ‘ซ ๐Ÿ’ญ ๐Ÿ”ฌ ๐Ÿ‘† ๐Ÿ‘ โš™๏ธ ๐Ÿ’ผ & ๐Ÿ’ญ โšซ๏ธโ” ๐Ÿ‘ ๐ŸŽฏ ๐Ÿ‘† โš™๏ธ, โœ… ๐Ÿ‘… โ” ๐Ÿ› ๏ธ ๐Ÿ”ง:

  • ๐Ÿ’‚โ€โ™‚ - ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ”
  • ๐Ÿƒโ€โ™‚ ๐Ÿ”› ๐Ÿ•ด
  • โ
  • ๐Ÿงฌ (๐Ÿ”ข ๐Ÿ› ๏ธ ๐Ÿƒ)
  • ๐Ÿ’พ
  • โฎ๏ธ ๐Ÿ” โญ โ–ถ๏ธ

๐Ÿ’พ

๐Ÿšฅ ๐Ÿ‘† ๐Ÿƒ ๐Ÿ‘ ๐Ÿ› ๏ธ ๐Ÿ“ ๐Ÿ“ฆ ๐Ÿ‘† ๐Ÿ”œ โœ”๏ธ ๐ŸŒ… โš–๏ธ ๐ŸŒ˜ ๐Ÿ‘-๐Ÿ”ฌ, โš–, & ๐Ÿ“‰ ๐Ÿ’ธ ๐Ÿ’พ ๐Ÿด ๐Ÿ”  ๐Ÿ‘ˆ ๐Ÿ“ฆ (๐ŸŒ… ๐ŸŒ˜ 1๏ธโƒฃ ๐Ÿšฅ ๐Ÿ‘ซ ๐Ÿ”).

& โคด๏ธ ๐Ÿ‘† ๐Ÿ’ช โš’ ๐Ÿ‘ˆ ๐ŸŽ ๐Ÿ’พ ๐Ÿ“‰ & ๐Ÿ“„ ๐Ÿ‘† ๐Ÿ“ณ ๐Ÿ‘† ๐Ÿ“ฆ ๐Ÿงพ โš™๏ธ (๐Ÿ–ผ Kubernetes). ๐Ÿ‘ˆ ๐ŸŒŒ โšซ๏ธ ๐Ÿ”œ ๐Ÿ’ช ๐Ÿ” ๐Ÿ“ฆ ๐Ÿ’ช ๐ŸŽฐ โœŠ ๐Ÿ”˜ ๐Ÿง ๐Ÿ’ธ ๐Ÿ’พ ๐Ÿ’ช ๐Ÿ‘ซ, & ๐Ÿ’ธ ๐Ÿ’ช ๐ŸŽฐ ๐ŸŒ‘.

๐Ÿšฅ ๐Ÿ‘† ๐Ÿˆธ ๐Ÿ™…, ๐Ÿ‘‰ ๐Ÿ”œ ๐ŸŽฒ ๐Ÿšซ โš , & ๐Ÿ‘† ๐Ÿ’ช ๐Ÿšซ ๐Ÿ’ช โœ” ๐Ÿ‹๏ธ ๐Ÿ’พ ๐Ÿ“‰. โœ‹๏ธ ๐Ÿšฅ ๐Ÿ‘† โš™๏ธ ๐Ÿ“š ๐Ÿ’พ (๐Ÿ–ผ โฎ๏ธ ๐ŸŽฐ ๐Ÿซ ๐Ÿท), ๐Ÿ‘† ๐Ÿ”œ โœ… โ” ๐ŸŒ… ๐Ÿ’พ ๐Ÿ‘† ๐Ÿ˜ฉ & ๐Ÿ”† ๐Ÿ”ข ๐Ÿ“ฆ ๐Ÿ‘ˆ ๐Ÿƒ ๐Ÿ”  ๐ŸŽฐ (& ๐ŸŽฒ ๐Ÿšฎ ๐ŸŒ– ๐ŸŽฐ ๐Ÿ‘† ๐ŸŒ‘).

๐Ÿšฅ ๐Ÿ‘† ๐Ÿƒ ๐Ÿ’— ๐Ÿ› ๏ธ ๐Ÿ“ ๐Ÿ“ฆ (๐Ÿ–ผ โฎ๏ธ ๐Ÿ›‚ โ˜ ๐Ÿ–ผ) ๐Ÿ‘† ๐Ÿ”œ โœ”๏ธ โš’ ๐Ÿ’ญ ๐Ÿ‘ˆ ๐Ÿ”ข ๐Ÿ› ๏ธ โ–ถ๏ธ ๐Ÿšซ ๐Ÿด ๐ŸŒ– ๐Ÿ’พ ๐ŸŒ˜ โšซ๏ธโ” ๐Ÿ’ช.

โฎ๏ธ ๐Ÿ” โญ โ–ถ๏ธ & ๐Ÿ“ฆ

๐Ÿšฅ ๐Ÿ‘† โš™๏ธ ๐Ÿ“ฆ (โœ… โ˜, Kubernetes), โคด๏ธ ๐Ÿ“ค 2๏ธโƒฃ ๐Ÿ‘‘ ๐ŸŽฏ ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ.

๐Ÿ’— ๐Ÿ“ฆ

๐Ÿšฅ ๐Ÿ‘† โœ”๏ธ ๐Ÿ’— ๐Ÿ“ฆ, ๐ŸŽฒ ๐Ÿ”  1๏ธโƒฃ ๐Ÿƒ ๐Ÿ‘ ๐Ÿ› ๏ธ (๐Ÿ–ผ, Kubernetes ๐ŸŒ‘), โคด๏ธ ๐Ÿ‘† ๐Ÿ”œ ๐ŸŽฒ ๐Ÿ’š โœ”๏ธ ๐ŸŽ ๐Ÿ“ฆ ๐Ÿ”จ ๐Ÿ‘ท โฎ๏ธ ๐Ÿ“ถ ๐Ÿ‘ ๐Ÿ“ฆ, ๐Ÿƒ ๐Ÿ‘ ๐Ÿ› ๏ธ, โญ ๐Ÿƒ ๐Ÿ” ๐Ÿ‘จโ€๐Ÿญ ๐Ÿ“ฆ.

Info

๐Ÿšฅ ๐Ÿ‘† โš™๏ธ Kubernetes, ๐Ÿ‘‰ ๐Ÿ”œ ๐ŸŽฒ ๐Ÿ•‘ ๐Ÿ“ฆ.

๐Ÿšฅ ๐Ÿ‘† โš™๏ธ ๐Ÿ’ผ ๐Ÿ“ค ๐Ÿ™…โ€โ™‚ โš  ๐Ÿƒโ€โ™‚ ๐Ÿ‘ˆ โฎ๏ธ ๐Ÿ“ถ ๐Ÿ’— ๐Ÿ•ฐ ๐Ÿ”— (๐Ÿ–ผ ๐Ÿšฅ ๐Ÿ‘† ๐Ÿšซ ๐Ÿƒ ๐Ÿ’ฝ ๐Ÿ› ๏ธ, โœ‹๏ธ โœ… ๐Ÿšฅ ๐Ÿ’ฝ ๐Ÿ”œ), โคด๏ธ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿšฎ ๐Ÿ‘ซ ๐Ÿ”  ๐Ÿ“ฆ โ–ถ๏ธ๏ธ โญ โ–ถ๏ธ ๐Ÿ‘‘ ๐Ÿ› ๏ธ.

๐Ÿ‘ ๐Ÿ“ฆ

๐Ÿšฅ ๐Ÿ‘† โœ”๏ธ ๐Ÿ™… ๐Ÿ–ฅ, โฎ๏ธ ๐Ÿ‘ ๐Ÿ“ฆ ๐Ÿ‘ˆ โคด๏ธ โ–ถ๏ธ ๐Ÿ’— ๐Ÿ‘จโ€๐Ÿญ ๐Ÿ› ๏ธ (โš–๏ธ 1๏ธโƒฃ ๐Ÿ› ๏ธ), โคด๏ธ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿƒ ๐Ÿ‘ˆ โฎ๏ธ ๐Ÿ” ๐ŸŽ ๐Ÿ“ฆ, โ–ถ๏ธ๏ธ โญ โ–ถ๏ธ ๐Ÿ› ๏ธ โฎ๏ธ ๐Ÿ“ฑ. ๐Ÿ›‚ โ˜ ๐Ÿ–ผ ๐Ÿ•โ€๐Ÿฆบ ๐Ÿ‘‰ ๐Ÿ”˜.

๐Ÿ›‚ โ˜ ๐Ÿ–ผ โฎ๏ธ ๐Ÿ - Uvicorn

๐Ÿ“ค ๐Ÿ›‚ โ˜ ๐Ÿ–ผ ๐Ÿ‘ˆ ๐Ÿ”Œ ๐Ÿ ๐Ÿƒโ€โ™‚ โฎ๏ธ Uvicorn ๐Ÿ‘จโ€๐Ÿญ, โ„น โฎ๏ธ ๐Ÿ“ƒ: ๐Ÿ’ฝ ๐Ÿ‘จโ€๐Ÿญ - ๐Ÿ โฎ๏ธ Uvicorn.

๐Ÿ‘‰ ๐Ÿ–ผ ๐Ÿ”œ โš  โœด๏ธ โš  ๐Ÿ”ฌ ๐Ÿ”›: ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ’— ๐Ÿ› ๏ธ & ๐ŸŽ ๐Ÿ’ผ.

Warning

๐Ÿ“ค โ†• ๐Ÿคž ๐Ÿ‘ˆ ๐Ÿ‘† ๐Ÿšซ ๐Ÿ’ช ๐Ÿ‘‰ ๐Ÿงข ๐Ÿ–ผ โš–๏ธ ๐Ÿ™† ๐ŸŽ ๐ŸŽ 1๏ธโƒฃ, & ๐Ÿ”œ ๐Ÿ‘ป ๐Ÿ“† ๐Ÿ— ๐Ÿ–ผ โšช๏ธโžก๏ธ ๐Ÿ–Œ ๐Ÿ”ฌ ๐Ÿ”›: ๐Ÿ— โ˜ ๐Ÿ–ผ FastAPI.

๐Ÿ‘‰ ๐Ÿ–ผ โœ”๏ธ ๐Ÿš˜-๐Ÿ“ณ ๐Ÿ› ๏ธ ๐Ÿ”Œ โš’ ๐Ÿ”ข ๐Ÿ‘จโ€๐Ÿญ ๐Ÿ› ๏ธ โš“๏ธ ๐Ÿ”› ๐Ÿ’ฝ ๐Ÿš ๐Ÿ’ช.

โšซ๏ธ โœ”๏ธ ๐Ÿค” ๐Ÿ”ข, โœ‹๏ธ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ”€ & โ„น ๐ŸŒ ๐Ÿ“ณ โฎ๏ธ ๐ŸŒ ๐Ÿ”ข โš–๏ธ ๐Ÿ“ณ ๐Ÿ“.

โšซ๏ธ ๐Ÿ•โ€๐Ÿฆบ ๐Ÿƒ โฎ๏ธ ๐Ÿ” โญ โ–ถ๏ธ โฎ๏ธ โœ.

Tip

๐Ÿ‘€ ๐ŸŒ ๐Ÿ“ณ & ๐ŸŽ›, ๐Ÿšถ โ˜ ๐Ÿ–ผ ๐Ÿ“ƒ: Tiangolo/uvicorn-๐Ÿ-fastapi.

๐Ÿ”ข ๐Ÿ› ๏ธ ๐Ÿ”› ๐Ÿ›‚ โ˜ ๐Ÿ–ผ

๐Ÿ”ข ๐Ÿ› ๏ธ ๐Ÿ”› ๐Ÿ‘‰ ๐Ÿ–ผ ๐Ÿ“Š ๐Ÿ” โšช๏ธโžก๏ธ ๐Ÿ’ฝ ๐Ÿš ๐Ÿ’ช.

๐Ÿ‘‰ โ›“ ๐Ÿ‘ˆ โšซ๏ธ ๐Ÿ”œ ๐Ÿ”„ ๐Ÿ—œ ๐ŸŒ… ๐ŸŽญ โšช๏ธโžก๏ธ ๐Ÿ’ฝ ๐Ÿ’ช.

๐Ÿ‘† ๐Ÿ’ช ๐Ÿ”† โšซ๏ธ โฎ๏ธ ๐Ÿ“ณ โš™๏ธ ๐ŸŒ ๐Ÿ”ข, โ™’๏ธ.

โœ‹๏ธ โšซ๏ธ โ›“ ๐Ÿ‘ˆ ๐Ÿ”ข ๐Ÿ› ๏ธ ๐Ÿช€ ๐Ÿ”› ๐Ÿ’ฝ ๐Ÿ“ฆ ๐Ÿƒ, ๐Ÿ’ธ ๐Ÿ’พ ๐Ÿด ๐Ÿ”œ ๐Ÿช€ ๐Ÿ”› ๐Ÿ‘ˆ.

, ๐Ÿšฅ ๐Ÿ‘† ๐Ÿˆธ ๐Ÿด ๐Ÿ“š ๐Ÿ’พ (๐Ÿ–ผ โฎ๏ธ ๐ŸŽฐ ๐Ÿซ ๐Ÿท), & ๐Ÿ‘† ๐Ÿ’ฝ โœ”๏ธ ๐Ÿ“š ๐Ÿ’ฝ ๐Ÿš โœ‹๏ธ ๐Ÿฅ ๐Ÿ’พ, โคด๏ธ ๐Ÿ‘† ๐Ÿ“ฆ ๐Ÿ’ช ๐Ÿ”š ๐Ÿ†™ ๐Ÿ”„ โš™๏ธ ๐ŸŒ… ๐Ÿ’พ ๐ŸŒ˜ โšซ๏ธโ” ๐Ÿ’ช, & ๐Ÿค• ๐ŸŽญ ๐Ÿ“š (โš–๏ธ ๐Ÿ’ฅ). ๐Ÿ‘ถ

โœ Dockerfile

๐Ÿ“ฅ โ” ๐Ÿ‘† ๐Ÿ”œ โœ Dockerfile โš“๏ธ ๐Ÿ”› ๐Ÿ‘‰ ๐Ÿ–ผ:

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9

COPY ./requirements.txt /app/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt

COPY ./app /app

๐Ÿฆ ๐Ÿˆธ

๐Ÿšฅ ๐Ÿ‘† โฉ ๐Ÿ“„ ๐Ÿ”ƒ ๐Ÿ— ๐Ÿฆ ๐Ÿˆธ โฎ๏ธ ๐Ÿ’— ๐Ÿ“, ๐Ÿ‘† Dockerfile ๐Ÿ’ช โ†ฉ๏ธ ๐Ÿ‘€ ๐Ÿ’–:

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9

COPY ./requirements.txt /app/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt

COPY ./app /app/app

๐Ÿ•โ” โš™๏ธ

๐Ÿ‘† ๐Ÿ”œ ๐ŸŽฒ ๐Ÿšซ โš™๏ธ ๐Ÿ‘‰ ๐Ÿ›‚ ๐Ÿงข ๐Ÿ–ผ (โš–๏ธ ๐Ÿ™† ๐ŸŽ ๐ŸŽ 1๏ธโƒฃ) ๐Ÿšฅ ๐Ÿ‘† โš™๏ธ Kubernetes (โš–๏ธ ๐ŸŽ) & ๐Ÿ‘† โช โš’ ๐Ÿงฌ ๐ŸŒ‘ ๐ŸŽš, โฎ๏ธ ๐Ÿ’— ๐Ÿ“ฆ. ๐Ÿ“š ๐Ÿ’ผ, ๐Ÿ‘† ๐Ÿ‘ ๐Ÿ“† ๐Ÿ— ๐Ÿ–ผ โšช๏ธโžก๏ธ ๐Ÿ–Œ ๐Ÿ”ฌ ๐Ÿ”›: ๐Ÿ— โ˜ ๐Ÿ–ผ FastAPI.

๐Ÿ‘‰ ๐Ÿ–ผ ๐Ÿ”œ โš  โœด๏ธ ๐ŸŽ ๐Ÿ’ผ ๐Ÿ”ฌ ๐Ÿ”› ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ’— ๐Ÿ› ๏ธ & ๐ŸŽ ๐Ÿ’ผ. ๐Ÿ–ผ, ๐Ÿšฅ ๐Ÿ‘† ๐Ÿˆธ ๐Ÿ™… ๐Ÿฅƒ ๐Ÿ‘ˆ โš’ ๐Ÿ”ข ๐Ÿ”ข ๐Ÿ› ๏ธ โš“๏ธ ๐Ÿ”› ๐Ÿ’ฝ ๐Ÿ‘ท ๐Ÿ‘, ๐Ÿ‘† ๐Ÿšซ ๐Ÿ’š ๐Ÿ˜ฅ โฎ๏ธ โŽ ๐Ÿ› ๏ธ ๐Ÿงฌ ๐ŸŒ‘ ๐ŸŽš, & ๐Ÿ‘† ๐Ÿšซ ๐Ÿƒ ๐ŸŒ… ๐ŸŒ˜ 1๏ธโƒฃ ๐Ÿ“ฆ โฎ๏ธ ๐Ÿ‘† ๐Ÿ“ฑ. โš–๏ธ ๐Ÿšฅ ๐Ÿ‘† ๐Ÿ› ๏ธ โฎ๏ธ โ˜ โœ, ๐Ÿƒ ๐Ÿ”› ๐Ÿ‘ ๐Ÿ’ฝ, โ™’๏ธ.

๐Ÿ› ๏ธ ๐Ÿ“ฆ ๐Ÿ–ผ

โฎ๏ธ โœ”๏ธ ๐Ÿ“ฆ (โ˜) ๐Ÿ–ผ ๐Ÿ“ค ๐Ÿ“š ๐ŸŒŒ ๐Ÿ› ๏ธ โšซ๏ธ.

๐Ÿ–ผ:

  • โฎ๏ธ โ˜ โœ ๐Ÿ‘ ๐Ÿ’ฝ
  • โฎ๏ธ Kubernetes ๐ŸŒ‘
  • โฎ๏ธ โ˜ ๐Ÿ ๐Ÿ“ณ ๐ŸŒ‘
  • โฎ๏ธ โž•1๏ธโƒฃ ๐Ÿงฐ ๐Ÿ’– ๐Ÿ––
  • โฎ๏ธ โ˜ ๐Ÿ•โ€๐Ÿฆบ ๐Ÿ‘ˆ โœŠ ๐Ÿ‘† ๐Ÿ“ฆ ๐Ÿ–ผ & ๐Ÿ› ๏ธ โšซ๏ธ

โ˜ ๐Ÿ–ผ โฎ๏ธ ๐ŸŽถ

๐Ÿšฅ ๐Ÿ‘† โš™๏ธ ๐ŸŽถ ๐Ÿ› ๏ธ ๐Ÿ‘† ๐Ÿ— ๐Ÿ”—, ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ โ˜ ๐Ÿ‘-โ–ถ๏ธ ๐Ÿ—:

# (1)
FROM python:3.9 as requirements-stage

# (2)
WORKDIR /tmp

# (3)
RUN pip install poetry

# (4)
COPY ./pyproject.toml ./poetry.lock* /tmp/

# (5)
RUN poetry export -f requirements.txt --output requirements.txt --without-hashes

# (6)
FROM python:3.9

# (7)
WORKDIR /code

# (8)
COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt

# (9)
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

# (10)
COPY ./app /code/app

# (11)
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]

1๏ธโƒฃ. ๐Ÿ‘‰ ๐Ÿฅ‡ โ–ถ๏ธ, โšซ๏ธ ๐ŸŒŸ requirements-stage.

2๏ธโƒฃ. โš’ /tmp โฎ๏ธ ๐Ÿ‘ท ๐Ÿ“.

๐Ÿ“ฅ ๐ŸŒโ” ๐Ÿ‘ฅ ๐Ÿ”œ ๐Ÿ— ๐Ÿ“ `requirements.txt`

3๏ธโƒฃ. โŽ ๐ŸŽถ ๐Ÿ‘‰ โ˜ โ–ถ๏ธ.

4๏ธโƒฃ. ๐Ÿ“ pyproject.toml & poetry.lock ๐Ÿ“ /tmp ๐Ÿ“.

โ†ฉ๏ธ โšซ๏ธ โš™๏ธ `./poetry.lock*` (โ–ถ๏ธ โฎ๏ธ `*`), โšซ๏ธ ๐Ÿ† ๐Ÿšซ ๐Ÿ’ฅ ๐Ÿšฅ ๐Ÿ‘ˆ ๐Ÿ“ ๐Ÿšซ ๐Ÿ’ช.

5๏ธโƒฃ. ๐Ÿ— requirements.txt ๐Ÿ“.

6๏ธโƒฃ. ๐Ÿ‘‰ ๐Ÿ โ–ถ๏ธ, ๐Ÿ•ณ ๐Ÿ“ฅ ๐Ÿ”œ ๐Ÿ›ก ๐Ÿ ๐Ÿ“ฆ ๐Ÿ–ผ.

7๏ธโƒฃ. โš’ โฎ๏ธ ๐Ÿ‘ท ๐Ÿ“ /code.

8๏ธโƒฃ. ๐Ÿ“ requirements.txt ๐Ÿ“ /code ๐Ÿ“.

๐Ÿ‘‰ ๐Ÿ“ ๐Ÿ•ด ๐Ÿ–– โฎ๏ธ โ˜ โ–ถ๏ธ, ๐Ÿ‘ˆ โšซ๏ธโ” ๐Ÿ‘ฅ โš™๏ธ `--from-requirements-stage` ๐Ÿ“ โšซ๏ธ.

9๏ธโƒฃ. โŽ ๐Ÿ“ฆ ๐Ÿ”— ๐Ÿ— requirements.txt ๐Ÿ“.

1๏ธโƒฃ0๏ธโƒฃ. ๐Ÿ“ app ๐Ÿ“ /code ๐Ÿ“.

1๏ธโƒฃ1๏ธโƒฃ. ๐Ÿƒ uvicorn ๐Ÿ“‹, ๐Ÿ’ฌ โšซ๏ธ โš™๏ธ app ๐ŸŽš ๐Ÿ—„ โšช๏ธโžก๏ธ app.main.

Tip

๐Ÿ–Š ๐Ÿ’ญ ๐Ÿ”ข ๐Ÿ‘€ โšซ๏ธโ” ๐Ÿ”  โธ ๐Ÿ”จ.

โ˜ โ–ถ๏ธ ๐Ÿ• Dockerfile ๐Ÿ‘ˆ ๐Ÿ‘ท ๐Ÿ• ๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿ‘ˆ ๐Ÿ•ด โš™๏ธ ๐Ÿ— ๐Ÿ“ โš™๏ธ โช.

๐Ÿฅ‡ โ–ถ๏ธ ๐Ÿ”œ ๐Ÿ•ด โš™๏ธ โŽ ๐ŸŽถ & ๐Ÿ— requirements.txt โฎ๏ธ ๐Ÿ‘† ๐Ÿ— ๐Ÿ”— โšช๏ธโžก๏ธ ๐ŸŽถ pyproject.toml ๐Ÿ“.

๐Ÿ‘‰ requirements.txt ๐Ÿ“ ๐Ÿ”œ โš™๏ธ โฎ๏ธ pip โช โญ โ–ถ๏ธ.

๐Ÿ ๐Ÿ“ฆ ๐Ÿ–ผ ๐Ÿ•ด ๐Ÿ โ–ถ๏ธ ๐Ÿ›ก. โฎ๏ธ โ–ถ๏ธ(โ“‚) ๐Ÿ”œ โŽ.

๐Ÿ•โ” โš™๏ธ ๐ŸŽถ, โšซ๏ธ ๐Ÿ”œ โš’ ๐Ÿ”‘ โš™๏ธ โ˜ ๐Ÿ‘-โ–ถ๏ธ ๐Ÿ— โ†ฉ๏ธ ๐Ÿ‘† ๐Ÿšซ ๐Ÿค™ ๐Ÿ’ช โœ”๏ธ ๐ŸŽถ & ๐Ÿšฎ ๐Ÿ”— โŽ ๐Ÿ ๐Ÿ“ฆ ๐Ÿ–ผ, ๐Ÿ‘† ๐Ÿ•ด ๐Ÿ’ช โœ”๏ธ ๐Ÿ— requirements.txt ๐Ÿ“ โŽ ๐Ÿ‘† ๐Ÿ— ๐Ÿ”—.

โคด๏ธ โญ (& ๐Ÿ) โ–ถ๏ธ ๐Ÿ‘† ๐Ÿ”œ ๐Ÿ— ๐Ÿ–ผ ๐ŸŒ… โš–๏ธ ๐ŸŒ˜ ๐ŸŽ ๐ŸŒŒ ๐Ÿ”ฌ โญ.

โ›… ๐Ÿค โŽ ๐Ÿ—ณ - ๐ŸŽถ

๐Ÿ”„, ๐Ÿšฅ ๐Ÿ‘† ๐Ÿƒโ€โ™‚ ๐Ÿ‘† ๐Ÿ“ฆ โ›… ๐Ÿค โŽ ๐Ÿ—ณ (๐Ÿ“ โš™) ๐Ÿ’– ๐Ÿ‘Œ โš–๏ธ Traefik, ๐Ÿšฎ ๐ŸŽ› --proxy-headers ๐Ÿ“‹:

CMD ["uvicorn", "app.main:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "80"]

๐ŸŒƒ

โš™๏ธ ๐Ÿ“ฆ โš™๏ธ (โœ… โฎ๏ธ โ˜ & Kubernetes) โšซ๏ธ โ–ถ๏ธ๏ธ ๐Ÿ“ถ ๐ŸŽฏ ๐Ÿต ๐ŸŒ ๐Ÿ› ๏ธ ๐Ÿ”ง:

  • ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ”
  • ๐Ÿƒโ€โ™‚ ๐Ÿ”› ๐Ÿ•ด
  • โ
  • ๐Ÿงฌ (๐Ÿ”ข ๐Ÿ› ๏ธ ๐Ÿƒ)
  • ๐Ÿ’พ
  • โฎ๏ธ ๐Ÿ” โญ โ–ถ๏ธ

๐ŸŒ… ๐Ÿ’ผ, ๐Ÿ‘† ๐ŸŽฒ ๐Ÿ† ๐Ÿšซ ๐Ÿ’š โš™๏ธ ๐Ÿ™† ๐Ÿงข ๐Ÿ–ผ, & โ†ฉ๏ธ ๐Ÿ— ๐Ÿ“ฆ ๐Ÿ–ผ โšช๏ธโžก๏ธ ๐Ÿ–Œ 1๏ธโƒฃ โš“๏ธ ๐Ÿ”› ๐Ÿ›‚ ๐Ÿ โ˜ ๐Ÿ–ผ.

โœŠ ๐Ÿ’… โœ” ๐Ÿ‘ฉโ€๐ŸŒพ Dockerfile & โ˜ ๐Ÿ’พ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ“‰ ๐Ÿ— ๐Ÿ•ฐ, ๐Ÿ“‰ ๐Ÿ‘† ๐Ÿ“ˆ (& โŽ ๐Ÿ˜ฉ). ๐Ÿ‘ถ

๐ŸŽฏ ๐ŸŽ ๐Ÿ’ผ, ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ’š โš™๏ธ ๐Ÿ›‚ โ˜ ๐Ÿ–ผ FastAPI. ๐Ÿ‘ถ