1
+ version : " 3.9"
2
+
3
+ services :
4
+ postgres :
5
+ image : postgres:15.3-alpine3.18
6
+ environment :
7
+ - POSTGRES_LOGGING=true
8
+ - POSTGRES_DB_FILE=/run/secrets/postgres_db
9
+ - POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
10
+ - POSTGRES_USER_FILE=/run/secrets/postgres_user
11
+ secrets :
12
+ - postgres_password
13
+ - postgres_user
14
+ - postgres_db
15
+ ports :
16
+ - ${POSTGRES_PORT:-5432}:5432
17
+ volumes :
18
+ - postgres:/var/lib/postgresql/data
19
+ restart : on-failure
20
+ healthcheck :
21
+ # Use pg_isready to check postgres is running. Substitute different
22
+ # user `postgres` if you've setup differently to config/pgpass-mainnet
23
+ test : ["CMD-SHELL", "pg_isready -U postgres"]
24
+ interval : 10s
25
+ timeout : 5s
26
+ retries : 5
27
+ command : ${POSTGRES_ARGS:--c maintenance_work_mem=1GB -c max_parallel_maintenance_workers=4}
28
+ logging :
29
+ driver : " json-file"
30
+ options :
31
+ max-size : " 200k"
32
+ max-file : " 10"
33
+
34
+ cardano-node :
35
+ image : ghcr.io/blinklabs-io/cardano-node:latest
36
+ environment :
37
+ - NETWORK=${NETWORK:-preview}
38
+ volumes :
39
+ - node-data:/opt/cardano/data
40
+ - node-ipc:/ipc
41
+ restart : on-failure
42
+ healthcheck :
43
+ test : ["CMD-SHELL", "curl -f 127.0.0.1:12798/metrics || exit 1"]
44
+ interval : 60s
45
+ timeout : 10s
46
+ retries : 5
47
+ logging :
48
+ driver : " json-file"
49
+ options :
50
+ max-size : " 200k"
51
+ max-file : " 10"
52
+
53
+ cardano-db-sync :
54
+ image : blinklabs/cardano-db-sync:13.1.0.2
55
+ environment :
56
+ - DISABLE_LEDGER=${DISABLE_LEDGER}
57
+ - NETWORK=${NETWORK:-preview}
58
+ - POSTGRES_HOST=postgres
59
+ - POSTGRES_PORT=5432
60
+ - RESTORE_SNAPSHOT=${RESTORE_SNAPSHOT:-}
61
+ - RESTORE_RECREATE_DB=N
62
+ - EXTRA_DB_SYNC_ARGS=${EXTRA_DB_SYNC_ARGS:-}
63
+ depends_on :
64
+ # Depend on both services to be healthy before starting.
65
+ cardano-node :
66
+ condition : service_healthy
67
+ postgres :
68
+ condition : service_healthy
69
+ secrets :
70
+ - postgres_password
71
+ - postgres_user
72
+ - postgres_db
73
+ volumes :
74
+ - db-sync-data:/var/lib/cexplorer
75
+ - node-ipc:/node-ipc
76
+ restart : on-failure
77
+ logging :
78
+ driver : " json-file"
79
+ options :
80
+ max-size : " 200k"
81
+ max-file : " 10"
82
+
83
+ secrets :
84
+ postgres_db :
85
+ file : ./config/secrets/postgres_db
86
+ postgres_password :
87
+ file : ./config/secrets/postgres_password
88
+ postgres_user :
89
+ file : ./config/secrets/postgres_user
90
+
91
+ volumes :
92
+ db-sync-data :
93
+ postgres :
94
+ node-data :
95
+ node-ipc:
0 commit comments