FROM python:3.12-slim WORKDIR /app COPY services/astroklient/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Rdzeń wspólny z pełną aplikacją: ekrany astrologiczne, szablony, zasoby. # Jedno źródło, dwa produkty — inaczej te same 2500 linii szablonów żyłyby # w dwóch egzemplarzach i rozjechały się w ciągu tygodni, po cichu. COPY services/presentation/app ./app # …minus wszystko, czego ten produkt nie ma. Lista jest DANYMI, a nie tekstem # w tym pliku: czyta ją także test, który pilnuje, żeby zgadzała się ze # złożeniem w main.py. Rozjazd między nimi znaczyłby albo martwy kod w obrazie, # albo brakujący plik i błąd dopiero przy uruchomieniu. COPY services/astroklient/usun.txt . RUN while read -r SCIEZKA; do \ [ -n "$SCIEZKA" ] || continue; \ test -e "app/$SCIEZKA" || { echo "usun.txt wskazuje nieistniejące: $SCIEZKA"; exit 1; }; \ rm -rf "app/$SCIEZKA"; \ done < usun.txt && rm usun.txt # Nakładka: własne logowanie, własna pula plików, własny ekran wgrywania, # własne złożenie. Nadpisuje pliki o tych samych nazwach. COPY services/astroklient/app ./app EXPOSE 8006 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8006"]