-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yml
141 lines (129 loc) · 3.99 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
version: '2.1'
services:
product: # the name of the microservice. This will also be the hostname of the container in the internal Docker network.
container_name: product
build: microservices/product-service
mem_limit: 512m
ports:
- "5006:5006" # remote debug port
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
mongodb:
condition: service_healthy
rabbitmq:
condition: service_healthy
recommendation:
container_name: recommendation
build: microservices/recommendation-service
mem_limit: 512m
# ports:
# - "5007:5007" # remote debug port
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
mongodb:
condition: service_healthy
rabbitmq:
condition: service_healthy
review:
container_name: review
build: microservices/review-service
mem_limit: 912m
# ports:
# - "5008:5008" # remote debug port
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
mysql:
condition: service_healthy
rabbitmq:
condition: service_healthy
product-composite:
container_name: product-composite
build: microservices/product-composite-service
mem_limit: 512m
ports:
# - "8080:8080" # because we want to reach the container outside Docker. # we are reaching this via edge server only. so this port is not exposed.
- "5005:5005" # remote debug port
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
rabbitmq:
condition: service_healthy
mongodb:
container_name: mongodb
image: mongo:4.4.2
mem_limit: 512m
ports:
- "27017:27017"
command: mongod
healthcheck:
test: "mongo --eval 'db.stats().ok'"
interval: 5s
timeout: 2s
retries: 60
mysql:
container_name: mysql
image: mysql:5.7.32
mem_limit: 512m
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=rootpwd
- MYSQL_DATABASE=review-db
- MYSQL_USER=user
- MYSQL_PASSWORD=pwd
healthcheck:
test: "/usr/bin/mysql --user=user --password=pwd --execute \"SHOW DATABASES;\""
interval: 5s
timeout: 2s
retries: 60
# Use rabbitmq default
rabbitmq:
container_name: rabbitmq
image: rabbitmq:3.8.11-management
mem_limit: 512m
ports:
- 5672:5672
- 15672:15672
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 5s
timeout: 2s
retries: 60
eureka:
container_name: eureka
build: spring-cloud/eureka-server
mem_limit: 512m
environment:
- SPRING_PROFILES_ACTIVE=docker
# ports:
# - "8761:8761" # we are reaching this via edge server only. so this port is not exposed.
gateway:
container_name: gateway
build: spring-cloud/gateway
environment:
- SPRING_PROFILES_ACTIVE=docker
mem_limit: 512m
ports:
- "8443:8443"
config-server:
build: spring-cloud/config-server
mem_limit: 512m
environment:
- SPRING_PROFILES_ACTIVE=docker,native # native is added to signal to the config server that the config repository is based on local files.
- ENCRYPT_KEY=${CONFIG_SERVER_ENCRYPT_KEY} # used to specify the symmetric encryption key that will be used by the config server to encrypt and decrypt sensitive configuration information.
volumes:
- $PWD/config-repo:/config-repo # volume declaration will make the config-repo folder accessible in the Docker container at /config-repo
zipkin:
image: openzipkin/zipkin:2.23.2
mem_limit: 1024m
environment:
- RABBIT_ADDRESSES=rabbitmq # The RABBIT_ADDRESSES=rabbitmq environment variable is used to specify that Zipkin will receive trace information using RabbitMQ and that Zipkin will connect to RabbitMQ using the hostname rabbitmq
- STORAGE_TYPE=mem
ports:
- 9411:9411 # Zipkin exposes the HTTP port 9411 for web browsers to access its web user interface.
depends_on:
rabbitmq:
condition: service_healthy