diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-02-23 09:38:38 +0100 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-02-23 09:38:38 +0100 |
| commit | dbfecbba59bb37aa73a133987230f6badecb080c (patch) | |
| tree | 005ca21ed66d2be4f1fc3c175f21b5e125d7eb1b /docker-compose.yml | |
| parent | 86a3592c88575d8824aff2b3f0b27eef84700741 (diff) | |
| download | opencut-dbfecbba59bb37aa73a133987230f6badecb080c.tar.gz | |
docker + update readme
Diffstat (limited to 'docker-compose.yml')
| -rw-r--r-- | docker-compose.yml | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..ae75391e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,94 @@ +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} + 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} + # Transcription (Optional - leave blank to disable auto-captions) + - CLOUDFLARE_ACCOUNT_ID=${CLOUDFLARE_ACCOUNT_ID:-placeholder} + - R2_ACCESS_KEY_ID=${R2_ACCESS_KEY_ID:-placeholder} + - R2_SECRET_ACCESS_KEY=${R2_SECRET_ACCESS_KEY:-placeholder} + - R2_BUCKET_NAME=${R2_BUCKET_NAME:-opencut-transcription} + - MODAL_TRANSCRIPTION_URL=${MODAL_TRANSCRIPTION_URL:-http://localhost:0} + 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: + +networks: + default: + name: opencut-network |
