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 ports: - "8002:8002" 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 ports: - "8001:8001" # 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"] ports: - "8003:8003" presentation: build: ./services/presentation environment: LOGIC_URL: http://logic:8001 depends_on: - logic ports: - "8000:8000" volumes: data_cache: