Repository navigation
Expand file tree
/
Copy pathdocker-compose.dev.yml
More file actions
108 lines (102 loc) · 3.3 KB
/
Copy pathdocker-compose.dev.yml
File metadata and controls
108 lines (102 loc) · 3.3 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
# Docker Compose for Local Development
# To run: docker compose -f docker-compose.dev.yml up
services:
# Backend services (from backend/docker-compose.build.yml)
quart:
build:
context: ./backend
dockerfile: Dockerfile
container_name: titanic_quart_dev
command: >
sh -c "redis-server &
python worker.py ffmpeg &
python worker.py umbrel &
python app.py"
ports:
- "6969:5000"
volumes:
# Mount source code for hot-reloading (Quart debug mode will use it)
- ./backend:/app
environment:
- PYTHONUNBUFFERED=1
- GOOGLE_APPLICATION_CREDENTIALS=/run/secrets/admin-sdk-cred
- IS_DEV=${IS_DEV:-true}
# Local-only: explicitly disable auth for the dev stack.
- DEV_AUTH_BYPASS=${DEV_AUTH_BYPASS:-true}
# Published over the Docker bridge (6969:5000), so bind all interfaces.
- HYPERCORN_BIND=0.0.0.0:5000
- UMBREL_SERVER_URL=http://umbrel:3029
- FIREBASE_API_KEY=${FIREBASE_API_KEY}
- SENTRY_ENVIRONMENT=${SENTRY_ENVIRONMENT:-dev}
- SENTRY_DSN=${SENTRY_QUART_DSN}
- SENTRY_RQ_DSN=${SENTRY_RQ_DSN}
- SENTRY_TRACES_SAMPLE_RATE=${SENTRY_TRACES_SAMPLE_RATE}
- ENABLE_RNNOISE=${ENABLE_RNNOISE:-true} # Set to 'true' to enable RNNoise denoising on mic track
secrets:
- admin-sdk-cred
networks:
- titanic_dev_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
interval: 30s
timeout: 5s
retries: 3
# Umbrel service with hot-reloading
umbrel:
build:
context: ./titanic
dockerfile: Dockerfile.dev
# Only rebuild when dependencies change, not on every source change
args:
BUILDKIT_INLINE_CACHE: 1
container_name: titanic_umbrel_dev
ports:
- "3029:3029"
# settings listener; published only in dev (no app_proxy here)
- "3031:3031"
env_file:
- .env
environment:
- SENTRY_DSN=${RUST_SENTRY_DSN}
- SENTRY_ENVIRONMENT=${SENTRY_ENVIRONMENT:-dev}
- SENTRY_TRACES_SAMPLE_RATE=${SENTRY_TRACES_SAMPLE_RATE}
# Local-only: explicitly disable Firebase auth for the dev stack.
- DEV_AUTH_BYPASS=${DEV_AUTH_BYPASS:-true}
volumes:
# Mount source files for hot-reloading (cargo-watch will rebuild)
- ./titanic/src:/app/src
- ./titanic/Cargo.toml:/app/Cargo.toml
- ./titanic/Cargo.lock:/app/Cargo.lock
# Mount target directory to persist compiled dependencies
- titanic_dev_cache:/app/target
# Mount Clips directory for development (PLEX_MEDIA_PATH=/downloads)
- ./titanic/Clips:/downloads/Clips
networks:
- titanic_dev_network
# Healthcheck is disabled for cargo-watch, as the server might restart frequently.
# Trimmer service
trimmer:
build:
context: ./trimmer
dockerfile: Dockerfile
container_name: titanic_trimmer_dev
ports:
- "3030:3030"
volumes:
- ./trimmer/static:/app/static
- ./titanic/Clips:/downloads/Clips
environment:
- RUST_LOG=debug
- MEDIA_PATH=/downloads
- DATA_DIR=/data
networks:
- titanic_dev_network
networks:
titanic_dev_network:
driver: bridge
volumes:
titanic_dev_cache:
driver: local
secrets:
admin-sdk-cred:
file: ./backend/admin-sdk-cred.json