Add Dockerfile, docker-compose stack, Kubernetes manifests, and CI workflow#1
Open
matmlazi wants to merge 3 commits into
Open
Add Dockerfile, docker-compose stack, Kubernetes manifests, and CI workflow#1matmlazi wants to merge 3 commits into
matmlazi wants to merge 3 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Full container stack: multi-target Dockerfile (with upstream base selection), docker-compose for local dev, Kubernetes manifests under
deploy/k8s/, and a GHA matrix build.Upstream image analysis
Each service runs model sub-processes in separate per-model venvs via
venv_python+runner.py. There is no upstream image that matches this subprocess pattern for whisperx, chatterbox, or m2m100. The one genuine upstream win is the orchestrator:beveradb/audio-separatoraudio-separator,ffmpeg,rubberband,torch,onnxruntimepre-installed — exactly what the orchestrator needspython:3.11-slimpython:3.11-slimpython:3.11-slimnginx:1.27-alpineDockerfile changes
Replaced the single
ARG SERVICEpattern with named multi-stage targets:Model sub-venvs are now installed at build time (
uv sync --frozen --project models/<X>) so they're baked into the image rather than built at first request.Kubernetes manifests (
deploy/k8s/)Apply:
Other changes
8080so the frontend container can run non-root (runAsUser: 101)USER nginx, port8080, file ownership fixed--target final-<service>matrix; image tags useghcr.io/codemowers/bluez-dubbing/<service>:<sha>Risk / open items
beveradb/audio-separatordoesn't guarantee a stable tag — pin to a digest or a versioned tag before production.model-cache-pvcisReadWriteOnce— if you scale any service to >1 replica you'll needReadWriteManyor per-pod EmptyDir + model download init containers.outs-pvcanduploads-pvcareReadWriteMany; confirm your storage class supports it (NFS, CephFS, etc.) or switch toReadWriteOncewith a single-replica orchestrator.