-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdocker-compose.yaml
124 lines (119 loc) · 3.6 KB
/
docker-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
services:
app:
container_name: app
build:
context: ./
restart: always
environment:
DSN: "host=172.30.0.107 user=pg password=pg_pwd dbname=eventstore port=5432"
MIGRATION_DSN: "pgx5://pg:pg_pwd@172.30.0.107:5432/eventstore?sslmode=disable"
MIGRATION_SOURCE: "file:///usr/src/app/etc/migrations"
MONGO_DSN: "mongodb://172.30.0.108:27017"
MONGO_USER: root
MONGO_PASS: root
depends_on:
postgres:
condition: service_healthy
mongo:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "wget --spider --server-response --timeout=5 http://localhost:8080/health 2>&1 | grep 'OK'"]
timeout: 2s
interval: 60s
retries: 10
start_period: 20s
start_interval: 5s
ports:
- "8080:8080"
networks:
development:
ipv4_address: 172.30.0.106
postgres:
image: postgres:16.4
container_name: postgres-event-store
restart: always
volumes:
- ./data/postgres-event-store/pg-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: pg
POSTGRES_DB: eventstore
POSTGRES_PASSWORD: pg_pwd
command: postgres -c wal_level=logical
healthcheck:
test: [ "CMD-SHELL", "PGPASSWORD=pg_pwd psql -U pg -d eventstore -h localhost -c 'SELECT 1;'" ]
timeout: 2s
interval: 60s
retries: 10
start_period: 20s
start_interval: 5s
expose:
- 5432
ports:
- "5435:5432"
networks:
development:
ipv4_address: 172.30.0.107
mongo:
image: mongo:7.0.14
container_name: mongo-query-db
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root
MONGO_INITDB_DATABASE: admin
MONGO_REPLICA_SET_NAME: rs0
healthcheck:
test:
- "CMD-SHELL"
- 'mongosh --username root --password root
--authenticationDatabase admin --host 172.30.0.108 --eval
"try { rs.status() } catch (err) { rs.initiate({_id:\"rs0\",members:[{_id:0,host:\"172.30.0.108:27017\"}]})}"
| grep "votingMembersCount: 1"'
timeout: 2s
interval: 60s
retries: 10
start_period: 70s
start_interval: 3s
entrypoint:
- "sh"
- "-c"
- "[ ! -f /data/db/entrypoint-finished ] && (
timeout 40s /usr/local/bin/docker-entrypoint.sh mongod
|| (
touch /data/db/entrypoint-finished &&
cp /keyfile/mongo.key /data/configdb/mongo.key && chmod 600 /data/configdb/mongo.key &&
mongod --replSet rs0 --bind_ip 172.30.0.108 --keyFile /data/configdb/mongo.key --auth
)
)
|| (
cp /keyfile/mongo.key /data/configdb/mongo.key && chmod 600 /data/configdb/mongo.key &&
mongod --replSet rs0 --bind_ip 172.30.0.108 --keyFile /data/configdb/mongo.key --auth
)"
volumes:
- ./etc/mongo.key:/keyfile/mongo.key:ro
- ./data/mongo-query-db/db-data:/data/db
- ./data/mongo-query-db/db-config:/data/configdb
expose:
- 27017
networks:
development:
ipv4_address: 172.30.0.108
ambar-emulator:
image: ambarltd/emulator:v1.5
container_name: ambar-emulator
restart: always
volumes:
- ./etc/ambar-config.yaml:/opt/emulator/config/config.yaml
- ./data/ambar-emulator:/root/.local/share/ambar-emulator
depends_on:
app:
condition: service_healthy
networks:
development:
ipv4_address: 172.30.0.199
networks:
development:
driver: bridge
ipam:
config:
- subnet: 172.30.0.0/24