-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
140 lines (133 loc) · 3.28 KB
/
docker-compose.yml
File metadata and controls
140 lines (133 loc) · 3.28 KB
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
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
deploy:
restart_policy:
condition: on-failure
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml:ro
depends_on:
- cadvisor
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.47.0
container_name: cadvisor
privileged: true
deploy:
restart_policy:
condition: on-failure
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
- /var/run/docker.sock:/var/run/docker.sock
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- 3000:3000
deploy:
restart_policy:
condition: on-failure
volumes:
- grafana-storage:/var/lib/grafana
- ./config/grafana.ini:/etc/grafana/grafana.ini
- ./config/provisioning/datasources:/etc/grafana/provisioning/datasources
- ./config/provisioning/dashboards:/etc/grafana/provisioning/dashboards
depends_on:
- prometheus
- cadvisor
command:
- --config=/etc/grafana/grafana.ini
server:
container_name: server
build:
context: .
dockerfile: Dockerfile
command: python server.py --number_of_rounds=100
environment:
FLASK_RUN_PORT: 6000
DOCKER_HOST_IP: host.docker.internal
volumes:
- .:/app
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "6000:6000"
- "8265:8265"
- "8000:8000"
stop_signal: SIGINT
depends_on:
- prometheus
- grafana
client1:
container_name: client1
build:
context: .
dockerfile: Dockerfile
command: python client.py --server_address=server:8080 --data_percentage=0.6 --client_id=1 --total_clients=2 --batch_size=32 --learning_rate=0.001
deploy:
resources:
limits:
cpus: "4"
memory: "3g"
volumes:
- .:/app
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "6001:6001"
depends_on:
- server
environment:
FLASK_RUN_PORT: 6001
container_name: client1
DOCKER_HOST_IP: host.docker.internal
stop_signal: SIGINT
client2:
container_name: client2
build:
context: .
dockerfile: Dockerfile
command: python client.py --server_address=server:8080 --data_percentage=0.6 --client_id=2 --total_clients=2 --batch_size=256 --learning_rate=0.05
deploy:
resources:
limits:
cpus: "1"
memory: "6g"
volumes:
- .:/app
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "6002:6002"
depends_on:
- server
environment:
FLASK_RUN_PORT: 6002
container_name: client2
DOCKER_HOST_IP: host.docker.internal
stop_signal: SIGINT
report-generator:
container_name: report-generator
build:
context: .
dockerfile: report.Dockerfile
volumes:
- .:/app
depends_on:
- server
- client1
- client2
- prometheus
environment:
- PROMETHEUS_URL=http://prometheus:9090
profiles:
- report
volumes:
grafana-storage: