@@ -2,165 +2,76 @@ name: codecampus-infrastructures
22
33services :
44 # ---------- PostgreSQL ----------
5- identity-db :
5+ postgres :
66 image : bitnami/postgresql:latest
7- container_name : identity-db
7+ container_name : postgres
88 restart : unless-stopped
99 environment :
10- - POSTGRESQL_USERNAME=${IDENTITY_USERNAME}
11- - POSTGRESQL_PASSWORD=${IDENTITY_DB_PASSWORD}
12- - POSTGRESQL_DATABASE=${IDENTITY_DATABASE}
13- - POSTGRESQL_POSTGRES_PASSWORD=${IDENTITY_DB_PASSWORD}
14- ports :
15- - " 5431:5432"
16- volumes :
17- - identity_pg_data:/bitnami/postgresql
18- healthcheck :
19- test : [ "CMD-SHELL","pg_isready -U postgres" ]
20- interval : 10s
21- timeout : 5s
22- retries : 5
23- networks : [ backend ]
10+ # Superuser duy nhất cho cluster
11+ - POSTGRESQL_POSTGRES_PASSWORD=${PG_SUPER_PASSWORD}
12+ - POSTGRESQL_PASSWORD=${PG_SUPER_PASSWORD}
2413
25- quiz-db :
26- image : bitnami/postgresql:latest
27- container_name : quiz-db
28- restart : unless-stopped
29- environment :
30- - POSTGRESQL_USERNAME=${QUIZ_USERNAME}
31- - POSTGRESQL_PASSWORD=${QUIZ_DB_PASSWORD}
32- - POSTGRESQL_DATABASE=${QUIZ_DATABASE}
33- - POSTGRESQL_POSTGRES_PASSWORD=${QUIZ_DB_PASSWORD}
34- ports :
35- - " 5433:5432"
36- volumes :
37- - quiz_pg_data:/bitnami/postgresql
38- healthcheck :
39- test : [ "CMD-SHELL","pg_isready -U postgres" ]
40- interval : 10s
41- timeout : 5s
42- retries : 5
43- networks : [ backend ]
14+ # Khai báo biến cho các app (script init sẽ đọc để tạo role/database)
15+ - IDENTITY_USERNAME=${IDENTITY_USERNAME}
16+ - IDENTITY_DB_PASSWORD=${IDENTITY_DB_PASSWORD}
17+ - IDENTITY_DATABASE=${IDENTITY_DATABASE}
4418
45- submission-db :
46- image : bitnami/postgresql:latest
47- container_name : submission-db
48- restart : unless-stopped
49- environment :
50- - POSTGRESQL_USERNAME=${SUBMISSION_USERNAME}
51- - POSTGRESQL_PASSWORD=${SUBMISSION_DB_PASSWORD}
52- - POSTGRESQL_DATABASE=${SUBMISSION_DATABASE}
53- - POSTGRESQL_POSTGRES_PASSWORD=${SUBMISSION_DB_PASSWORD}
54- ports :
55- - " 5434:5432"
56- volumes :
57- - submission_pg_data:/bitnami/postgresql
58- healthcheck :
59- test : [ "CMD-SHELL","pg_isready -U postgres" ]
60- interval : 10s
61- timeout : 5s
62- retries : 5
63- networks : [ backend ]
19+ - QUIZ_USERNAME=${QUIZ_USERNAME}
20+ - QUIZ_DB_PASSWORD=${QUIZ_DB_PASSWORD}
21+ - QUIZ_DATABASE=${QUIZ_DATABASE}
6422
65- coding-db :
66- image : bitnami/postgresql:latest
67- container_name : coding-db
68- restart : unless-stopped
69- environment :
70- - POSTGRESQL_USERNAME=${CODING_USERNAME}
71- - POSTGRESQL_PASSWORD=${CODING_DB_PASSWORD}
72- - POSTGRESQL_DATABASE=${CODING_DATABASE}
73- - POSTGRESQL_POSTGRES_PASSWORD=${CODING_DB_PASSWORD}
74- ports :
75- - " 5435:5432"
76- volumes :
77- - coding_pg_data:/bitnami/postgresql
78- healthcheck :
79- test : [ "CMD-SHELL","pg_isready -U postgres" ]
80- interval : 10s
81- timeout : 5s
82- retries : 5
83- networks : [ backend ]
23+ - SUBMISSION_USERNAME=${SUBMISSION_USERNAME}
24+ - SUBMISSION_DB_PASSWORD=${SUBMISSION_DB_PASSWORD}
25+ - SUBMISSION_DATABASE=${SUBMISSION_DATABASE}
8426
85- ai-db :
86- image : bitnami/postgresql:latest
87- container_name : ai-db
88- restart : unless-stopped
89- environment :
90- - POSTGRESQL_USERNAME=${AI_USERNAME}
91- - POSTGRESQL_PASSWORD=${AI_DB_PASSWORD}
92- - POSTGRESQL_DATABASE=${AI_DATABASE}
93- - POSTGRESQL_POSTGRES_PASSWORD=${AI_DB_PASSWORD}
94- ports :
95- - " 5436:5432"
96- volumes :
97- - ai_pg_data:/bitnami/postgresql
98- healthcheck :
99- test : [ "CMD-SHELL","pg_isready -U postgres" ]
100- interval : 10s
101- timeout : 5s
102- retries : 5
103- networks : [ backend ]
27+ - CODING_USERNAME=${CODING_USERNAME}
28+ - CODING_DB_PASSWORD=${CODING_DB_PASSWORD}
29+ - CODING_DATABASE=${CODING_DATABASE}
10430
105- post-db :
106- image : bitnami/postgresql:latest
107- container_name : post-db
108- restart : unless-stopped
109- environment :
110- - POSTGRESQL_USERNAME=${POST_USERNAME}
111- - POSTGRESQL_PASSWORD=${POST_DB_PASSWORD}
112- - POSTGRESQL_DATABASE=${POST_DATABASE}
113- - POSTGRESQL_POSTGRES_PASSWORD=${POST_DB_PASSWORD}
114- ports :
115- - " 5439:5432"
116- volumes :
117- - post_pg_data:/bitnami/postgresql
118- healthcheck :
119- test : [ "CMD-SHELL","pg_isready -U postgres" ]
120- interval : 10s
121- timeout : 5s
122- retries : 5
123- networks : [ backend ]
31+ - AI_USERNAME=${AI_USERNAME}
32+ - AI_DB_PASSWORD=${AI_DB_PASSWORD}
33+ - AI_DATABASE=${AI_DATABASE}
12434
125- payment-db :
126- image : bitnami/postgresql:latest
127- container_name : payment-db
128- restart : unless-stopped
129- environment :
130- - POSTGRESQL_USERNAME=${PAYMENT_USERNAME}
131- - POSTGRESQL_PASSWORD=${PAYMENT_DB_PASSWORD}
132- - POSTGRESQL_DATABASE=${PAYMENT_DATABASE}
133- - POSTGRESQL_POSTGRES_PASSWORD=${PAYMENT_DB_PASSWORD}
134- ports :
135- - " 5440:5432"
136- volumes :
137- - payment_pg_data:/bitnami/postgresql
138- healthcheck :
139- test : [ "CMD-SHELL","pg_isready -U postgres" ]
140- interval : 10s
141- timeout : 5s
142- retries : 5
143- networks : [ backend ]
35+ - POST_USERNAME=${POST_USERNAME}
36+ - POST_DB_PASSWORD=${POST_DB_PASSWORD}
37+ - POST_DATABASE=${POST_DATABASE}
14438
145- organization-db :
146- image : bitnami/postgresql:latest
147- container_name : organization-db
148- restart : unless-stopped
149- environment :
150- - POSTGRESQL_USERNAME=${ORGANIZATION_USERNAME}
151- - POSTGRESQL_PASSWORD=${ORGANIZATION_DB_PASSWORD}
152- - POSTGRESQL_DATABASE=${ORGANIZATION_DATABASE}
153- - POSTGRESQL_POSTGRES_PASSWORD=${ORGANIZATION_DB_PASSWORD}
39+ - PAYMENT_USERNAME=${PAYMENT_USERNAME}
40+ - PAYMENT_DB_PASSWORD=${PAYMENT_DB_PASSWORD}
41+ - PAYMENT_DATABASE=${PAYMENT_DATABASE}
42+
43+ - ORGANIZATION_USERNAME=${ORGANIZATION_USERNAME}
44+ - ORGANIZATION_DB_PASSWORD=${ORGANIZATION_DB_PASSWORD}
45+ - ORGANIZATION_DATABASE=${ORGANIZATION_DATABASE}
15446 ports :
47+ - " 5431:5432"
48+ - " 5433:5432"
49+ - " 5434:5432"
50+ - " 5435:5432"
51+ - " 5436:5432"
52+ - " 5439:5432"
53+ - " 5440:5432"
15554 - " 5441:5432"
15655 volumes :
157- - organization_pg_data:/bitnami/postgresql
56+ - pg_data:/bitnami/postgresql
57+ # Mount thư mục init để tạo các DB/user tương ứng
58+ - ./init/postgres:/docker-entrypoint-initdb.d:ro
15859 healthcheck :
159- test : [ "CMD-SHELL","pg_isready -U postgres" ]
60+ test : [ "CMD-SHELL", "pg_isready -U postgres" ]
16061 interval : 10s
16162 timeout : 5s
16263 retries : 5
163- networks : [ backend ]
64+ networks :
65+ backend :
66+ aliases :
67+ - identity-db
68+ - quiz-db
69+ - submission-db
70+ - coding-db
71+ - ai-db
72+ - post-db
73+ - payment-db
74+ - organization-db
16475
16576 # ---------- Kafka ----------
16677 kafka :
@@ -316,80 +227,43 @@ services:
316227 networks : [ backend ]
317228
318229 # ---------- MongoDB ----------
319- file-db :
230+ mongo :
320231 image : bitnami/mongodb:latest
321- container_name : file-db
232+ container_name : mongo
322233 restart : unless-stopped
323- ports :
324- - " 27017:27017"
325234 environment :
326- # Tài khoản quản trị
327- - MONGODB_ROOT_PASSWORD=${FILE_ROOT_PASSWORD}
328- # Tài khoản ứng dụng (tuỳ chọn – dùng khi bạn không muốn chạy bằng root)
329- - MONGODB_USERNAME=${FILE_USERNAME}
330- - MONGODB_PASSWORD=${FILE_PASSWORD}
331- - MONGODB_DATABASE=${FILE_DATABASE}
332- # Nếu chỉ chạy single‑node, KHÔNG khai báo replica‑set
333- # Muốn bật replica set: thêm MONGODB_REPLICA_SET_MODE=primary,...
334- volumes :
335- - file_mongo_data:/bitnami/mongodb
336- healthcheck :
337- test : [ "CMD-SHELL",
338- " mongo admin -u root -p $$FILE_ROOT_PASSWORD --eval 'db.adminCommand(\" ping\" )' || exit 1" ]
339- interval : 10s
340- timeout : 5s
341- retries : 5
342- networks : [ backend ]
235+ - MONGODB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
343236
344- notification-db :
345- image : bitnami/mongodb:latest
346- container_name : notification-db
347- restart : unless-stopped
348- ports :
349- - " 27018:27017"
350- environment :
351- # Tài khoản quản trị
352- - MONGODB_ROOT_PASSWORD=${NOTIFICATION_ROOT_PASSWORD}
353- # Tài khoản ứng dụng (tuỳ chọn – dùng khi bạn không muốn chạy bằng root)
354- - MONGODB_USERNAME=${NOTIFICATION_USERNAME}
355- - MONGODB_PASSWORD=${NOTIFICATION_PASSWORD}
356- - MONGODB_DATABASE=${NOTIFICATION_DATABASE}
357- # Nếu chỉ chạy single‑node, KHÔNG khai báo replica‑set
358- # Muốn bật replica set: thêm MONGODB_REPLICA_SET_MODE=primary,...
359- volumes :
360- - notification_mongo_data:/bitnami/mongodb
361- healthcheck :
362- test : [ "CMD-SHELL",
363- " mongo admin -u root -p $$NOTIFICATION_ROOT_PASSWORD --eval 'db.adminCommand(\" ping\" )' || exit 1" ]
364- interval : 10s
365- timeout : 5s
366- retries : 5
367- networks : [ backend ]
237+ # Biến cho từng app (script init sẽ dùng)
238+ - FILE_USERNAME=${FILE_USERNAME}
239+ - FILE_PASSWORD=${FILE_PASSWORD}
240+ - FILE_DATABASE=${FILE_DATABASE}
368241
369- chat-db :
370- image : bitnami/mongodb:latest
371- container_name : chat-db
372- restart : unless-stopped
242+ - NOTIFICATION_USERNAME=${NOTIFICATION_USERNAME}
243+ - NOTIFICATION_PASSWORD=${NOTIFICATION_PASSWORD}
244+ - NOTIFICATION_DATABASE=${NOTIFICATION_DATABASE}
245+
246+ - CHAT_USERNAME=${CHAT_USERNAME}
247+ - CHAT_PASSWORD=${CHAT_PASSWORD}
248+ - CHAT_DATABASE=${CHAT_DATABASE}
373249 ports :
250+ - " 27017:27017"
251+ - " 27018:27017"
374252 - " 27019:27017"
375- environment :
376- # Tài khoản quản trị
377- - MONGODB_ROOT_PASSWORD=${CHAT_ROOT_PASSWORD}
378- # Tài khoản ứng dụng (tuỳ chọn – dùng khi bạn không muốn chạy bằng root)
379- - MONGODB_USERNAME=${CHAT_USERNAME}
380- - MONGODB_PASSWORD=${CHAT_PASSWORD}
381- - MONGODB_DATABASE=${CHAT_DATABASE}
382- # Nếu chỉ chạy single‑node, KHÔNG khai báo replica‑set
383- # Muốn bật replica set: thêm MONGODB_REPLICA_SET_MODE=primary,...
384253 volumes :
385- - chat_mongo_data:/bitnami/mongodb
254+ - mongo_data:/bitnami/mongodb
255+ - ./init/mongo:/docker-entrypoint-initdb.d:ro
386256 healthcheck :
387- test : [ "CMD-SHELL",
388- " mongo admin -u root -p $$CHAT_ROOT_PASSWORD --eval 'db.adminCommand(\" ping\" )' || exit 1" ]
257+ test : [ "CMD-SHELL", "mongo admin -u root -p $${MONGODB_ROOT_PASSWORD} --eval 'db.adminCommand(\"ping\")' || exit 1" ]
389258 interval : 10s
390259 timeout : 5s
391260 retries : 5
392- networks : [ backend ]
261+ networks :
262+ backend :
263+ aliases :
264+ - file-db
265+ - notification-db
266+ - chat-db
393267
394268 # ---------- Monitoring: Metrics (Prometheus/Grafana) ----------
395269 prometheus :
@@ -500,4 +374,6 @@ volumes:
500374 file_mongo_data :
501375 notification_mongo_data :
502376 chat_mongo_data :
377+ pg_data :
378+ mongo_data :
503379
0 commit comments