Sumner Evans пре 3 година
родитељ
комит
3540f8a5ca
2 измењених фајлова са 57 додато и 0 уклоњено
  1. 21 0
      Dockerfile
  2. 36 0
      docker-run.sh

+ 21 - 0
Dockerfile

@@ -0,0 +1,21 @@
+FROM golang:1-alpine3.15 AS builder
+
+RUN apk add --no-cache git ca-certificates build-base su-exec olm-dev
+
+COPY . /build
+WORKDIR /build
+RUN go build -o /usr/bin/mautrix-discord
+
+FROM alpine:3.15
+
+ENV UID=1337 \
+    GID=1337
+
+RUN apk add --no-cache ffmpeg su-exec ca-certificates olm bash jq yq curl
+
+COPY --from=builder /usr/bin/mautrix-discord /usr/bin/mautrix-discord
+COPY --from=builder /build/example-config.yaml /opt/mautrix-discord/example-config.yaml
+COPY --from=builder /build/docker-run.sh /docker-run.sh
+VOLUME /data
+
+CMD ["/docker-run.sh"]

+ 36 - 0
docker-run.sh

@@ -0,0 +1,36 @@
+#!/bin/sh
+
+if [[ -z "$GID" ]]; then
+	GID="$UID"
+fi
+
+# Define functions.
+function fixperms {
+	chown -R $UID:$GID /data
+
+	# /opt/mautrix-discord is read-only, so disable file logging if it's pointing there.
+	if [[ "$(yq e '.logging.directory' /data/config.yaml)" == "./logs" ]]; then
+		yq -I4 e -i '.logging.file_name_format = ""' /data/config.yaml
+	fi
+}
+
+if [[ ! -f /data/config.yaml ]]; then
+	cp /opt/mautrix-discord/example-config.yaml /data/config.yaml
+	echo "Didn't find a config file."
+	echo "Copied default config file to /data/config.yaml"
+	echo "Modify that config file to your liking."
+	echo "Start the container again after that to generate the registration file."
+	exit
+fi
+
+if [[ ! -f /data/registration.yaml ]]; then
+	/usr/bin/mautrix-discord -g -c /data/config.yaml -r /data/registration.yaml
+	echo "Didn't find a registration file."
+	echo "Generated one for you."
+	echo "See https://docs.mau.fi/bridges/general/registering-appservices.html on how to use it."
+	exit
+fi
+
+cd /data
+fixperms
+exec su-exec $UID:$GID /usr/bin/mautrix-discord