-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
138 lines (130 loc) · 3.13 KB
/
docker-compose.yml
File metadata and controls
138 lines (130 loc) · 3.13 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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
name: rustgenie
services:
# Database
db:
image: timescale/timescaledb-ha:pg17
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: rustgenie
ports:
- "5432:5432"
volumes:
- data:/home/postgres/pgdata/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
# Vector database support
vectorizer-worker:
image: timescale/pgai-vectorizer-worker:latest
environment:
PGAI_VECTORIZER_WORKER_DB_URL: postgres://postgres:postgres@db:5432/rustgenie
command: [ "--poll-interval", "5s", "--log-level", "DEBUG" ]
depends_on:
db:
condition: service_healthy
# Email testing
mailhog:
image: mailhog/mailhog:latest
ports:
- "1025:1025" # SMTP server
- "8025:8025" # Web UI
restart: unless-stopped
# AI services
ollama:
image: ollama/ollama:latest
volumes:
- ollama_data:/root/.ollama
ports:
- "11434:11434"
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
profiles: ["ai", "dev", "prod"]
# Pull and serve Gemma model
gemma-setup:
image: ollama/ollama:latest
volumes:
- ollama_data:/root/.ollama
depends_on:
- ollama
command: pull gemma:7b
restart: on-failure
profiles: ["ai", "dev", "prod"]
# Production services
app:
build:
context: .
dockerfile: app/Dockerfile
ports:
- "8000:8000"
environment:
DATABASE_URL: postgres://postgres:postgres@db:5432/rustgenie
SMTP_HOST: mailhog
SMTP_PORT: 1025
OLLAMA_API_URL: http://ollama:11434
OLLAMA_MODEL: gemma:7b
depends_on:
db:
condition: service_healthy
mailhog:
condition: service_started
ollama:
condition: service_started
restart: unless-stopped
profiles: ["prod"]
worker:
build:
context: .
dockerfile: worker/Dockerfile
environment:
DATABASE_URL: postgres://postgres:postgres@db:5432/rustgenie
SMTP_HOST: mailhog
SMTP_PORT: 1025
OLLAMA_API_URL: http://ollama:11434
OLLAMA_MODEL: gemma:7b
depends_on:
db:
condition: service_healthy
mailhog:
condition: service_started
ollama:
condition: service_started
restart: unless-stopped
profiles: ["prod"]
# Development environment with live reload
dev:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "8000:8000" # App server
- "3000:3000" # Vite dev server
environment:
DATABASE_URL: postgres://postgres:postgres@db:5432/rustgenie
SMTP_HOST: mailhog
SMTP_PORT: 1025
OLLAMA_API_URL: http://ollama:11434
OLLAMA_MODEL: gemma:7b
volumes:
- .:/app
depends_on:
db:
condition: service_healthy
mailhog:
condition: service_started
ollama:
condition: service_started
profiles: ["dev"]
tty: true
stdin_open: true
volumes:
data:
ollama_data: