-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.dev.yml
More file actions
168 lines (158 loc) · 4.56 KB
/
docker-compose.dev.yml
File metadata and controls
168 lines (158 loc) · 4.56 KB
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# WaveKit Development Environment
# Features: Live reload, hot debugging, volume mounts for development
# Usage: docker-compose -f docker-compose.dev.yml up
services:
rtl-tcp:
# Optional: Mock RTL-TCP service (comment out if using real hardware)
image: alpine:latest
command: nc -l -p 1234 < /dev/zero
container_name: rtl-tcp-mock
ports:
- "1234:1234"
networks:
- wavekit
healthcheck:
test: ["CMD", "nc", "-z", "localhost", "1234"]
interval: 5s
timeout: 2s
retries: 3
sdrpp-server:
# SDR++ Server - IQ stream provider
image: wavekit:latest-sdrpp
build:
context: .
dockerfile: Dockerfile
target: final-sdrpp
cache_from:
- type=local,src=./.docker-cache
cache_to:
- type=local,dest=./.docker-cache,mode=max
container_name: wavekit-sdrpp
depends_on:
rtl-tcp:
condition: service_healthy
environment:
LOG_LEVEL: debug
ports:
- "5259:5259"
networks:
- wavekit
volumes:
- sdrpp-data:/sdr
- ./logs/sdrpp:/var/log/sdrpp
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5259/"]
interval: 10s
timeout: 5s
retries: 3
start_period: 20s
wavekit-api:
# Main WaveKit API + Decoders
image: wavekit:latest-core
build:
context: .
dockerfile: Dockerfile
target: final-core # Core mode - SDR++ is external service
cache_from:
- type=local,src=./.docker-cache
cache_to:
- type=local,dest=./.docker-cache,mode=max
container_name: wavekit-api
depends_on:
sdrpp-server:
condition: service_healthy
environment:
WAVEKIT_LOG_LEVEL: debug
WAVEKIT_CONFIG_PATH: /app/config
NODE_ENV: development
SDR_SOURCE: "tcp://sdrpp-server:5259" # Connect to external SDR++
# Node.js debugging
NODE_OPTIONS: "--inspect=0.0.0.0:9229"
ports:
- "9000:9000" # REST API
- "8080:8080" # Audio output TCP
- "8081:8081" # Live demod HTTP audio
- "4713:4713" # WebSocket events
- "9229:9229" # Node.js inspector for debugging
networks:
- wavekit
volumes:
# Source code for hot reload
- ./src:/app/src:ro # TypeScript source (read-only)
- ./dist:/app/dist # Live TypeScript output
- ./config:/app/config # Config files
# Decoder configuration directories
- ./config/decoders:/app/config/decoders # Decoder-specific configs
- ./config/dsd-fme:/app/config/dsd-fme # dsd-fme config
- ./config/multimon-ng:/app/config/multimon-ng # multimon-ng config
- ./config/rtl433:/app/config/rtl433 # rtl_433 config
- ./config/acarsdec:/app/config/acarsdec # acarsdec config
- ./config/ais-catcher:/app/config/ais-catcher # AIS-catcher config
- ./config/direwolf:/app/config/direwolf # direwolf config
- ./config/dumpvdl2:/app/config/dumpvdl2 # dumpvdl2 config
- ./config/readsb:/app/config/readsb # readsb config
# Output directories
- ./logs:/var/log/wavekit # Logs
- ./decoded_calls:/app/decoded_calls # Decoded audio files
- recordings:/recordings # Recording storage
# Node modules (preserve across rebuilds)
- node-modules:/app/node_modules
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/health"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
cap_add:
- SYS_NICE # Process priority for decoders
- NET_RAW # Network operations
nginx-reverse-proxy:
# Optional: Nginx reverse proxy for cleaner URLs
image: nginx:alpine
container_name: wavekit-nginx
depends_on:
- wavekit-api
volumes:
- ./docker/nginx.dev.conf:/etc/nginx/nginx.conf:ro
ports:
- "80:80"
networks:
- wavekit
healthcheck:
test:
[
"CMD",
"wget",
"--quiet",
"--tries=1",
"--spider",
"http://localhost/health",
]
interval: 10s
timeout: 5s
retries: 3
# Optional: Browser-based IDE for development
vscode-server:
image: codercom/code-server:latest
container_name: wavekit-ide
environment:
PASSWORD: wavekit-dev
SUDO_PASSWORD: wavekit-dev
volumes:
- .:/home/coder/project
- vscode-extensions:/home/coder/.local/share/code-server
ports:
- "3000:8080"
networks:
- wavekit
networks:
wavekit:
driver: bridge
ipam:
config:
- subnet: 172.28.0.0/16
volumes:
sdrpp-data:
node-modules:
vscode-extensions:
recordings: