Add mergedrop: drag-and-drop video merger (ffmpeg + FastAPI + React)
This commit is contained in:
28
apps/mergedrop/build/README.md
Normal file
28
apps/mergedrop/build/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# MergeDrop image build
|
||||
|
||||
The Dockerfile and full source for the **MergeDrop** image live in a separate Gitea repo:
|
||||
|
||||
- Source: <https://git.alexzaw.dev/alexz/video-merger>
|
||||
- Published image: `git.alexzaw.dev/alexz/mergedrop:<tag>`
|
||||
|
||||
This folder holds only a thin helper script (`build.sh`) that clones the source
|
||||
repo and pushes the resulting image to the in-house Docker registry.
|
||||
|
||||
## Rebuild
|
||||
|
||||
```bash
|
||||
cd build/
|
||||
./build.sh # builds + pushes :latest and the version tag
|
||||
IMAGE_TAG=1.0.1 ./build.sh # override the tag
|
||||
```
|
||||
|
||||
Requires `docker login git.alexzaw.dev` to already be done (or `~/.docker/config.json`
|
||||
to have the registry credentials, which is the case on this host).
|
||||
|
||||
## Notes
|
||||
|
||||
- The image is a two-stage build (Node 20 → Python 3.11-slim) and produces an
|
||||
`amd64` image only. Add `--platform linux/arm64` to `build.sh` args to cross-build.
|
||||
- The application is a single FastAPI process that serves the static React build
|
||||
and a `/api/*` JSON API on the same port (`8000` inside the container).
|
||||
- `ffmpeg` is installed in the runtime image; no host-level ffmpeg required.
|
||||
37
apps/mergedrop/build/build.sh
Executable file
37
apps/mergedrop/build/build.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
# Build and push the MergeDrop Docker image.
|
||||
# Clones the source repo (or reuses an existing checkout) and tags/pushes
|
||||
# both :latest and the version tag.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
IMAGE_NAME="${IMAGE_NAME:-git.alexzaw.dev/alexz/mergedrop}"
|
||||
IMAGE_TAG="${IMAGE_TAG:-1.0.0}"
|
||||
SOURCE_REPO="${SOURCE_REPO:-https://git.alexzaw.dev/alexz/video-merger.git}"
|
||||
WORKDIR="${WORKDIR:-/tmp/mergedrop-build}"
|
||||
|
||||
echo "==> Preparing source at ${WORKDIR}"
|
||||
if [[ -d "${WORKDIR}/.git" ]]; then
|
||||
git -C "${WORKDIR}" fetch --quiet origin
|
||||
git -C "${WORKDIR}" reset --hard --quiet origin/HEAD
|
||||
else
|
||||
rm -rf "${WORKDIR}"
|
||||
git clone --quiet "${SOURCE_REPO}" "${WORKDIR}"
|
||||
fi
|
||||
|
||||
echo "==> Building ${IMAGE_NAME}:${IMAGE_TAG} (and :latest)"
|
||||
cd "${WORKDIR}"
|
||||
docker build "$@" \
|
||||
-t "${IMAGE_NAME}:${IMAGE_TAG}" \
|
||||
-t "${IMAGE_NAME}:latest" \
|
||||
.
|
||||
|
||||
echo "==> Pushing ${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
docker push "${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
echo "==> Pushing ${IMAGE_NAME}:latest"
|
||||
docker push "${IMAGE_NAME}:latest"
|
||||
|
||||
echo ""
|
||||
echo "Done. To install on Runtipi:"
|
||||
echo " sudo /etc/runtipi/runtipi-cli appstore update"
|
||||
echo " sudo /etc/runtipi/runtipi-cli app install mergedrop:runtipi"
|
||||
Reference in New Issue
Block a user