Skip to content
File

Blob: compose-server.yaml

yaml169 lines
1version: '3.9'
2 
3# Note:
4# 1. seed node should always be the first node to start, and the last node to stop.
5# Otherwise, kv data will become inconsistent (node crashing is okay).
6# 2. Default stop timeout is 10s, however we need much longer for all the nodes to
7# leave the ring gracefully (transferring keys to successor).
8# 3. To validate, `make dev-validate` should return the same serials in-between start
9# and stop. Also, /_internal/stats should not have keys that are belonging to the
10# invalid owner.
11 
12services:
13 # simulate let's encrypt acme
14 pebble:
15 image: ghcr.io/letsencrypt/pebble:latest
16 command: -config /pebble/config.json
17 environment:
18 - PEBBLE_VA_NOSLEEP=1
19 - PEBBLE_VA_ALWAYS_VALID=1
20 - PEBBLE_WFE_NONCEREJECT=0
21 volumes:
22 - ./dev/pebble:/pebble:ro
23 - ./certs:/certs:ro
24 ports:
25 - 14000:14000 # ACME port
26 - 15000:15000 # Management port
27 networks:
28 - specter
29 
30 dns:
31 image: specter-dev
32 restart: unless-stopped
33 stop_grace_period: 120s
34 depends_on:
35 - seed
36 ports:
37 - "11153:1153/tcp"
38 - "11153:1153/udp"
39 environment:
40 - DOH=false
41 networks:
42 - specter
43 command: --verbose dns --acme acme://admin@example.com@hostedacme.com --acme-ns ns.hostedacme.com/127.0.0.1 --listen :1153 --rpc tcp://seed:1280
44 
45 seed:
46 image: specter-dev
47 restart: unless-stopped
48 stop_grace_period: 120s
49 depends_on:
50 - pebble
51 ports:
52 - "1113:1113/udp"
53 - "1113:1113/tcp"
54 - "11113:1112/tcp"
55 volumes:
56 - ./certs:/certs:ro
57 - seed_kv:/app/data
58 environment:
59 - INTERNAL_USER=test
60 - INTERNAL_PASS=test
61 - ACME_CA=https://pebble:14000/dir
62 - DOH=false
63 - KV_PROVIDER=sqlite
64 networks:
65 - specter
66 command: --verbose server --data /app/data --cert /certs --listen :1113 --advertise seed:1113 --listen-http 1112 --apex dev.con.nect.sh --virtual 3 ${SKIP:---acme acme://admin@example.com@hostedacme.com} --listen-rpc tcp://:1280
67 
68 srva:
69 image: specter-dev
70 restart: unless-stopped
71 stop_grace_period: 120s
72 depends_on:
73 - seed
74 ports:
75 - "2113:1113/udp"
76 - "2113:1113/tcp"
77 - "12113:1112/tcp"
78 volumes:
79 - ./certs:/certs:ro
80 - srva_kv:/app/data
81 environment:
82 - INTERNAL_USER=test
83 - INTERNAL_PASS=test
84 - ACME_CA=https://pebble:14000/dir
85 - DOH=false
86 - KV_PROVIDER=sqlite
87 networks:
88 - specter
89 command: --verbose server --data /app/data --cert /certs --listen :1113 --advertise srva:1113 --listen-http 1112 --apex dev.con.nect.sh --virtual 3 ${SKIP:---acme acme://admin@example.com@hostedacme.com} --join seed:1113
90 
91 srvb:
92 image: specter-dev
93 restart: unless-stopped
94 stop_grace_period: 120s
95 depends_on:
96 - seed
97 ports:
98 - "3113:1113/udp"
99 - "3113:1113/tcp"
100 - "13113:1112/tcp"
101 volumes:
102 - ./certs:/certs:ro
103 - srvb_kv:/app/data
104 environment:
105 - INTERNAL_USER=test
106 - INTERNAL_PASS=test
107 - ACME_CA=https://pebble:14000/dir
108 - DOH=false
109 - KV_PROVIDER=sqlite
110 networks:
111 - specter
112 command: --verbose server --data /app/data --cert /certs --listen :1113 --advertise srvb:1113 --listen-http 1112 --apex dev.con.nect.sh --virtual 3 ${SKIP:---acme acme://admin@example.com@hostedacme.com} --join seed:1113
113 
114 srvc:
115 image: specter-dev
116 restart: unless-stopped
117 stop_grace_period: 120s
118 depends_on:
119 - seed
120 ports:
121 - "4113:1113/udp"
122 - "4113:1113/tcp"
123 - "14113:1112/tcp"
124 volumes:
125 - ./certs:/certs:ro
126 - srvc_kv:/app/data
127 environment:
128 - INTERNAL_USER=test
129 - INTERNAL_PASS=test
130 - ACME_CA=https://pebble:14000/dir
131 - DOH=false
132 - KV_PROVIDER=sqlite
133 networks:
134 - specter
135 command: --verbose server --data /app/data --cert /certs --listen :1113 --advertise srvc:1113 --listen-http 1112 --apex dev.con.nect.sh --virtual 3 ${SKIP:---acme acme://admin@example.com@hostedacme.com} --join seed:1113
136 
137 srvd:
138 image: specter-dev
139 restart: unless-stopped
140 stop_grace_period: 120s
141 depends_on:
142 - seed
143 ports:
144 - "5113:1113/udp"
145 - "5113:1113/tcp"
146 - "15113:1112/tcp"
147 volumes:
148 - ./certs:/certs:ro
149 - srvd_kv:/app/data
150 environment:
151 - INTERNAL_USER=test
152 - INTERNAL_PASS=test
153 - ACME_CA=https://pebble:14000/dir
154 - DOH=false
155 - KV_PROVIDER=sqlite
156 networks:
157 - specter
158 command: --verbose server --data /app/data --cert /certs --listen :1113 --advertise srvd:1113 --listen-http 1112 --apex dev.con.nect.sh --virtual 3 ${SKIP:---acme acme://admin@example.com@hostedacme.com} --join seed:1113
159 
160volumes:
161 seed_kv:
162 srva_kv:
163 srvb_kv:
164 srvc_kv:
165 srvd_kv:
166 
167networks:
168 specter: