- Finnhub: Add missing /test endpoint - AlphaVantage: Fix test endpoint deserialization (handle null api_url) - Mock Provider: Add /test endpoint and fix Zodios validation error by adding Mock enum - Deployment: Remove Mock Provider from production deployment script - Infrastructure: Add production Dockerfiles and compose configs
231 lines
6.4 KiB
YAML
231 lines
6.4 KiB
YAML
services:
|
|
postgres-db:
|
|
image: timescale/timescaledb:2.15.2-pg16
|
|
container_name: fundamental-postgres
|
|
command: -c shared_preload_libraries=timescaledb
|
|
environment:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres
|
|
POSTGRES_DB: fundamental
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres -d fundamental"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
nats:
|
|
image: nats:2.9
|
|
container_name: fundamental-nats
|
|
volumes:
|
|
- nats_data:/data
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
data-persistence-service:
|
|
image: harbor.3prism.ai/fundamental_analysis/data-persistence-service:latest
|
|
container_name: data-persistence-service
|
|
environment:
|
|
HOST: 0.0.0.0
|
|
PORT: 3000
|
|
DATABASE_URL: postgresql://postgres:postgres@postgres-db:5432/fundamental
|
|
RUST_LOG: info
|
|
RUST_BACKTRACE: "1"
|
|
SKIP_MIGRATIONS_ON_MISMATCH: "1"
|
|
depends_on:
|
|
postgres-db:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -fsS http://localhost:3000/health >/dev/null || exit 1"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
api-gateway:
|
|
image: harbor.3prism.ai/fundamental_analysis/api-gateway:latest
|
|
container_name: api-gateway
|
|
environment:
|
|
SERVER_PORT: 4000
|
|
NATS_ADDR: nats://nats:4222
|
|
DATA_PERSISTENCE_SERVICE_URL: http://data-persistence-service:3000
|
|
REPORT_GENERATOR_SERVICE_URL: http://report-generator-service:8004
|
|
RUST_LOG: info,axum=info
|
|
RUST_BACKTRACE: "1"
|
|
depends_on:
|
|
nats:
|
|
condition: service_started
|
|
data-persistence-service:
|
|
condition: service_healthy
|
|
networks:
|
|
- app-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -fsS http://localhost:4000/health >/dev/null || exit 1"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: always
|
|
|
|
alphavantage-provider-service:
|
|
image: harbor.3prism.ai/fundamental_analysis/alphavantage-provider-service:latest
|
|
container_name: alphavantage-provider-service
|
|
volumes:
|
|
- workflow_data:/mnt/workflow_data
|
|
environment:
|
|
SERVER_PORT: 8000
|
|
NATS_ADDR: nats://nats:4222
|
|
DATA_PERSISTENCE_SERVICE_URL: http://data-persistence-service:3000
|
|
API_GATEWAY_URL: http://api-gateway:4000
|
|
WORKFLOW_DATA_PATH: /mnt/workflow_data
|
|
SERVICE_HOST: alphavantage-provider-service
|
|
RUST_LOG: info
|
|
RUST_BACKTRACE: "1"
|
|
depends_on:
|
|
- nats
|
|
- data-persistence-service
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
tushare-provider-service:
|
|
image: harbor.3prism.ai/fundamental_analysis/tushare-provider-service:latest
|
|
container_name: tushare-provider-service
|
|
volumes:
|
|
- workflow_data:/mnt/workflow_data
|
|
environment:
|
|
SERVER_PORT: 8001
|
|
NATS_ADDR: nats://nats:4222
|
|
DATA_PERSISTENCE_SERVICE_URL: http://data-persistence-service:3000
|
|
TUSHARE_API_URL: http://api.waditu.com
|
|
API_GATEWAY_URL: http://api-gateway:4000
|
|
WORKFLOW_DATA_PATH: /mnt/workflow_data
|
|
SERVICE_HOST: tushare-provider-service
|
|
RUST_LOG: info
|
|
RUST_BACKTRACE: "1"
|
|
depends_on:
|
|
- nats
|
|
- data-persistence-service
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
finnhub-provider-service:
|
|
image: harbor.3prism.ai/fundamental_analysis/finnhub-provider-service:latest
|
|
container_name: finnhub-provider-service
|
|
volumes:
|
|
- workflow_data:/mnt/workflow_data
|
|
environment:
|
|
SERVER_PORT: 8002
|
|
NATS_ADDR: nats://nats:4222
|
|
DATA_PERSISTENCE_SERVICE_URL: http://data-persistence-service:3000
|
|
FINNHUB_API_URL: https://finnhub.io/api/v1
|
|
API_GATEWAY_URL: http://api-gateway:4000
|
|
WORKFLOW_DATA_PATH: /mnt/workflow_data
|
|
SERVICE_HOST: finnhub-provider-service
|
|
RUST_LOG: info
|
|
RUST_BACKTRACE: "1"
|
|
depends_on:
|
|
- nats
|
|
- data-persistence-service
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
yfinance-provider-service:
|
|
image: harbor.3prism.ai/fundamental_analysis/yfinance-provider-service:latest
|
|
container_name: yfinance-provider-service
|
|
volumes:
|
|
- workflow_data:/mnt/workflow_data
|
|
environment:
|
|
SERVER_PORT: 8003
|
|
NATS_ADDR: nats://nats:4222
|
|
DATA_PERSISTENCE_SERVICE_URL: http://data-persistence-service:3000
|
|
API_GATEWAY_URL: http://api-gateway:4000
|
|
WORKFLOW_DATA_PATH: /mnt/workflow_data
|
|
SERVICE_HOST: yfinance-provider-service
|
|
RUST_LOG: info
|
|
RUST_BACKTRACE: "1"
|
|
depends_on:
|
|
- nats
|
|
- data-persistence-service
|
|
networks:
|
|
- app-network
|
|
dns:
|
|
- 8.8.8.8
|
|
- 8.8.4.4
|
|
restart: always
|
|
|
|
report-generator-service:
|
|
image: harbor.3prism.ai/fundamental_analysis/report-generator-service:latest
|
|
container_name: report-generator-service
|
|
volumes:
|
|
- workflow_data:/mnt/workflow_data
|
|
environment:
|
|
SERVER_PORT: 8004
|
|
NATS_ADDR: nats://nats:4222
|
|
DATA_PERSISTENCE_SERVICE_URL: http://data-persistence-service:3000
|
|
GOTENBERG_URL: http://gotenberg:3000
|
|
WORKFLOW_DATA_PATH: /mnt/workflow_data
|
|
RUST_LOG: info
|
|
RUST_BACKTRACE: "1"
|
|
depends_on:
|
|
- nats
|
|
- data-persistence-service
|
|
- gotenberg
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
workflow-orchestrator-service:
|
|
image: harbor.3prism.ai/fundamental_analysis/workflow-orchestrator-service:latest
|
|
container_name: workflow-orchestrator-service
|
|
volumes:
|
|
- workflow_data:/mnt/workflow_data
|
|
environment:
|
|
SERVER_PORT: 8005
|
|
NATS_ADDR: nats://nats:4222
|
|
DATA_PERSISTENCE_SERVICE_URL: http://data-persistence-service:3000
|
|
WORKFLOW_DATA_PATH: /mnt/workflow_data
|
|
RUST_LOG: info
|
|
RUST_BACKTRACE: "1"
|
|
depends_on:
|
|
- nats
|
|
- data-persistence-service
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
gotenberg:
|
|
image: gotenberg/gotenberg:8
|
|
container_name: gotenberg
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
frontend:
|
|
image: harbor.3prism.ai/fundamental_analysis/frontend:latest
|
|
container_name: fundamental-frontend
|
|
ports:
|
|
- "28080:80" # Map host 28080 to container 80 (Nginx)
|
|
depends_on:
|
|
api-gateway:
|
|
condition: service_healthy
|
|
networks:
|
|
- app-network
|
|
restart: always
|
|
|
|
volumes:
|
|
workflow_data:
|
|
pgdata:
|
|
nats_data:
|
|
|
|
networks:
|
|
app-network:
|