summaryrefslogtreecommitdiff
path: root/docker-compose.yml
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-07-30 18:17:45 +0200
committercashmere <cashmere@autistici.org>2026-07-30 18:18:15 +0200
commited02ba872c02eafed45f406c68d389d0a1112a4e (patch)
tree40530d77cfe306621915f067c66531cb9e783a4d /docker-compose.yml
parente837e7504379e100ff3b56282577ec67bb88bec9 (diff)
downloadopencut-ed02ba872c02eafed45f406c68d389d0a1112a4e.tar.gz
feat: Electron desktop app, native ffmpeg export, fully static web
- apps/desktop: Electron shell serving the static web build over a privileged opencut:// protocol; exports stream frames over IPC to a bundled ffmpeg (libx264/libvpx-vp9, BT.709 tagged) with backpressure. electron-builder packaging: AppImage, deb, rpm. - apps/web: dead backend deleted (better-auth, drizzle/pg, upstash, botid, freesound proxy, blog, rss, env validation); next build emits a zero-env static export; /editor/[project_id] -> /editor?project=. - Native exporter mirrors SceneExporter; activates when the preload bridge is present; web keeps the mediabunny path. - Docker self-hosting now builds and serves the static export via nginx. - Release workflow: v* tags publish static web tarball + Linux packages. - Changelog 0.4.0; README/AGENTS/CONTRIBUTING/roadmap updated. - GPUI/Rust rewrite parked on branch rust-rewrite.
Diffstat (limited to 'docker-compose.yml')
-rw-r--r--docker-compose.yml80
1 files changed, 1 insertions, 79 deletions
diff --git a/docker-compose.yml b/docker-compose.yml
index 0c4983b3..f80459f6 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,89 +1,11 @@
services:
- db:
- image: postgres:17
- restart: unless-stopped
- environment:
- POSTGRES_USER: opencut
- POSTGRES_PASSWORD: opencut
- POSTGRES_DB: opencut
- volumes:
- - postgres_data:/var/lib/postgresql/data
- ports:
- - "5432:5432"
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U opencut"]
- interval: 30s
- timeout: 10s
- retries: 5
- start_period: 10s
-
- redis:
- image: redis:7-alpine
- restart: unless-stopped
- ports:
- - "6379:6379"
- healthcheck:
- test: ["CMD", "redis-cli", "ping"]
- interval: 30s
- timeout: 10s
- retries: 5
- start_period: 10s
-
- serverless-redis-http:
- image: hiett/serverless-redis-http:latest
- ports:
- - "8079:80"
- environment:
- SRH_MODE: env
- SRH_TOKEN: example_token
- SRH_CONNECTION_STRING: "redis://redis:6379"
- depends_on:
- redis:
- condition: service_healthy
- healthcheck:
- test: ["CMD-SHELL", "wget --spider -q http://127.0.0.1:80 || exit 1"]
- interval: 30s
- timeout: 10s
- retries: 5
- start_period: 10s
-
web:
build:
context: .
dockerfile: ./apps/web/Dockerfile
- args:
- - FREESOUND_CLIENT_ID=${FREESOUND_CLIENT_ID}
- - FREESOUND_API_KEY=${FREESOUND_API_KEY}
- - NEXT_PUBLIC_MARBLE_API_URL=${NEXT_PUBLIC_MARBLE_API_URL:-https://api.marblecms.com}
- - MARBLE_WORKSPACE_KEY=${MARBLE_WORKSPACE_KEY:-build-placeholder}
restart: unless-stopped
ports:
- - "3100:3000"
- environment:
- - NODE_ENV=production
- - DATABASE_URL=postgresql://opencut:opencut@db:5432/opencut
- - BETTER_AUTH_SECRET=your-production-secret-key-here
- - UPSTASH_REDIS_REST_URL=http://serverless-redis-http:80
- - UPSTASH_REDIS_REST_TOKEN=example_token
- - NEXT_PUBLIC_SITE_URL=http://localhost:3100
- - NEXT_PUBLIC_MARBLE_API_URL=https://api.marblecms.com
- - MARBLE_WORKSPACE_KEY=${MARBLE_WORKSPACE_KEY:-placeholder}
- - FREESOUND_CLIENT_ID=${FREESOUND_CLIENT_ID}
- - FREESOUND_API_KEY=${FREESOUND_API_KEY}
- depends_on:
- db:
- condition: service_healthy
- serverless-redis-http:
- condition: service_healthy
- healthcheck:
- test: ["CMD-SHELL", "curl -f http://localhost:3000/api/health || exit 1"]
- interval: 30s
- timeout: 10s
- retries: 5
- start_period: 30s
-
-volumes:
- postgres_data:
+ - "3000:80"
networks:
default: