diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30bcfa4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.build/ diff --git a/README.md b/README.md index 6c334a9..3a9f699 100644 --- a/README.md +++ b/README.md @@ -6,24 +6,100 @@ Collection of Dockerfiles created to build & pack various tools.
-- [1. Tools](#1-tools) - - [1.1. Bandwhich](#11-bandwhich) +- [1. How to use](#1-how-to-use) + - [1.1. CLI](#11-cli) +- [2. Tools](#2-tools) + - [2.1. Bandwhich](#21-bandwhich) + - [2.2. auto-editor](#22-auto-editor) + - [2.3. synapse-compress-state](#23-synapse-compress-state)
-# 1. Tools +# 1. How to use -## 1.1. Bandwhich +Run the build-script `scripts/build.sh` with the path to the tool you want to build. -### 1.1.1. Source +
+ +The docker-image will be tagged with `default` and the detected version/commit-hash. + +You can add more tags or change the existing tag-naming-scheme using the environment-variable `TAG`. + +
+ +## 1.1. CLI + +`scripts/build.sh [extra-args for docker build ..]` + +
+ +### 1.1.1. Example +`scripts/build.sh tools/bandwhich/` + +
+ +### 1.1.2. Environment-Variables + +Variable | Description | Default +-|-|- +`TAG` | Tag for Docker-building | `TAGPREFIX` + `NAME` +`TAGPREFIX` | Set a prefix to the default-tag | - +`NAME` | Change the name used in the tag | *FolderName* + +
+ +# 2. Tools + +## 2.1. Bandwhich + +### 2.1.1. Source >This is a CLI utility for displaying current network utilization by process, connection and remote IP/hostname https://github.com/imsnif/bandwhich
-### 1.1.2. Example +### 2.1.2. Example ``` docker run -it --net host bandwhich -i eth0 ``` + +
+ +## 2.2. auto-editor + +### 2.2.1. Source +>Auto-Editor is a command line application for automatically editing video and audio by analyzing a variety of methods, most notably audio loudness. + +https://github.com/WyattBlue/auto-editor + +
+ +### 2.2.2. Example +Speed-up silent part of videos: +``` +docker run -v /home/ruakij/Videos:/video auto-build --no-open --silent-speed 8 --margin 0.2sec "input.webm" -o edited.mp4 +``` + +
+ +### 2.2.3. Comment +TODO: Unfortunately the tool requires ffmpeg which is a huge tool and blows up the size of the image. I have to find a way to use a minimized version of it. + +
+ +## 2.3. synapse-compress-state +Includes synapse_auto_compressor + +### 2.3.1. Source +>This workspace contains experimental tools that attempt to reduce the number of rows in the state_groups_state table inside of a Synapse Postgresql database. + +https://github.com/matrix-org/rust-synapse-compress-state + +
+ +### 2.3.2. Example +``` +docker run --net container:synapse ghcr.io/ruakij/dockerbuilds/synapse-compress-state:latest synapse_auto_compressor -p postgresql://synapse:synapse@127.0.0.1/synapse -c 500 -n 100 +``` diff --git a/scripts/build.sh b/scripts/build.sh index 5eb74c5..dc55d30 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,9 +1,21 @@ -#!/bin/sh +#!/bin/bash scriptPath_file=$(dirname "${BASH_SOURCE[0]}") scriptPath_folder=$(realpath "${scriptPath_file}") utils_path="${scriptPath_folder}/utils" +WORKDIR=${1:-$PWD} +WORKDIR=$(realpath "$WORKDIR") + +# -- VARIABLES -- +# Store original path +ORIGINALDIR=$PWD + +# Get args without path +EXTRA_ARGS="${@:2}" + + + # Call prepare printf "# PREPARE\n" source ${utils_path}/prepare.sh @@ -12,3 +24,7 @@ source ${utils_path}/prepare.sh printf "# BUILD\n" build_type=${BUILD:-"ownarch"} source ${utils_path}/build-${build_type}.sh + + +# Switch back to original path +cd $ORIGINALDIR diff --git a/scripts/utils/build-multiarch.sh b/scripts/utils/build-multiarch.sh index 62520b5..56794c4 100755 --- a/scripts/utils/build-multiarch.sh +++ b/scripts/utils/build-multiarch.sh @@ -1,10 +1,9 @@ #!/bin/bash -TAG=${TAG:-"${TAG_PREFIX}${NAME}"} PLATFORM=${PLATFORM:-"linux/amd64,linux/arm64/v8,linux/arm/v7"} -EXTRA_ARGS=${EXTRA_ARGS:-"$@"} docker buildx build \ --platform $PLATFORM \ +--tag $TAG:latest \ --tag "${TAG}:${VERSION}" \ $EXTRA_ARGS \ -. +$WORKDIR diff --git a/scripts/utils/build-ownarch.sh b/scripts/utils/build-ownarch.sh index f45d297..1f43303 100755 --- a/scripts/utils/build-ownarch.sh +++ b/scripts/utils/build-ownarch.sh @@ -1,8 +1,7 @@ #!/bin/bash -TAG=${TAG:-"${TAG_PREFIX}${NAME}"} -EXTRA_ARGS=${EXTRA_ARGS:-"$@"} docker build \ +--tag $TAG:latest \ --tag $TAG:$VERSION \ $EXTRA_ARGS \ -. +"$WORKDIR" diff --git a/scripts/utils/prepare.sh b/scripts/utils/prepare.sh index 16668ca..8159b74 100755 --- a/scripts/utils/prepare.sh +++ b/scripts/utils/prepare.sh @@ -1,24 +1,33 @@ -#!/bin/sh +#!/bin/bash # --- VARIABLES --- # Load variables -source $PWD/info.env +source $WORKDIR/info.env # Check if certain vars are overwritten, set them if missing if [ "${NAME}" = "" ]; then - NAME="$(basename $PWD)" + NAME="$(basename $WORKDIR)" fi export NAME printf "Name: ${NAME}\n" +repositoryFolder="$WORKDIR/.build/repository" # --- SOURCES --- -alias git="git -C .build/repository" # Get sources locally -if ! [ -d .build/repository ]; then - git clone "${GIT_REPOSITORY}" .build/repository -else - git checkout - # Checkout previous branch in case GIT_CHECKOUT was different +if ! [ -d "$repositoryFolder" ]; then + git clone "${GIT_REPOSITORY}" "$repositoryFolder" + cloned=True +fi + +# Change into repository +cd "$repositoryFolder" + +if [ "$cloned" != True ]; then + # Checkout default-branch in case GIT_CHECKOUT was different + defaultBranch=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@') + git checkout "${defaultBranch}" + git pull # Get changes fi @@ -42,5 +51,5 @@ fi export VERSION printf "Version: ${VERSION}\n" -TAG=${TAG:-"${TAG_PREFIX}${NAME}"} +TAG=${TAG:-"${TAGPREFIX}${NAME}"} printf "> ${TAG}\n" diff --git a/tools/auto-editor/Dockerfile b/tools/auto-editor/Dockerfile new file mode 100644 index 0000000..d1efce1 --- /dev/null +++ b/tools/auto-editor/Dockerfile @@ -0,0 +1,24 @@ +# ---- Base ---- +FROM python:slim AS base +#ENV PYTHONDONTWRITEBYTECODE=1 +WORKDIR /app +# Install packages +RUN apt update && apt install -y ffmpeg && rm -rf /var/lib/apt/lists/* +#RUN pip install --no-compile --no-cache-dir ae-ffmpeg +#COPY .build/repository/ae-ffmpeg/ae_ffmpeg/Darwin-x86_64/* /usr/bin/ + +# ---- Build ---- +FROM base AS build +ENV PYTHONDONTWRITEBYTECODE=1 +# Copy sources +ADD .build/repository/auto_editor auto_editor +ADD .build/repository/setup.py . +ADD .build/repository/README.md . +# Run install +RUN pip install --no-compile --no-cache-dir -e . + +# ---- Release ---- +FROM build AS release +WORKDIR /videos + +ENTRYPOINT ["auto-editor"] diff --git a/tools/auto-editor/info.env b/tools/auto-editor/info.env new file mode 100644 index 0000000..fab8c9d --- /dev/null +++ b/tools/auto-editor/info.env @@ -0,0 +1,2 @@ +GIT_REPOSITORY=https://github.com/WyattBlue/auto-editor +TAG=latest-tag diff --git a/tools/synapse-compress-state/Dockerfile b/tools/synapse-compress-state/Dockerfile new file mode 100644 index 0000000..765a6b4 --- /dev/null +++ b/tools/synapse-compress-state/Dockerfile @@ -0,0 +1,32 @@ +# ---- Base ---- +FROM alpine AS base +WORKDIR /app +# Install dependencies +RUN apk add --no-cache libgcc libssl1.1 libc6-compat + +# ---- Build ---- +FROM rust:alpine3.16 AS build +WORKDIR /build +# Install packages +RUN apk add python3 musl-dev pkgconfig openssl-dev make +# Set build-flags +ENV RUSTFLAGS="-C target-feature=-crt-static" +# Copy sources +ADD .build/repository/ . + +FROM build AS build-synapse_compress-state +# Update dependencies and Compile +RUN cargo update && cargo build --release + +FROM build AS build-synapse_auto_compressor +# Update dependencies and Compile +RUN cd synapse_auto_compressor/ && cargo update && cargo build --release + + +# ---- Release ---- +FROM base AS release +## Copy build-target +COPY --from=build-synapse_compress-state /build/target/release/synapse_compress_state . +COPY --from=build-synapse_auto_compressor /build/target/release/synapse_auto_compressor . + +ENTRYPOINT ["./synapse_compress_state"] diff --git a/tools/synapse-compress-state/info.env b/tools/synapse-compress-state/info.env new file mode 100644 index 0000000..e15b00c --- /dev/null +++ b/tools/synapse-compress-state/info.env @@ -0,0 +1 @@ +GIT_REPOSITORY=https://github.com/matrix-org/rust-synapse-compress-state