pyswisseph to rozszerzenie C, a na PyPI (2.10.3.2) gotowe wheels koncza sie na cp311 i obejmuja wylacznie i686/x86_64. Obraz stoi na python:3.12-slim, wiec pip ZAWSZE kompilowal ze zrodel - a slim nie ma kompilatora. Stad fail. - Dockerfile wieloetapowy: kompilacja w etapie builder (build-essential), do runtime trafia juz tylko gotowy wheel - obraz zostaje czysty i maly. Dziala tez na arm64, gdzie wheeli linuksowych nie ma dla zadnej wersji. - sanity check (import swisseph) na etapie builda, zeby niedzialajacy silnik wywracal build, a nie dopiero pierwszy request. - CI: nowy job swisseph-image - realny docker build + smoke test /health i /positions na horoskopie referencyjnym. - README: udokumentowany powod wieloetapowego builda. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit was merged in pull request #3.
This commit is contained in:
@@ -15,9 +15,23 @@ permisywnej reszty systemu. **Nie wchodzi do dystrybucji zamkniętego produktu.*
|
||||
|
||||
Tryb Moshiera (`FLG_MOSEPH`) — bez plików efemeryd, zero konfiguracji.
|
||||
|
||||
## Build obrazu
|
||||
```bash
|
||||
docker compose --profile comparison build engine-swisseph
|
||||
```
|
||||
Dockerfile jest **wieloetapowy** i to nie jest ozdobnik: `pyswisseph` to rozszerzenie
|
||||
C, a na PyPI (2.10.3.2) gotowe wheels kończą się na **cp311** i obejmują wyłącznie
|
||||
**i686/x86_64**. Dla Pythona 3.12 oraz dla arm64 pip musi kompilować ze źródeł, więc
|
||||
sam `python:3.12-slim` (bez kompilatora) build wywracał. Kompilacja idzie w etapie
|
||||
`builder` (`build-essential`), a do obrazu finalnego trafia już tylko gotowy wheel —
|
||||
runtime zostaje czysty i mały. Pierwszy build trwa ~1–2 min, kolejne idą z cache warstw.
|
||||
|
||||
Build kończy się sanity-checkiem (`import swisseph`), żeby niedziałający silnik
|
||||
wykrzaczył build, a nie dopiero pierwszy request.
|
||||
|
||||
## Uruchomienie (tylko profil porównawczy / dev / CI)
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
pip install -r requirements.txt # wymaga kompilatora C (patrz wyżej)
|
||||
uvicorn app.main:app --port 8003
|
||||
```
|
||||
Następnie w warstwie logicznej ustaw `ENGINE_SWISSEPH_URL=http://localhost:8003`,
|
||||
|
||||
Reference in New Issue
Block a user