Skip to content

Commit e2a226b

Browse files
committed
Update Group Container And Docker Workflow
1 parent 450a149 commit e2a226b

File tree

7 files changed

+342
-205
lines changed

7 files changed

+342
-205
lines changed

.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ DOCKERHUB_TOKEN=dckr_pat_jwDE4gMMqQZ7y3-e3dZFmsMDYKM
55
IMAGE_TAG=latest
66

77
#Postgresql
8+
PG_SUPER_PASSWORD=dinhanst2832004
89
IDENTITY_USERNAME=postgres_identity
910
IDENTITY_DB_PASSWORD=dinhanst2832004
1011
IDENTITY_DATABASE=identity_db
@@ -42,6 +43,7 @@ MINIO_ROOT_PASSWORD=dinhanst2832004
4243
ELASTIC_USERNAME=elasticsearch_search
4344
ELASTIC_PASSWORD=dinhanst2832004
4445
#Mongo
46+
MONGO_ROOT_PASSWORD=dinhanst2832004
4547
FILE_USERNAME=mongodb_file
4648
FILE_ROOT_PASSWORD=dinhanst2832004
4749
FILE_DATABASE=file_db

.github/workflows/deploy.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ jobs:
7979
mkdir -p deploy_bundle
8080
cp -v .env deploy_bundle/.env
8181
cp -v docker-compose.prod-infra.yml deploy_bundle/
82+
mkdir -p deploy_bundle/init
83+
cp -vr init/postgres deploy_bundle/init/postgres
84+
cp -vr init/mongo deploy_bundle/init/mongo
8285
cp -v docker-compose.prod-services.yml deploy_bundle/
8386
mkdir -p deploy_bundle/monitoring/grafana/provisioning
8487
cp -v monitoring/prometheus.yml deploy_bundle/monitoring/
@@ -179,6 +182,8 @@ jobs:
179182
test -f deploy_bundle/monitoring/prometheus.yml
180183
test -f deploy_bundle/monitoring/loki-config.yml
181184
test -f deploy_bundle/monitoring/promtail-config.yml
185+
test -d deploy_bundle/init/postgres
186+
test -d deploy_bundle/init/mongo
182187
183188
- name: Pre-clean monitoring paths on server
184189
uses: appleboy/[email protected]
@@ -191,6 +196,7 @@ jobs:
191196
set -euo pipefail
192197
DEPLOY_DIR='${{ steps.targetdir.outputs.DEPLOY_DIR_FINAL }}'
193198
mkdir -p "$DEPLOY_DIR/monitoring/grafana/provisioning"
199+
mkdir -p "$DEPLOY_DIR/init/postgres" "$DEPLOY_DIR/init/mongo"
194200
195201
# Nếu lỡ có THƯ MỤC trùng tên file, xóa đi
196202
for f in prometheus.yml loki-config.yml promtail-config.yml; do
@@ -207,7 +213,7 @@ jobs:
207213
username: ${{ secrets.SSH_USER }}
208214
key: ${{ secrets.SSH_PRIVATE_KEY }}
209215
port: ${{ secrets.SSH_PORT }}
210-
source: "deploy_bundle/.env,deploy_bundle/docker-compose.prod-infra.yml,deploy_bundle/docker-compose.prod-services.yml,deploy_bundle/deploy.sh,deploy_bundle/monitoring/**"
216+
source: "deploy_bundle/.env,deploy_bundle/docker-compose.prod-infra.yml,deploy_bundle/docker-compose.prod-services.yml,deploy_bundle/deploy.sh,deploy_bundle/monitoring/**,deploy_bundle/init/**"
211217
target: "${{ steps.targetdir.outputs.DEPLOY_DIR_FINAL }}"
212218
overwrite: true
213219
strip_components: 1

docker-compose.prod-infra.yml

Lines changed: 80 additions & 204 deletions
Original file line numberDiff line numberDiff line change
@@ -2,165 +2,76 @@ name: codecampus-infrastructures
22

33
services:
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

Comments
 (0)