Uruchomienie w Dockerze (PL)
Uruchomienie w Dockerze (PL)¶
Ten dokument opisuje, jak uruchomić aplikację w kontenerach Docker, bez konieczności lokalnej instalacji Pythona i zależności.
1. Wymagania¶
- Docker zainstalowany na maszynie.
- Docker Compose – osobno lub w pakiecie z Docker Desktop.
W większości nowoczesnych instalacji dostępne jest polecenie:
docker compose ...
Jeżeli używasz starszej wersji, możesz mieć polecenie:
docker-compose ...
Oba warianty działają z tym samym plikiem docker-compose.yml.
Jak zainstalować Docker i Docker Compose (skrótowo)¶
- Docker Desktop (Windows/macOS): pobierz z docker.com/get-started i zainstaluj z ustawieniami domyślnymi (zawiera Docker Engine i Compose).
- Linux: skorzystaj z oficjalnej instrukcji instalacji Docker Engine
dla swojej dystrybucji w dokumentacji docs.docker.com.
Compose V2 jest częścią CLI (
docker compose).
2. Przygotowanie pliku .env¶
Przed uruchomieniem kontenerów ustaw zmienne środowiskowe tak samo, jak dla uruchomienia lokalnego:
cp .env.example .env
Minimalnie wymagane dla AI:
AZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINTAZURE_OPENAI_GPT_DEPLOYMENTAZURE_OPENAI_EMBEDDING_DEPLOYMENT
Dla Dockera szczególnie ważne są:
QDRANT_HOST=qdrantQDRANT_PORT=6333
(to wartości domyślne używane w docker-compose.yml, które kierują
aplikację na kontener qdrant).
3. Uruchomienie aplikacji i Qdrant¶
Plik docker-compose.yml definiuje dwa główne serwisy:
app– aplikacja Flask (recruitment-ai:latest),qdrant– baza wektorowa Qdrant.
Uruchom:
docker compose up -d
# lub, jeśli masz starszą wersję:
docker-compose up -d
Po kilku chwilach:
- aplikacja będzie dostępna pod adresem
http://localhost:5000 - Qdrant pod adresem (API)
http://localhost:6333
W tle zostaną podłączone wolumeny:
./data→/app/data– dane aplikacji,./uploads→/app/uploads– wgrywane CV,./qdrant_db→/app/qdrant_db– lokalna baza Qdrant (jeśli używana),qdrant_storage– named volume dla Qdrant.
4. Ładowanie bazy wiedzy (RAG) w Dockerze¶
Aby załadować dokumenty do Qdrant, możesz:
- Uruchomić loader w środku kontenera aplikacji:
docker compose exec app python knowledge_base/load_to_qdrant.py
# lub:
# docker-compose exec app python knowledge_base/load_to_qdrant.py
Upewnij się, że pliki .txt znajdują się w katalogu knowledge_base/
w repozytorium (są kopiowane do obrazu).
- Lub uruchomić loader lokalnie, wskazując Qdrant z Dockera:
export QDRANT_HOST=localhost
export QDRANT_PORT=6333
python knowledge_base/load_to_qdrant.py
5. Uruchamianie testów w kontenerze¶
Plik docker-compose.yml zawiera dodatkowy serwis:
app-test– używany do uruchamiania testów:
docker compose --profile test run --rm app-test
# lub:
docker-compose --profile test run --rm app-test
Serwis ten buduje ten sam obraz, ustawia testowe zmienne środowiskowe Azure OpenAI i uruchamia:
pytest tests/ -v --cov=... --cov-fail-under=40
6. Rozwiązywanie problemów (Troubleshooting)¶
6.1. Kontener natychmiast się wyłącza¶
- Objaw:
docker compose pspokazuje status „Exited”. - Sprawdź:
-
logi aplikacji:
docker compose logs app -
czy
.envzawiera poprawneAZURE_OPENAI_API_KEYi inne wymagane zmienne, - czy nie ma błędów importu (np. brakujący moduł – wtedy warto zbudować obraz od nowa).
6.2. Brak połączenia z Qdrant¶
- Objaw: błędy „connection refused” albo komunikaty, że nie można połączyć się z Qdrant.
- Sprawdź:
- czy serwis
qdrantdziała (docker compose ps), - czy porty 6333/6334 nie są zajęte przez inny proces,
- czy w
.envmaszQDRANT_HOST=qdrantiQDRANT_PORT=6333.
6.3. Dane nie są zapisywane między restartami¶
- Upewnij się, że katalogi
./data,./uploads,./qdrant_dbistnieją i nie są przypadkowo czyszczone, - sprawdź, czy w
docker-compose.ymlwolumeny są poprawnie podpięte.
7. Zatrzymywanie i sprzątanie¶
- Zatrzymanie kontenerów:
docker compose down
# lub:
docker-compose down
- Zatrzymanie + usunięcie wolumenów (uwaga: stracisz dane!):
docker compose down -v