services: data: build: ./services/data environment: DATA_PROVIDER: ${DATA_PROVIDER:-excel} EXCEL_DIR: /app/data_files CACHE_DIR: /app/.cache INDEXED_KEYS: name,id,symbol volumes: - ./services/data/data_files:/app/data_files - data_cache:/app/.cache # Bez `ports:` CELOWO. Ta usługa rozmawia wyłącznie po sieci wewnętrznej # compose, a opublikowana na hoście była osiągalna z pominięciem logowania # w prezentacji. Do diagnostyki: `docker compose exec` albo tymczasowe # `docker compose run --publish`. logic: build: ./services/logic environment: DATA_URL: http://data:8002 EPHEMERIS_ENGINE: own # silnik własny (permisywny) — domyślny # adres silnika B (AGPL) używany tylko w trybie porównawczym (profil comparison) ENGINE_SWISSEPH_URL: http://engine-swisseph:8003 depends_on: - data # Bez `ports:` CELOWO. Ta usługa rozmawia wyłącznie po sieci wewnętrznej # compose, a opublikowana na hoście była osiągalna z pominięciem logowania # w prezentacji. Do diagnostyki: `docker compose exec` albo tymczasowe # `docker compose run --publish`. # Silnik B (AGPL) — OPCJONALNY, izolowany. Startuje tylko z profilem "comparison": # docker compose --profile comparison up # Nie wchodzi do domyślnego (zamkniętego) produktu — patrz services/engine-swisseph/LICENSE. engine-swisseph: build: ./services/engine-swisseph profiles: ["comparison"] # Bez `ports:` CELOWO. Ta usługa rozmawia wyłącznie po sieci wewnętrznej # compose, a opublikowana na hoście była osiągalna z pominięciem logowania # w prezentacji. Do diagnostyki: `docker compose exec` albo tymczasowe # `docker compose run --publish`. presentation: build: ./services/presentation environment: LOGIC_URL: http://logic:8001 depends_on: - logic ports: - "8000:8000" volumes: data_cache: