Updates galore. Improved folder structure, componentized, and notifications upon completion.

This commit is contained in:
Brian McGonagill 2026-03-17 14:01:35 -05:00
parent b48784e2ad
commit 7e0502ca40
33 changed files with 3565 additions and 728 deletions

View file

@ -13,13 +13,20 @@
services:
videopress:
# build:
# context: .
# dockerfile: Dockerfile
build:
context: .
dockerfile: Dockerfile
# ── Alternatively, use a pre-built image: ───────────────────────────────
image: bmcgonag/videopress:latest
# image: videopress:latest
container_name: videopress
# Run as UID:GID 1000:1000 (matches the 'appuser' created in the Dockerfile).
# This ensures the container can write to bind-mounted host directories
# that are owned by UID 1000.
user: "1000:1000"
restart: unless-stopped
# ── Port mapping ─────────────────────────────────────────────────────────
@ -38,8 +45,19 @@ services:
# You can also set MEDIA_HOST_PATH as an environment variable before
# running docker compose:
# export MEDIA_HOST_PATH=/mnt/nas/videos && docker compose up -d
#
# IMPORTANT — before first run, create the data directory on the HOST
# and give it to UID 1000 (the container's non-root user) so SQLite can
# write the settings database:
#
# mkdir -p ./data
# chown 1000:1000 ./data
#
# If you skip this step Docker will create ./data as root and the
# container will fail to start with "unable to open database file".
volumes:
- ${MEDIA_HOST_PATH:-/path/to/your/videos}:/media
- ./data:/data
# ── Environment variables ─────────────────────────────────────────────────
environment:
@ -47,6 +65,10 @@ services:
# Must match the right-hand side of the volume mount above.
MEDIA_ROOT: /media
# SQLite database path inside the container.
# Must match the right-hand side of the ./data:/data volume mount.
DB_PATH: /data/videopress.db
# TCP port Gunicorn listens on (must match EXPOSE in Dockerfile and
# the right-hand side of the ports mapping above).
PORT: 8080
@ -57,15 +79,14 @@ services:
# ── Resource limits (optional — uncomment to enable) ─────────────────────
# Compressing large video files is CPU-intensive. Limits prevent the
# container from starving other workloads on the host.
# Feel free to comment out this whole section if youw ant it to run full blast.
deploy:
resources:
limits:
cpus: '4'
memory: 2G
reservations:
cpus: '1'
memory: 512M
# deploy:
# resources:
# limits:
# cpus: '4'
# memory: 2G
# reservations:
# cpus: '1'
# memory: 512M
# ── Health check ──────────────────────────────────────────────────────────
healthcheck: