1+ volumes :
2+ redis_data :
3+ driver : local
4+ kc_postgres_data : {}
5+
6+ networks :
7+ snaknet :
8+ driver : bridge
9+
110services :
11+
212 postgres :
313 image : pgvector/pgvector:pg17
414 container_name : ' postgresql'
5- networks :
6- - network
15+ networks : [snaknet]
716 ports :
817 - ' 5432:5432'
918 env_file :
1019 - .env
1120 volumes :
1221 - ./packages/database/initdb:/docker-entrypoint-initdb.d
1322 healthcheck :
14- test : ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} ']
23+ test : ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER}']
1524 interval : 10s
1625 timeout : 5s
1726 retries : 5
@@ -26,8 +35,7 @@ services:
2635 redis :
2736 image : redis:7-alpine
2837 container_name : ' snak_redis'
29- networks :
30- - network
38+ networks : [snaknet]
3139 ports :
3240 - ' 127.0.0.1:6379:6379'
3341 volumes :
@@ -42,13 +50,12 @@ services:
4250 retries : 5
4351 restart : unless-stopped
4452
45- server :
53+ snak-api :
4654 build :
4755 context : .
4856 dockerfile : packages/server/Dockerfile
49- container_name : ' snak_server'
50- networks :
51- - network
57+ container_name : ' snak-api'
58+ networks : [snaknet]
5259 ports :
5360 - ' 3002:3002'
5461 env_file :
@@ -60,10 +67,105 @@ services:
6067 condition : service_healthy
6168 restart : on-failure
6269
63- volumes :
64- redis_data :
65- driver : local
70+ traefik :
71+ image : traefik:v3.1
72+ container_name : traefik
73+ restart : always
74+ command :
75+ - --entrypoints.websecure.address=:443
76+ - --providers.file.directory=/etc/traefik/dynamic
77+ - --api.dashboard=true
78+ - --log.level="DEBUG"
79+ ports :
80+ - " 443:443"
81+ - " 8081:8080" # dashboard
82+ volumes :
83+ - ./keycloak/traefik/dynamic.yml:/etc/traefik/dynamic/dynamic.yml:ro
84+ - ./keycloak/traefik/certs:/certs:ro
85+ networks : [snaknet]
86+
87+ kc_postgres :
88+ image : postgres:15
89+ container_name : kc_postgres
90+ restart : always
91+ env_file :
92+ - keycloak/.env.keycloak
93+ healthcheck :
94+ test : ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
95+ interval : 5s
96+ timeout : 3s
97+ retries : 30
98+ volumes :
99+ - kc_postgres_data:/var/lib/postgresql/data
100+ networks : [snaknet]
101+
102+ keycloak :
103+ image : quay.io/keycloak/keycloak:26.0.2
104+ container_name : keycloak
105+ command : ["start", "--import-realm"]
106+ restart : always
107+ depends_on :
108+ kc_postgres :
109+ condition : service_healthy
110+ volumes :
111+ - ./keycloak/realm.json:/opt/keycloak/data/import/realm.json:ro
112+ env_file :
113+ - keycloak/.env.keycloak
114+ networks : [snaknet]
115+ ports :
116+ - " 8080:8080"
117+ - " 9000:9000"
118+
119+ oauth2-proxy :
120+ image : quay.io/oauth2-proxy/oauth2-proxy:v7.6.0
121+ container_name : oauth2_proxy
122+ restart : always
123+ depends_on :
124+ - keycloak
125+ env_file :
126+ - keycloak/.env.keycloak
127+ networks : [snaknet]
128+ ports :
129+ - " 4180:4180"
130+ - " 44180:44180"
131+
132+ # snak-frontend:
133+ # build:
134+ # context: ../snak-app/frontend
135+ # dockerfile: Dockerfile
136+ # container_name: 'snak-frontend'
137+ # env_file:
138+ # - ../snak-app/frontend/.env
139+ # networks: [snaknet]
140+ # ports:
141+ # - '3000:3000'
142+
143+ # snak-bff:
144+ # build:
145+ # context: ../snak-app/backend
146+ # dockerfile: Dockerfile
147+ # container_name: 'snak-bff'
148+ # env_file:
149+ # - ../snak-app/backend/.env
150+ # networks: [snaknet]
151+ # ports:
152+ # - '3001:3001'
153+
154+ snak-frontend :
155+ image : ghcr.io/kasarlabs/snak-app/snak-frontend:latest
156+ container_name : ' snak-frontend'
157+ env_file :
158+ - .env.snak-frontend
159+ networks : [snaknet]
160+ ports :
161+ - ' 3000:3000'
162+
163+ snak-bff :
164+ image : ghcr.io/kasarlabs/snak-app/snak-bff:latest
165+ container_name : ' snak-bff'
166+ env_file :
167+ - .env.snak-bff
168+ networks : [snaknet]
169+ ports :
170+ - ' 3001:3001'
66171
67- networks :
68- network :
69- driver : bridge
0 commit comments