-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.prod.yml
More file actions
118 lines (111 loc) · 3.22 KB
/
Copy pathdocker-compose.prod.yml
File metadata and controls
118 lines (111 loc) · 3.22 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
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-finima}
volumes:
- pgdata_prod:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
ollama:
image: ollama/ollama:latest
volumes:
- ollama_models_prod:/root/.ollama
restart: unless-stopped
minio:
image: minio/minio:latest
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
volumes:
- minio_data:/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 5s
retries: 3
restart: unless-stopped
backend:
image: ghcr.io/pacphi/finima-backend:latest
environment:
APP_ENV: production
APP__DATABASE__HOST: postgres
APP__DATABASE__PORT: 5432
APP__DATABASE__USER: ${POSTGRES_USER}
APP__DATABASE__PASSWORD: ${POSTGRES_PASSWORD}
APP__DATABASE__NAME: ${POSTGRES_DB:-finima}
APP__LLM__OLLAMA__URL: http://ollama:11434
APP__RESEND__API_KEY: ${RESEND_API_KEY}
APP__AUTH__JWT_SECRET: ${JWT_SECRET}
APP__S3__ENDPOINT_URL: http://minio:9000
APP__S3__REGION: ${S3_REGION:-us-east-1}
APP__S3__BUCKET: ${S3_BUCKET:-finima-uploads}
APP__S3__ACCESS_KEY_ID: ${MINIO_ROOT_USER}
APP__S3__SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD}
APP__S3__FORCE_PATH_STYLE: "true"
volumes:
- ./config:/app/config:ro
depends_on:
postgres:
condition: service_healthy
minio:
condition: service_healthy
restart: unless-stopped
backup:
image: postgres:17-bookworm
entrypoint: /bin/sh
command:
- "-c"
- >-
apt-get update && apt-get install -y curl &&
curl -fsSL https://dl.min.io/client/mc/release/linux-amd64/mc
-o /usr/local/bin/mc &&
chmod +x /usr/local/bin/mc &&
while true; do /scripts/backup.sh; sleep 86400; done
volumes:
- ./scripts:/scripts:ro
environment:
PGHOST: postgres
PGUSER: ${POSTGRES_USER}
PGPASSWORD: ${POSTGRES_PASSWORD}
PGDATABASE: ${POSTGRES_DB:-finima}
MINIO_ENDPOINT: http://minio:9000
MINIO_ACCESS_KEY: ${MINIO_ROOT_USER}
MINIO_SECRET_KEY: ${MINIO_ROOT_PASSWORD}
BACKUP_BUCKET: finima-backups
BACKUP_RETENTION_DAYS: ${BACKUP_RETENTION_DAYS:-30}
depends_on:
postgres:
condition: service_healthy
minio:
condition: service_healthy
restart: unless-stopped
frontend:
image: ghcr.io/pacphi/finima-frontend:latest
volumes:
- ./config/frontend-prod.yaml:/usr/share/nginx/html/config.yaml:ro
restart: unless-stopped
caddy:
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
depends_on:
- backend
- frontend
restart: unless-stopped
volumes:
pgdata_prod:
ollama_models_prod:
caddy_data:
minio_data: