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