Openstatus
www.openstatus.dev
1networks:
2 openstatus:
3 driver: bridge
4 name: openstatus
5
6volumes:
7 libsql-data:
8 name: openstatus-libsql-data
9
10services:
11 # External services
12 libsql:
13 container_name: openstatus-libsql
14 image: ghcr.io/tursodatabase/libsql-server:latest
15 networks:
16 - openstatus
17 ports:
18 - "8080:8080"
19 - "5001:5001"
20 volumes:
21 - libsql-data:/var/lib/sqld
22 environment:
23 - SQLD_NODE=primary
24 healthcheck:
25 test:
26 [
27 "CMD-SHELL",
28 'perl -e ''use IO::Socket::INET; exit(IO::Socket::INET->new(PeerAddr=>"127.0.0.1:8080",Timeout=>1) ? 0 : 1);''',
29 ]
30 interval: 10s
31 timeout: 5s
32 retries: 5
33 start_period: 10s
34 restart: unless-stopped
35
36 tinybird-local:
37 container_name: openstatus-tinybird
38 image: tinybirdco/tinybird-local:latest
39 platform: linux/amd64
40 networks:
41 - openstatus
42 ports:
43 - "7181:7181"
44 environment:
45 - COMPATIBILITY_MODE=1
46 healthcheck:
47 test: ["CMD", "curl", "-f", "http://localhost:7181/"]
48 interval: 15s
49 timeout: 5s
50 retries: 5
51 start_period: 20s
52 restart: unless-stopped
53
54 # Internal Services
55 workflows:
56 container_name: openstatus-workflows
57 build:
58 context: .
59 dockerfile: apps/workflows/Dockerfile
60 image: openstatus/workflows:latest
61 networks:
62 - openstatus
63 ports:
64 - "3000:3000"
65 volumes:
66 - ./data:/app/data
67 env_file:
68 - .env.docker
69 environment:
70 - DATABASE_URL=http://libsql:8080
71 - PORT=3000
72 depends_on:
73 libsql:
74 condition: service_healthy
75 healthcheck:
76 test: ["CMD-SHELL", "curl -f http://localhost:3000/ping || exit 1"]
77 interval: 15s
78 timeout: 10s
79 retries: 3
80 start_period: 30s
81 restart: unless-stopped
82
83 server:
84 container_name: openstatus-server
85 build:
86 context: .
87 dockerfile: apps/server/Dockerfile
88 image: openstatus/server:latest
89 networks:
90 - openstatus
91 ports:
92 - "3001:3000"
93 env_file:
94 - .env.docker
95 environment:
96 - DATABASE_URL=http://libsql:8080
97 - PORT=3000
98 depends_on:
99 workflows:
100 condition: service_healthy
101 libsql:
102 condition: service_healthy
103 healthcheck:
104 test: ["CMD-SHELL", "curl -f http://localhost:3000/ping || exit 1"]
105 interval: 15s
106 timeout: 10s
107 retries: 3
108 start_period: 30s
109 restart: unless-stopped
110
111 private-location:
112 container_name: openstatus-private-location
113 build:
114 context: apps/private-location
115 dockerfile: Dockerfile
116 image: openstatus/private-location:latest
117 networks:
118 - openstatus
119 ports:
120 - "8081:8080"
121 env_file:
122 - .env.docker
123 environment:
124 - DB_URL=http://libsql:8080
125 - TINYBIRD_URL=http://tinybird-local:7181
126 - GIN_MODE=release
127 - PORT=8080
128 depends_on:
129 server:
130 condition: service_healthy
131 healthcheck:
132 test:
133 [
134 "CMD",
135 "wget",
136 "--spider",
137 "-q",
138 "http://localhost:8080/health",
139 ]
140 interval: 15s
141 timeout: 10s
142 retries: 3
143 start_period: 30s
144 restart: unless-stopped
145
146 dashboard:
147 container_name: openstatus-dashboard
148 build:
149 context: .
150 dockerfile: apps/dashboard/Dockerfile
151 image: openstatus/dashboard:latest
152 networks:
153 - openstatus
154 ports:
155 - "3002:3000"
156 env_file:
157 - .env.docker
158 environment:
159 - DATABASE_URL=http://libsql:8080
160 - PORT=3000
161 - HOSTNAME=0.0.0.0
162 - AUTH_TRUST_HOST=true
163 depends_on:
164 workflows:
165 condition: service_healthy
166 libsql:
167 condition: service_healthy
168 server:
169 condition: service_healthy
170 healthcheck:
171 test: ["CMD-SHELL", "curl -f http://localhost:3000/ || exit 1"]
172 interval: 15s
173 timeout: 10s
174 retries: 3
175 start_period: 45s
176 restart: unless-stopped
177
178 status-page:
179 container_name: openstatus-status-page
180 build:
181 context: .
182 dockerfile: apps/status-page/Dockerfile
183 image: openstatus/status-page:latest
184 networks:
185 - openstatus
186 ports:
187 - "3003:3000"
188 env_file:
189 - .env.docker
190 environment:
191 - DATABASE_URL=http://libsql:8080
192 - PORT=3000
193 - HOSTNAME=0.0.0.0
194 - AUTH_TRUST_HOST=true
195 depends_on:
196 workflows:
197 condition: service_healthy
198 libsql:
199 condition: service_healthy
200 server:
201 condition: service_healthy
202 healthcheck:
203 test: ["CMD-SHELL", "curl -f http://localhost:3000/ || exit 1"]
204 interval: 15s
205 timeout: 10s
206 retries: 3
207 start_period: 45s
208 restart: unless-stopped