1+ version : ' 3.8'
2+
13services :
4+ # ------------------------------------
5+ # CORE INFRA
6+ # ------------------------------------
27 postgres :
38 image : postgres:15
49 container_name : postgres
510 environment :
6- POSTGRES_USER : postgres
7- POSTGRES_PASSWORD : postgres
8- POSTGRES_DB : sabhyatam
11+ POSTGRES_USER : ${POSTGRES_USER}
12+ POSTGRES_PASSWORD : ${POSTGRES_PASSWORD}
13+ POSTGRES_DB : ${POSTGRES_DB}
914 volumes :
1015 - pgdata:/var/lib/postgresql/data
1116 ports :
12- - " 5432:5432"
17+ - " ${DB_PORT}:5432"
18+ networks :
19+ - app-network
1320 healthcheck :
14- test : ["CMD-SHELL", "pg_isready -U postgres -d sabhyatam "]
21+ test : ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB} "]
1522 interval : 3s
1623 timeout : 5s
1724 retries : 10
@@ -21,7 +28,12 @@ services:
2128 container_name : redis
2229 ports :
2330 - " 6380:6379"
31+ networks :
32+ - app-network
2433
34+ # ------------------------------------
35+ # PRODUCT MIGRATION + SEED
36+ # ------------------------------------
2537 product-migrate :
2638 build :
2739 context : ./services/product
@@ -30,62 +42,120 @@ services:
3042 postgres :
3143 condition : service_healthy
3244 environment :
33- DATABASE_URL : postgres://postgres:postgres@postgres:5432/sabhyatam?sslmode=disable
45+ DATABASE_URL : ${DATABASE_URL}
46+ networks :
47+ - app-network
3448 restart : " no"
3549
36- product-seed :
37- build :
38- context : ./services/product
39- dockerfile : Dockerfile.seed
40- depends_on :
41- product-migrate :
42- condition : service_completed_successfully
43- environment :
44- DB : postgres://postgres:postgres@postgres:5432/sabhyatam?sslmode=disable
45- command : ["node", "import_seed.js"]
46- restart : " no"
4750
51+ # ------------------------------------
52+ # ORDERS MIGRATION
53+ # ------------------------------------
4854 orders-migrate :
4955 image : postgres:15
5056 depends_on :
5157 postgres :
5258 condition : service_healthy
5359 volumes :
5460 - ./services/orders/migration:/migrations
61+ networks :
62+ - app-network
5563 entrypoint : >
5664 sh -c "
57- until pg_isready -h postgres -p 5432 -U postgres; do sleep 1; done &&
58- psql postgres://postgres:postgres@postgres:5432/sabhyatam?sslmode=disable
59- -f /migrations/001_create_orders.sql
65+ until pg_isready -h postgres -p 5432 -U ${POSTGRES_USER}; do sleep 1; done &&
66+ psql ${DATABASE_URL} -f /migrations/001_create_orders.sql
6067 "
6168 restart : " no"
6269
70+ # ------------------------------------
71+ # PAYMENTS MIGRATION
72+ # ------------------------------------
6373 payments-migrate :
6474 image : postgres:15
6575 depends_on :
6676 postgres :
6777 condition : service_healthy
6878 volumes :
6979 - ./services/payments/migration:/migrations
80+ networks :
81+ - app-network
7082 entrypoint : >
7183 sh -c "
72- until pg_isready -h postgres -p 5432 -U postgres; do sleep 1; done &&
73- psql postgres://postgres:postgres@postgres:5432/sabhyatam?sslmode=disable
74- -f /migrations/001_create_payments.sql
84+ until pg_isready -h postgres -p 5432 -U ${POSTGRES_USER}; do sleep 1; done &&
85+ psql ${DATABASE_URL} -f /migrations/001_create_payments.sql
7586 "
7687 restart : " no"
7788
89+ # ------------------------------------
90+ # AUTH DATABASE
91+ # ------------------------------------
92+ auth-db :
93+ image : postgres:15-alpine
94+ container_name : auth-db
95+ environment :
96+ POSTGRES_USER : ${AUTH_DB_USER}
97+ POSTGRES_PASSWORD : ${AUTH_DB_PASSWORD}
98+ POSTGRES_DB : ${AUTH_DB_NAME}
99+ volumes :
100+ - auth_pg_data:/var/lib/postgresql/data
101+ networks :
102+ - app-network
103+ healthcheck :
104+ test : ["CMD-SHELL", "pg_isready -U ${AUTH_DB_USER} -d ${AUTH_DB_NAME}"]
105+ interval : 3s
106+ timeout : 5s
107+ retries : 10
78108
109+ # ------------------------------------
110+ # AUTH MIGRATION (NEW, CONSISTENT)
111+ # ------------------------------------
112+ auth-migrate :
113+ image : postgres:15
114+ depends_on :
115+ auth-db :
116+ condition : service_healthy
117+ volumes :
118+ - ./services/auth/internal/migrations:/migrations
119+ networks :
120+ - app-network
121+ entrypoint : >
122+ sh -c "
123+ until pg_isready -h auth-db -p 5432 -U ${AUTH_DB_USER}; do sleep 1; done &&
124+ psql ${AUTH_DATABASE_URL} -f /migrations/001_init_auth.sql
125+ "
126+ restart : " no"
127+
128+ # ------------------------------------
129+ # AUTH SERVICE
130+ # ------------------------------------
131+ auth :
132+ build :
133+ context : ./services/auth
134+ container_name : auth
135+ ports :
136+ - " ${PORT_AUTH}:8083"
137+ environment :
138+ PORT : 8083
139+ DATABASE_URL : ${AUTH_DATABASE_URL}
140+ JWT_SECRET : ${JWT_SECRET}
141+ depends_on :
142+ auth-migrate :
143+ condition : service_completed_successfully
144+ networks :
145+ - app-network
146+
147+ # ------------------------------------
148+ # CORE SERVICES
149+ # ------------------------------------
79150 product :
80151 build : ./services/product
81152 container_name : product
82- depends_on :
83- product-seed :
84- condition : service_completed_successfully
85153 env_file :
86154 - ./services/product/.env
87155 ports :
88- - " 8080:8080"
156+ - " ${PORT_PRODUCT}:8080"
157+ networks :
158+ - app-network
89159
90160 cart :
91161 build : ./services/cart
@@ -98,13 +168,17 @@ services:
98168 redis :
99169 condition : service_started
100170 ports :
101- - " 8081:8081"
171+ - " ${PORT_CART}:8081"
172+ networks :
173+ - app-network
102174
103175 orders :
104176 build : ./services/orders
105177 container_name : orders
106178 env_file :
107179 - ./services/orders/.env
180+ environment :
181+ INTERNAL_SERVICE_KEY : ${INTERNAL_SERVICE_KEY}
108182 depends_on :
109183 orders-migrate :
110184 condition : service_completed_successfully
@@ -113,9 +187,9 @@ services:
113187 cart :
114188 condition : service_started
115189 ports :
116- - " 8082 :8082"
117- environment :
118- - INTERNAL_SERVICE_KEY=sabhyatam-internal-2025
190+ - " ${PORT_ORDERS} :8082"
191+ networks :
192+ - app-network
119193
120194 payments :
121195 build : ./services/payments
@@ -126,13 +200,18 @@ services:
126200 orders :
127201 condition : service_started
128202 environment :
129- DATABASE_URL : postgres://postgres:postgres@postgres:5432/sabhyatam?sslmode=disable
130- INTERNAL_SERVICE_KEY : sabhyatam-internal-2025
203+ DATABASE_URL : ${DATABASE_URL}
204+ INTERNAL_SERVICE_KEY : ${INTERNAL_SERVICE_KEY}
131205 ORDERS_SVC_BASE : http://orders:8082
132206 ports :
133- - " 8083:8083 "
134-
135-
207+ - " ${PORT_PAYMENTS}:8084 "
208+ networks :
209+ - app-network
136210
137211volumes :
138212 pgdata :
213+ auth_pg_data :
214+
215+ networks :
216+ app-network :
217+ driver : bridge
0 commit comments