-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
80 lines (76 loc) · 2.47 KB
/
docker-compose.yaml
File metadata and controls
80 lines (76 loc) · 2.47 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
version: "3.8"
services:
# NOTE: This is NOT an industrial, production elasticsearch. It's a single node
# just to toy with.
elasticsearch:
hostname: ${ELASTIC_HOSTNAME}
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,z
- elasticsearch:/usr/share/elasticsearch/data:z
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx2048m -Xms1024m"
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD}
ELASTIC_USERNAME: ${ELASTIC_USERNAME}
# Use single node discovery in order to disable production mode and avoid bootstrap checks.
# see: https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
discovery.type: single-node
healthcheck:
test: ["CMD-SHELL", "curl --user ${ELASTIC_USERNAME}:${ELASTIC_PASSWORD} --silent --fail localhost:9200/_cluster/health || exit 1"]
interval: 2s
timeout: 1s
retries: 15
start_period: 15s
database:
hostname: ${DATABASE_HOSTNAME}
image: postgres:12
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
ports:
- "5432:5432"
volumes:
- database-volume:/var/lib/postgresql
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql # Database startup script
streamer:
build:
context: .
dockerfile: python.Dockerfile
depends_on:
elasticsearch:
condition: service_healthy
environment:
DATABASE_HOST: ${DATABASE_HOSTNAME}
ELASTIC_HOSTNAME: ${ELASTIC_HOSTNAME}
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD}
ELASTIC_USERNAME: ${ELASTIC_USERNAME}
ELASTIC_PORT: ${ELASTIC_PORT}
MESSAGES_QUEUE: ${MESSAGES_QUEUE}
PIPELINE_POSTGRES_PASSWORD: ${PIPELINE_POSTGRES_PASSWORD}
PIPELINE_POSTGRES_USER: ${PIPELINE_POSTGRES_USER}
POSTGRES_DB: ${POSTGRES_DB}
PYTHONUNBUFFERED: 0
RABBITMQ_HOST: ${MESSAGES_HOSTNAME}
volumes:
- type: bind
source: ./src/
target: /src/
queueing:
build:
context: .
dockerfile: rabbitmq.Dockerfile
hostname: ${MESSAGES_HOSTNAME}
ports:
- "5672:5672" # Service
- "15672:15672" # Web interface
volumes:
# Persist rabbitmq data
- rabbit-data:/var/lib/rabbitmq/mnesia/
volumes:
database-volume:
rabbit-data:
elasticsearch: