-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
109 lines (102 loc) · 3.49 KB
/
Copy pathdocker-compose.yml
File metadata and controls
109 lines (102 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
version: "3.9"
x-app-env: &app-env
APP_ENV: ${APP_ENV:-container}
LOG_LEVEL: ${LOG_LEVEL:-INFO}
SECRET_KEY: ${SECRET_KEY:?set SECRET_KEY in .env (openssl rand -hex 32)}
API_V1_PREFIX: ${API_V1_PREFIX:-/api/v1}
CORS_ORIGINS: ${CORS_ORIGINS:-["http://localhost:3000","http://localhost:8050","http://localhost:8000"]}
DATABASE_URL: postgresql://${POSTGRES_USER:-trademeup_user}:${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}@postgres:5432/${POSTGRES_DB:-trademeup}
REDIS_URL: ${REDIS_URL:-redis://localhost:6379/0}
LLM_PROVIDER: ${LLM_PROVIDER:-ollama}
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
OLLAMA_MODEL: ${OLLAMA_MODEL:-llama2}
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
OPENAI_MODEL: ${OPENAI_MODEL:-gpt-4o-mini}
OPENAI_BASE_URL: ${OPENAI_BASE_URL:-}
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
ANTHROPIC_MODEL: ${ANTHROPIC_MODEL:-claude-3-haiku-20240307}
NEWS_API_KEY: ${NEWS_API_KEY:-}
ALPHA_VANTAGE_KEY: ${ALPHA_VANTAGE_KEY:-}
MODEL_PATH: ${MODEL_PATH:-./models}
DEFAULT_TEMPERATURE: ${DEFAULT_TEMPERATURE:-0.1}
MAX_TOKENS: ${MAX_TOKENS:-4096}
ENABLE_FACT_CHECKING: ${ENABLE_FACT_CHECKING:-true}
ENABLE_CALIBRATION: ${ENABLE_CALIBRATION:-true}
ENABLE_META_STRATEGY: ${ENABLE_META_STRATEGY:-true}
ENABLE_SCENARIOS: ${ENABLE_SCENARIOS:-true}
MIN_PREDICTION_IMPACT_THRESHOLD: ${MIN_PREDICTION_IMPACT_THRESHOLD:-0.4}
DASH_DEBUG: ${DASH_DEBUG:-false}
# Inside the container the app must listen on all interfaces so Docker can
# map the port; exposure is controlled by BIND_HOST on the host side below.
DASH_HOST: 0.0.0.0
x-app-common: &app-common
build:
context: .
dockerfile: Dockerfile
environment:
<<: *app-env
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./logs:/app/logs
- ./models:/app/models
restart: unless-stopped
services:
postgres:
image: pgvector/pgvector:pg18
container_name: trademeup_postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-trademeup_user}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
POSTGRES_DB: ${POSTGRES_DB:-trademeup}
ports:
# Loopback only: the database must not be reachable from the network.
- "127.0.0.1:5432:5432"
volumes:
- postgres_data:/var/lib/postgresql
- ./migrations/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U trademeup_user -d trademeup"]
interval: 10s
timeout: 5s
retries: 10
restart: unless-stopped
api:
<<: *app-common
container_name: trademeup_api
command: ["/app/scripts/docker/entrypoint.sh", "api"]
depends_on:
postgres:
condition: service_healthy
ports:
- "${BIND_HOST:-127.0.0.1}:8000:8000"
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8000/health >/dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 12
gui:
<<: *app-common
container_name: trademeup_gui
command: ["/app/scripts/docker/entrypoint.sh", "gui"]
depends_on:
postgres:
condition: service_healthy
api:
condition: service_healthy
ports:
- "${BIND_HOST:-127.0.0.1}:8050:8050"
worker:
<<: *app-common
container_name: trademeup_worker
command: ["/app/scripts/docker/entrypoint.sh", "worker"]
depends_on:
postgres:
condition: service_healthy
api:
condition: service_healthy
profiles:
- worker
volumes:
postgres_data:
driver: local