feat(docker): deploy PORT06 portfolio runner via docker compose
Wire the Docker image and compose service for the capital-pool portfolio paper trader (src.portfolio.runner) instead of the single-leg multi_runner: - Dockerfile: copy full scripts/ (runner imports scripts.analysis.* and scripts.portfolios._defs via sleeves.py) and portfolios.yml. - docker-compose.yml: service "portfolio" / container pythagoras-portfolio, command override to src.portfolio.runner, mount portfolios.yml, healthcheck on data/portfolios/ status.json. - .gitignore: ignore portfolio runtime state (data/portfolio_paper, data/portfolios). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,3 +17,5 @@ data/processed/
|
||||
*.pth
|
||||
notebooks/.ipynb_checkpoints/
|
||||
data/paper_trades/
|
||||
data/portfolio_paper/
|
||||
data/portfolios/
|
||||
|
||||
+4
-2
@@ -8,9 +8,11 @@ COPY pyproject.toml uv.lock ./
|
||||
RUN uv sync --frozen --no-dev
|
||||
|
||||
COPY src/ src/
|
||||
COPY scripts/strategies/ scripts/strategies/
|
||||
COPY strategies.yml strategies.yml
|
||||
COPY scripts/ scripts/
|
||||
COPY strategies.yml portfolios.yml ./
|
||||
|
||||
VOLUME /app/data
|
||||
|
||||
# Default: paper trader multi-strategia. Il servizio "portfolio" in docker-compose
|
||||
# sovrascrive il command per il runner a portafoglio (src.portfolio.runner).
|
||||
CMD ["uv", "run", "python", "-m", "src.live.multi_runner"]
|
||||
|
||||
+5
-4
@@ -1,17 +1,18 @@
|
||||
services:
|
||||
paper-trader:
|
||||
portfolio:
|
||||
build: .
|
||||
container_name: pythagoras-multi
|
||||
container_name: pythagoras-portfolio
|
||||
restart: unless-stopped
|
||||
command: ["uv", "run", "python", "-m", "src.portfolio.runner"]
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
- ./strategies.yml:/app/strategies.yml:ro
|
||||
- ./portfolios.yml:/app/portfolios.yml:ro
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "-c", "import os; assert any(f.endswith('status.json') for r,d,fs in os.walk('/app/data/paper_trades') for f in fs)"]
|
||||
test: ["CMD", "python", "-c", "import os; assert any(f.endswith('status.json') for r,d,fs in os.walk('/app/data/portfolios') for f in fs)"]
|
||||
interval: 120s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
Reference in New Issue
Block a user