Compare commits

..

21 Commits

@ -11,13 +11,14 @@ Collection of Dockerfiles created to build & pack various tools.
- [2. Tools](#2-tools) - [2. Tools](#2-tools)
- [2.1. Bandwhich](#21-bandwhich) - [2.1. Bandwhich](#21-bandwhich)
- [2.2. auto-editor](#22-auto-editor) - [2.2. auto-editor](#22-auto-editor)
- [2.3. synapse-compress-state](#23-synapse-compress-state)
<!-- /TOC --> <!-- /TOC -->
<br> <br>
# 1. How to use # 1. How to use
Run the build-script `script/build.sh` with the path to the tool you want to build. Run the build-script `scripts/build.sh` with the path to the tool you want to build.
<br> <br>
@ -29,11 +30,16 @@ You can add more tags or change the existing tag-naming-scheme using the environ
## 1.1. CLI ## 1.1. CLI
`script/build.sh <toolPath> [extra-args for docker build ..]` `scripts/build.sh <toolPath> [extra-args for docker build ..]`
<br> <br>
### 1.1.1. Environment-Variables ### 1.1.1. Example
`scripts/build.sh tools/bandwhich/`
<br>
### 1.1.2. Environment-Variables
Variable | Description | Default Variable | Description | Default
-|-|- -|-|-
@ -56,9 +62,17 @@ https://github.com/imsnif/bandwhich
### 2.1.2. Example ### 2.1.2. Example
``` ```
docker run -it --net host bandwhich -i eth0 docker run --rm -v /proc:/proc ghcr.io/ruakij/dockerbuilds/bandwhich:latest -n -i eth0
``` ```
|||
-|-
`--rm` * | Removes the container when its stopped
`-v /proc:/proc` * | Makes Process identification from host-processes possible
`-n` * | Dont resolve IPs
`-i eth0` * | Only check on eth0 interface
*\* is Optional*
<br> <br>
## 2.2. auto-editor ## 2.2. auto-editor
@ -80,3 +94,20 @@ docker run -v /home/ruakij/Videos:/video auto-build --no-open --silent-speed 8 -
### 2.2.3. Comment ### 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. 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.
<br>
## 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
<br>
### 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
```

@ -14,7 +14,6 @@ ORIGINALDIR=$PWD
# Get args without path # Get args without path
EXTRA_ARGS="${@:2}" EXTRA_ARGS="${@:2}"
TAG=${TAG:-"${TAG_PREFIX}${NAME}"}
# Call prepare # Call prepare

@ -2,8 +2,7 @@
PLATFORM=${PLATFORM:-"linux/amd64,linux/arm64/v8,linux/arm/v7"} PLATFORM=${PLATFORM:-"linux/amd64,linux/arm64/v8,linux/arm/v7"}
docker buildx build \ docker buildx build \
--platform $PLATFORM \ --platform $PLATFORM \
--tag $TAG:latest \ $TAGS_ARG \
--tag "${TAG}:${VERSION}" \ $EXTRA_ARGS \
$EXTRA_ARGS \ $WORKDIR
$WORKDIR

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
docker build \ docker build \
--tag $TAG:latest \ $TAGS_ARG \
--tag $TAG:$VERSION \ $EXTRA_ARGS \
$EXTRA_ARGS \ "$WORKDIR"
"$WORKDIR"

@ -28,28 +28,52 @@ if [ "$cloned" != True ]; then
defaultBranch=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@') defaultBranch=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
git checkout "${defaultBranch}" git checkout "${defaultBranch}"
git pull # Get changes git pull # Get changes
fi fi
# Checkout when set # Checkout when set
if [ "$GIT_CHECKOUT" != "" ]; then if [ "$GIT_CHECKOUT" != "" ]; then
# Handle special directives # Handle special directives
if [ "$GIT_CHECKOUT" = "latest-tag" ]; then if [ "$GIT_CHECKOUT" = "latest-tag" ]; then
GIT_CHECKOUT=$(git describe --tags `git rev-list --tags --max-count=1`) # Get latest tag GIT_CHECKOUT=$(git describe --tags $(git rev-list --tags --max-count=1)) # Get latest tag
fi fi
git checkout $GIT_CHECKOUT git checkout $GIT_CHECKOUT
fi fi
# --- VERSION --- # --- VERSION ---
# Get current version to build # When not set
VERSION=$(git describe --tags --long) if [ "$GIT_CHECKOUT" == "" ]; then
if [ $? -ne 0 ]; then # Get current version to build
VERSION=$(git rev-parse HEAD) VERSION=$(git describe --tags --long)
if [ $? -ne 0 ]; then
VERSION=$(git rev-parse HEAD)
fi
export VERSION
fi fi
export VERSION
printf "Version: ${VERSION}\n" printf "Version: ${VERSION}\n"
TAG=${TAG:-"${TAG_PREFIX}${NAME}"} # --- TAGS ---
printf "> ${TAG}\n" IFS='-.' read -ra ADDR <<<"$VERSION"
TAG_VERS=("latest")
currentTag="${ADDR[0]}"
TAG_VERS+=("$currentTag")
for i in $(seq 1 $((${#ADDR[@]} - 1))); do
delimiter="."
if [[ $VERSION == *"${currentTag}-${ADDR[$i]}"* ]]; then
delimiter="-"
fi
currentTag="${currentTag}${delimiter}${ADDR[$i]}"
TAG_VERS+=("$currentTag")
done
# Generate TAG_VERS_ARG
printf "TAG_VERS:\n"
for tag_ver in "${TAG_VERS[@]}"; do
TAG="${TAGPREFIX}${NAME}:${tag_ver}"
TAGS_ARG="$TAGS_ARG --tag $TAG"
echo "- $TAG"
done

@ -1,17 +1,15 @@
# ---- Base ---- # ---- Base ----
FROM alpine:3 AS base FROM debian:stable-slim AS base
WORKDIR /app WORKDIR /app
# ---- Build ---- # ---- Build ----
FROM rust:1.65.0-slim AS build FROM rust:1.79.0-slim AS build
WORKDIR /build WORKDIR /build
# Install packages
RUN apt update && apt install -y make
# Copy sources # Copy sources
ADD .build/repository/ . ADD .build/repository/ .
# Update dependencies and Compile # Compile
RUN cargo update && TARGET="release" make RUN cargo build --release
# ---- Release ---- # ---- Release ----

@ -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_auto_compressor"]

@ -0,0 +1 @@
GIT_REPOSITORY=https://github.com/matrix-org/rust-synapse-compress-state
Loading…
Cancel
Save