feat: dockerfiles and full docker-compose orchestration

Add multi-stage Dockerfiles for Python services (Dockerfile.service) and
React dashboard (Dockerfile.dashboard + nginx.conf). Update docker-compose.yml
with all seven application services: news-fetcher, sentiment-analyzer,
signal-generator, trade-executor, learning-engine, api-gateway, and dashboard.
This commit is contained in:
Viktor Barzin 2026-02-22 16:02:34 +00:00
parent e470055354
commit b255b3edbe
No known key found for this signature in database
GPG key ID: 0EB088298288D958
4 changed files with 250 additions and 0 deletions

View file

@ -1,4 +1,7 @@
services:
# ---------------------------------------------------------------------------
# Infrastructure
# ---------------------------------------------------------------------------
postgres:
image: timescale/timescaledb:latest-pg16
environment:
@ -34,6 +37,111 @@ services:
volumes:
- ollama_models:/root/.ollama
# ---------------------------------------------------------------------------
# Application services
# ---------------------------------------------------------------------------
news-fetcher:
build:
context: .
dockerfile: docker/Dockerfile.service
args:
EXTRAS: "news"
SERVICE_MODULE: "news_fetcher"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
env_file: .env
restart: unless-stopped
sentiment-analyzer:
build:
context: .
dockerfile: docker/Dockerfile.service
args:
EXTRAS: "sentiment"
SERVICE_MODULE: "sentiment_analyzer"
depends_on:
redis:
condition: service_healthy
ollama:
condition: service_started
env_file: .env
restart: unless-stopped
signal-generator:
build:
context: .
dockerfile: docker/Dockerfile.service
args:
EXTRAS: "trading"
SERVICE_MODULE: "signal_generator"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
env_file: .env
restart: unless-stopped
trade-executor:
build:
context: .
dockerfile: docker/Dockerfile.service
args:
EXTRAS: "trading"
SERVICE_MODULE: "trade_executor"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
env_file: .env
restart: unless-stopped
learning-engine:
build:
context: .
dockerfile: docker/Dockerfile.service
args:
EXTRAS: "trading"
SERVICE_MODULE: "learning_engine"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
env_file: .env
restart: unless-stopped
api-gateway:
build:
context: .
dockerfile: docker/Dockerfile.service
args:
EXTRAS: "api,trading,backtester"
SERVICE_MODULE: "api_gateway"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "8000:8000"
env_file: .env
restart: unless-stopped
dashboard:
build:
context: .
dockerfile: docker/Dockerfile.dashboard
depends_on:
- api-gateway
ports:
- "3000:80"
restart: unless-stopped
volumes:
pgdata:
redisdata: