-
Notifications
You must be signed in to change notification settings - Fork 317
Expand file tree
/
Copy pathcompose.local.yml
More file actions
143 lines (137 loc) · 3.58 KB
/
compose.local.yml
File metadata and controls
143 lines (137 loc) · 3.58 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
139
140
141
142
143
services:
db:
image: 'postgres:17-alpine'
restart: always
healthcheck:
interval: 10s
retries: 10
test: ['CMD-SHELL', 'pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}']
timeout: 45s
environment:
POSTGRES_DB: ${DATABASE_SCHEMA}
POSTGRES_USER: ${DATABASE_USER}
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
ports:
- '5432:5432'
volumes:
- './pg.sql:/docker-entrypoint-initdb.d/pg.sql'
keycloak-db:
image: 'postgres:17-alpine'
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
healthcheck:
interval: 10s
retries: 10
test: ['CMD-SHELL', 'pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}']
timeout: 45s
restart: on-failure
keycloak:
image: 'quay.io/keycloak/keycloak:26.1.2'
volumes:
- './keycloak/imports/realm-export.json:/opt/keycloak/data/import/realm-export.json'
command: start-dev --import-realm
ports:
- '8080:8080'
environment:
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://keycloak-db:5432/keycloak
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: password
KC_HOSTNAME_STRICT: false
KC_HOSTNAME_STRICT_HTTPS: false
KC_BOOTSTRAP_ADMIN_USERNAME: admin
KC_BOOTSTRAP_ADMIN_PASSWORD: Pa55w0rd
KC_HEALTH_ENABLED: true
healthcheck:
test:
[
'CMD-SHELL',
"exec 3<>/dev/tcp/keycloak/9000;echo -e \"GET /health/ready HTTP/1.1\r\nhost: keycloak:9000\r\nConnection: close\r\n\r\n\" >&3;grep \"HTTP/1.1 200 OK\" <&3"
]
timeout: 10s
interval: 30s
retries: 3
start_period: 5s
depends_on:
keycloak-db:
condition: service_healthy
nodejs:
build:
context: '.'
dockerfile: Dockerfile
restart: always
healthcheck:
interval: 5s
retries: 10
test: ['CMD', 'wget', '--spider', '-q', 'http://nodejs:3000/api/config']
timeout: 30s
environment:
URL: http://localhost:3000
GRPC_WEB_PROXY_URL: ${GRPC_WEB_PROXY_URL}
CHAT_API_URL: ${CHAT_API_URL}
CHAT_API_MODEL: ${CHAT_API_MODEL}
CHAT_API_TOKEN: ${CHAT_API_TOKEN}
CHAT_API_MAX_TOKENS: ${CHAT_API_MAX_TOKENS}
ports:
- '3000:3000'
- '5000:5000'
logging:
options:
max-file: '5'
max-size: '10m'
depends_on:
db:
condition: service_healthy
mailcatcher:
condition: service_healthy
keycloak:
condition: service_healthy
ollama:
condition: service_healthy
grpcwebproxy:
image: webis/grpcwebproxy:0.14.0
command:
- grpcwebproxy
- '--backend_addr=host.docker.gateway:5000'
- '--run_tls_server=false'
- '--run_http_server=true'
- '--server_http_debug_port=8081'
- '--allow_all_origins'
extra_hosts:
- 'host.docker.gateway:host-gateway'
ports:
- '8081:8081'
depends_on:
- nodejs
mailcatcher:
image: 'sj26/mailcatcher'
healthcheck:
interval: 10s
retries: 10
test: ['CMD', 'wget', '--spider', '-q', 'http://mailcatcher:1080']
timeout: 45s
restart: always
ports:
- '1080:1080'
- '1025:1025'
logging:
options:
max-file: '5'
max-size: '10m'
ollama:
image: 'brightsec/brokencrystals-ollama:smollm135m'
restart: always
healthcheck:
interval: 30s
retries: 5
test: ['CMD', 'ollama', 'list']
timeout: 10s
start_period: 60s
ports:
- '11434:11434'
logging:
options:
max-file: '5'
max-size: '10m'