Oleksandr Fedoruk

Software engineer, lecturer, researcher

Programowanie w chmurze – laboratorium 1

Cel ćwiczenia

W ramach tego ćwiczenia samodzielnie stworzysz prostą aplikację w FastAPI, a następnie uruchomisz ją w kontenerze Dockerowym przy użyciu Play with Docker.

Jeżeli używasz prywatny laptop, zachęcam do zainstalowania Docker na nim i wykonaniu ćwiczenia lokalnie (https://docs.docker.com/engine/install/).

Wymagania

  • Konto w Docker Hub (wymagane do korzystania z Play with Docker: https://hub.docker.com/).
  • Podstawowa znajomość Dockera i Pythona.

Kroki ćwiczenia

1. Uruchomienie Play with Docker

  1. Wejdź na stronę Play with Docker.
  2. Zaloguj się na swoje konto Docker Hub.
  3. Kliknij Start i utwórz nową instancję, wybierając opcję + ADD NEW INSTANCE.

2. Instalacja FastAPI i Uvicorn

FastAPI to framework do budowy API w Pythonie, a Uvicorn to serwer ASGI, który go obsługuje.

W Play with Docker wykonaj poniższe polecenie, aby stworzyć katalog projektu i wejść do niego:

mkdir fastapi-docker && cd fastapi-docker

Następnie utwórz plik aplikacji FastAPI:

nano app.py

Wklej poniższy kod i zapisz plik (CTRL + X, Y, ENTER):

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI in Docker!"}

3. Tworzenie pliku zależności (requirements.txt)

W tym samym katalogu utwórz plik requirements.txt:

nano requirements.txt

Dodaj do niego:

fastapi
uvicorn

Zapisz (CTRL + X, Y, ENTER).

4. Tworzenie Dockerfile

Dockerfile to instrukcja do budowania obrazu Dockera.

Utwórz nowy plik:

nano Dockerfile

Wklej poniższą zawartość:

# Użycie oficjalnego obrazu Pythona
FROM python:3.10

# Ustawienie katalogu roboczego
WORKDIR /app

# Kopiowanie plików do kontenera
COPY requirements.txt .
COPY app.py .

# Instalacja zależności
RUN pip install --no-cache-dir -r requirements.txt

# Uruchomienie aplikacji
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]

Zapisz plik (CTRL + X, Y, ENTER).

5. Budowanie obrazu Dockera

Teraz zbudujemy obraz Dockera na podstawie Dockerfile:

docker build -t my-fastapi-app .

Po zakończeniu budowania obrazu, sprawdź, czy znajduje się na liście:

docker images

6. Uruchomienie kontenera

Teraz uruchomimy aplikację w kontenerze:

docker run -d -p 8000:8000 my-fastapi-app

Sprawdź działające kontenery:

docker ps

7. Testowanie aplikacji

Sprawdź, czy aplikacja działa, wykonując polecenie:

curl http://localhost:8000

Powinieneś zobaczyć odpowiedź:

{"message":"Hello, FastAPI in Docker!"}

8. Zatrzymanie i usunięcie kontenera

Aby zatrzymać kontener:

docker stop <CONTAINER_ID>

Aby usunąć kontener:

docker rm <CONTAINER_ID>

9. Podsumowanie

W tym ćwiczeniu:

  • Utworzyłeś aplikację FastAPI.
  • Stworzyłeś plik Dockerfile.
  • Zbudowałeś obraz Dockerowy.
  • Uruchomiłeś kontener z aplikacją w Play with Docker.
  • Przetestowałeś działanie API.