-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdocker-compose.yml
149 lines (140 loc) · 3.87 KB
/
docker-compose.yml
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
144
145
146
147
148
149
services:
api_gateway:
build: ./api_gateway
container_name: api_gateway
ports:
- "8080:8080"
networks:
- my_network
environment:
PORT: 8080
USER_SERVICE_URI: user_service:50051
WASHSTATION_SERVICE_URI: wash_station_service:50052
JWT_SECRET: ${JWT_SECRET}
SERVICES_JWT_SECRET: ${SERVICES_JWT_SECRET}
user_service:
build: ./user_service
container_name: user_service
ports:
- "50051:50051"
networks:
- my_network
depends_on:
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
environment:
PORT: 50051
POSTGRES_URI: "user=${POSTGRES_USER} password=${POSTGRES_PASSWORD} host=postgres port=5432 dbname=${POSTGRES_DB} sslmode=disable TimeZone=Asia/Jakarta"
RABBITMQ_URL: amqp://${RABBITMQ_USER}:${RABBITMQ_PASS}@rabbitmq:5672
SERVICES_JWT_SECRET: ${SERVICES_JWT_SECRET}
email_service:
build: ./email_service
container_name: email_service
ports:
- "8081:8080"
networks:
- my_network
depends_on:
rabbitmq:
condition: service_healthy
environment:
MAILTRAP_API_TOKEN: ${MAILTRAP_API_TOKEN}
MAILTRAP_API_URL: ${MAILTRAP_API_URL}
RABBITMQ_URL: amqp://${RABBITMQ_USER}:${RABBITMQ_PASS}@rabbitmq:5672
VERIFICATION_URL: https://3ee9-103-18-34-211.ngrok-free.app/users/verify
wash_station_service:
build: ./wash_station_service
container_name: wash_station_service
ports:
- "50052:50052"
networks:
- my_network
depends_on:
postgres:
condition: service_healthy
environment:
PORT: 50052
SERVICES_JWT_SECRET: ${SERVICES_JWT_SECRET}
POSTGRES_URI: "user=${POSTGRES_USER} password=${POSTGRES_PASSWORD} host=postgres port=5432 dbname=${POSTGRES_DB} sslmode=disable TimeZone=Asia/Jakarta"
order_service:
build: ./order_service
container_name: order_service
ports:
- "50053:50053"
networks:
- my_network
depends_on:
mongo:
condition: service_healthy
rabbitmq:
condition: service_healthy
environment:
PORT: 50053
APP_FEE: ${APP_FEE}
USER_SERVICE_URI: user_service:50051
WASHSTATION_SERVICE_URI: wash_station_service:50052
MONGO_URI: ${MONGO_URI}
MONGO_DBNAME: ${MONGO_DBNAME}
MONGO_COLLECTION: ${MONGO_COLLECTION}
XENDIT_API_KEY: ${XENDIT_API_KEY}
RABBITMQ_URL: amqp://${RABBITMQ_USER}:${RABBITMQ_PASS}@rabbitmq:5672
SERVICES_JWT_SECRET: ${SERVICES_JWT_SECRET}
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
ports:
- "5672:5672"
- "15672:15672"
networks:
- my_network
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASS}
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 30s
timeout: 10s
retries: 5
postgres:
image: postgres:15
container_name: postgres
ports:
- "5432:5432"
networks:
- my_network
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "user"]
interval: 30s
timeout: 10s
retries: 5
mongo:
image: mongo:4.2
container_name: mongo
ports:
- "27017:27017"
networks:
- my_network
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
volumes:
- mongo_data:/data/db
healthcheck:
test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
volumes:
postgres_data:
mongo_data:
networks:
my_network: