-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompose.yaml
257 lines (256 loc) · 11.7 KB
/
compose.yaml
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
# 允许服务相互通信的层。
networks:
# 自定义的网络名称
turing:
# 指定该网络应使用哪个驱动程序。
driver: bridge
# 服务是应用程序中计算资源的抽象定义,可以独立于其他组件进行扩展/替换。
services:
turing-redis:
# 覆盖容器映像声明的默认命令(即通过 Dockerfile 的 CMD)。
command: >
bash -c '
chmod +x /usr/local/bin/healthcheck.sh;
redis-server /etc/redis/redis.conf;
'
# 指定自定义容器名称,而不是生成的默认名称。
container_name: turing-redis
# 声明运行以确定该服务的容器是否“健康”的检查。
healthcheck:
test: [ "CMD-SHELL", "/usr/local/bin/healthcheck.sh" ]
# 运行状况检查将在容器启动后首先运行间隔秒,然后在之前的每个检查完成后再次运行间隔秒。
interval: 10s
# 如果单次运行检查花费的时间超过超时秒数,则检查被视为失败。
timeout: 10s
# 需要重试健康检查连续失败才能将容器视为不健康。
retries: 3
# 为需要时间引导的容器提供初始化时间。
start_period: 40s
# 声明用于服务容器的自定义主机名。
hostname: turing-redis
# 指定启动容器的图像。
image: redis:7.4.1
# 定义服务容器附加到的网络,引用顶级网络键下的条目。
networks:
- turing
# 暴露端口。 指定两个端口 (HOST:CONTAINER),或仅指定容器端口(选择临时主机端口)。
ports:
- "6379:6379"
# 定义平台在容器终止时应用的策略。
restart: always
# 定义服务容器必须可以访问的挂载主机路径或命名卷。
volumes:
- ./docker/redis/conf/redis.conf:/etc/redis/redis.conf
- ./docker/redis/data:/data
- ./docker/redis/sh/healthcheck.sh:/usr/local/bin/healthcheck.sh
turing-elasticsearch:
# 指定自定义容器名称,而不是生成的默认名称。
container_name: turing-elasticsearch
# 定义容器中设置的环境变量。
environment:
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD}
ES_JAVA_OPTS: -Xms512m -Xmx512m
DISCOVERY: single-node
# 声明运行以确定该服务的容器是否“健康”的检查。
healthcheck:
test: [ "CMD-SHELL", "curl -k -u elastic:${ELASTIC_PASSWORD} https://localhost:9200/_cat/health?h=status | grep -q '[(green)(yellow)]'" ]
# 运行状况检查将在容器启动后首先运行间隔秒,然后在之前的每个检查完成后再次运行间隔秒。
interval: 10s
# 如果单次运行检查花费的时间超过超时秒数,则检查被视为失败。
timeout: 10s
# 需要重试健康检查连续失败才能将容器视为不健康。
retries: 3
# 为需要时间引导的容器提供初始化时间。
start_period: 40s
# 声明用于服务容器的自定义主机名。
hostname: turing-elasticsearch
# 指定启动容器的图像。
image: elasticsearch:${STACK_VERSION}
# 定义服务容器附加到的网络,引用顶级网络键下的条目。
networks:
- turing
# 暴露端口。 指定两个端口 (HOST:CONTAINER),或仅指定容器端口(选择临时主机端口)。
ports:
- "9200:9200"
- "9300:9300"
# 定义平台在容器终止时应用的策略。
restart: always
turing-kibana:
# 指定自定义容器名称,而不是生成的默认名称。
container_name: turing-kibana
# 表示服务之间的启动和关闭依赖关系。
depends_on:
turing-elasticsearch:
condition: service_healthy
# 定义容器中设置的环境变量。
environment:
# - i18n.locale=zh-CN 没有效果,并且字母必须大写,. 用 _ 代替
I18N_LOCALE: zh-CN
# 最终用户访问 Kibana 的公开可用 URL。
# http必须包括协议、主机名、端口(如果与和 的默认值不同https,分别为 80 和 443)以及 server.basePath(如果已配置)。
# 此设置不能以斜杠 (/) 结尾。
SERVER_PUBLICBASEURL: http://turing-kibana:5601
XPACK_REPORTING_ROLES_ENABLED: false
# 声明运行以确定该服务的容器是否“健康”的检查。
healthcheck:
test: [ "CMD-SHELL", "curl -s -I http://localhost:5601/api | grep -q 'HTTP/1.1 200 OK'" ]
# 运行状况检查将在容器启动后首先运行间隔秒,然后在之前的每个检查完成后再次运行间隔秒。
interval: 10s
# 如果单次运行检查花费的时间超过超时秒数,则检查被视为失败。
timeout: 10s
# 需要重试健康检查连续失败才能将容器视为不健康。
retries: 3
# 为需要时间引导的容器提供初始化时间。
start_period: 40s
# 声明用于服务容器的自定义主机名。
hostname: turing-kibana
# 指定启动容器的图像。
image: kibana:${STACK_VERSION}
# 定义服务容器附加到的网络,引用顶级网络键下的条目。
networks:
- turing
# 暴露端口。 指定两个端口 (HOST:CONTAINER),或仅指定容器端口(选择临时主机端口)。
ports:
- "5601:5601"
# 定义平台在容器终止时应用的策略。
restart: always
turing-logstash:
# 指定自定义容器名称,而不是生成的默认名称。
container_name: turing-logstash
# 表示服务之间的启动和关闭依赖关系。
depends_on:
turing-elasticsearch:
condition: service_healthy
# 定义容器中设置的环境变量。(源于日志提示)
environment:
XPACK_MONITORING_ENABLED: true
# 声明运行以确定该服务的容器是否“健康”的检查。
healthcheck:
test: [ "CMD-SHELL", "curl -f http://localhost:9600/_node | grep -q '\"status\":\"green\"'" ]
# 运行状况检查将在容器启动后首先运行间隔秒,然后在之前的每个检查完成后再次运行间隔秒。
interval: 10s
# 如果单次运行检查花费的时间超过超时秒数,则检查被视为失败。
timeout: 10s
# 需要重试健康检查连续失败才能将容器视为不健康。
retries: 3
# 为需要时间引导的容器提供初始化时间。
start_period: 40s
# 声明用于服务容器的自定义主机名。
hostname: turing-logstash
# 指定启动容器的图像。
image: logstash:${STACK_VERSION}
# 定义服务容器附加到的网络,引用顶级网络键下的条目。
networks:
- turing
# 暴露端口。 指定两个端口 (HOST:CONTAINER),或仅指定容器端口(选择临时主机端口)。
ports:
- "5044:5044"
- "9600:9600"
# 定义平台在容器终止时应用的策略。
restart: always
# 定义服务容器必须可以访问的挂载主机路径或命名卷。
volumes:
- /docker/elastic/logstash/logs:/usr/share/logstash/logs
turing-backend:
# 指定用于从源创建容器映像的构建配置。
build:
# 包含 Dockerfile 的目录的路径,或 git 存储库的 url。
context: ./docker/turing-backend
# Compose 使用备用文件进行构建。 还必须指定构建路径。
dockerfile: Dockerfile
# 指定自定义容器名称,而不是生成的默认名称。
container_name: turing-backend
# 表示服务之间的启动和关闭依赖关系。
depends_on:
turing-redis:
condition: service_healthy
turing-elasticsearch:
condition: service_healthy
# 声明运行以确定该服务的容器是否“健康”的检查。
healthcheck:
test: [ "CMD-SHELL", "curl http://localhost:8080/actuator/health | grep -q '^{\"status\":\"UP\"'" ]
# 运行状况检查将在容器启动后首先运行间隔秒,然后在之前的每个检查完成后再次运行间隔秒。
interval: 10s
# 如果单次运行检查花费的时间超过超时秒数,则检查被视为失败。
timeout: 10s
# 需要重试健康检查连续失败才能将容器视为不健康。
retries: 3
# 为需要时间引导的容器提供初始化时间。
start_period: 40s
# 声明用于服务容器的自定义主机名。
hostname: turing-backend
# 指定启动容器的图像。
# image: turing-backend:0.0.1-SNAPSHOT
# 定义服务容器附加到的网络,引用顶级网络键下的条目。
networks:
- turing
# 暴露端口。 指定两个端口 (HOST:CONTAINER),或仅指定容器端口(选择临时主机端口)。
ports:
- "8080:8080"
# 定义平台在容器终止时应用的策略。
restart: always
turing-nginx:
# 指定自定义容器名称,而不是生成的默认名称。
container_name: turing-nginx
# 表示服务之间的启动和关闭依赖关系。
depends_on:
turing-backend:
condition: service_healthy
# 声明运行以确定该服务的容器是否“健康”的检查。
healthcheck:
test: [ "CMD-SHELL", "curl http://localhost:80 | grep -q '^<!doctype html>'" ]
# 运行状况检查将在容器启动后首先运行间隔秒,然后在之前的每个检查完成后再次运行间隔秒。
interval: 10s
# 如果单次运行检查花费的时间超过超时秒数,则检查被视为失败。
timeout: 10s
# 需要重试健康检查连续失败才能将容器视为不健康。
retries: 3
# 为需要时间引导的容器提供初始化时间。
start_period: 40s
# 声明用于服务容器的自定义主机名。
hostname: turing-nginx
# 指定启动容器的图像。
image: nginx:1.27.3
# 定义服务容器附加到的网络,引用顶级网络键下的条目。
networks:
- turing
# 暴露端口。 指定两个端口 (HOST:CONTAINER),或仅指定容器端口(选择临时主机端口)。
ports:
- "80:80"
# 定义平台在容器终止时应用的策略。
restart: always
# 定义服务容器必须可以访问的挂载主机路径或命名卷。
volumes:
- ./docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- ./docker/nginx/docs/html:/etc/nginx/docs/html
turing-portainer:
# 指定自定义容器名称,而不是生成的默认名称。
container_name: turing-portainer
# 声明运行以确定该服务的容器是否“健康”的检查。
# healthcheck:
# # test: [ "CMD-SHELL", "curl --fail http://localhost:9000/api/status || exit 1" ]
# test: [ "CMD", "wget", "-qO-", "http://localhost:9000/api/status" ]
# # 运行状况检查将在容器启动后首先运行间隔秒,然后在之前的每个检查完成后再次运行间隔秒。
# interval: 10s
# # 如果单次运行检查花费的时间超过超时秒数,则检查被视为失败。
# timeout: 10s
# # 需要重试健康检查连续失败才能将容器视为不健康。
# retries: 3
# # 为需要时间引导的容器提供初始化时间。
# start_period: 40s
# 声明用于服务容器的自定义主机名。
hostname: turing-portainer
# 指定启动容器的图像。
image: portainer/portainer-ce:2.21.5
# 定义服务容器附加到的网络,引用顶级网络键下的条目。
networks:
- turing
# 暴露端口。 指定两个端口 (HOST:CONTAINER),或仅指定容器端口(选择临时主机端口)。
ports:
- "9000:9000"
- "9443:9443"
# 定义平台在容器终止时应用的策略。
restart: always
# 定义服务容器必须可以访问的挂载主机路径或命名卷。
volumes:
- /var/run/docker.sock:/var/run/docker.sock