-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdocker-compose.yml
131 lines (120 loc) · 2.84 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
version: '3.2'
services:
# Postres as a main storage
db:
restart: always
image: postgres
container_name: myapp_db
volumes:
- ./pgdata:/var/lib/postgresql/data
ports:
- "8001:5432"
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
# ELK stack for logging
es:
labels:
com.example.service: "es"
com.example.description: "For searching and indexing data"
image: elasticsearch:5.4
container_name: myapp_es
volumes:
- ./esdata:/usr/share/elasticsearch/data/
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
kibana:
labels:
com.example.service: "kibana"
com.example.description: "Data visualisation and for log aggregation"
image: kibana:5.4.3
container_name: myapp_kibana
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_URL=http://es:9200
depends_on:
- es
logstash:
labels:
com.example.service: "logstash"
com.example.description: "For logging data"
image: logstash:5.4.3
container_name: myapp_logstash
volumes:
- ./config/logstash:/logstash_dir
command: logstash -f /logstash_dir/logstash.conf
depends_on:
- es
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
ports:
- "5959:5959"
# Django application
web:
container_name: myapp_web
labels:
com.example.service: "web"
com.example.description: "Use for the main web process"
build: .
command: ["./wait_for_postgres.sh"]
expose:
- 8000
volumes:
- ./static:/code/app/static #must be same as nginx!
logging:
driver: "json-file"
depends_on:
- db
- es
- kibana
links:
- redis
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
# Nginx as a web server and reverse proxy
nginx:
image: nginx
container_name: myapp_nginx
ports:
- "8000:8000"
volumes:
- ./config/nginx:/etc/nginx/conf.d
- ./static:/code/app/static #must be same as web!
depends_on:
- web
# redis as a Django cache store
redis:
image: redis
container_name: myapp_redis
expose:
- '6379'
# TICK stack for metrics and grafana for visualisation
influxdb:
container_name: myapp_influxdb
image: influxdb:1.0.2
ports:
- "8083:8083"
- "8086:8086"
volumes:
- ./influxdb:/var/lib/influxdb
restart: always
grafana:
container_name: myapp_grafana
image: grafana/grafana:4.3.2
ports:
- "3000:3000"
links:
- influxdb
restart: always
telegraf:
container_name: myapp_telegraf
image: telegraf:1.3.3
volumes:
- ./config/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf
- /var/run/docker.sock:/var/run/docker.sock
restart: always