diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..2c3f4374 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +FROM docker.io/alpine:3.7 + +ENV UID=1337 \ + GID=1337 + +COPY . /opt/mautrixtelegram +RUN apk add --no-cache \ + python3-dev \ + py3-virtualenv \ + build-base \ + zlib-dev \ + jpeg-dev \ + libxslt-dev \ + libxml2-dev \ + libmagic \ + ffmpeg \ + bash \ + ca-certificates \ + su-exec \ + s6 \ + && cd /opt/mautrixtelegram \ + && cp -r docker/root/* / \ + && rm docker -rf \ + && virtualenv -p /usr/bin/python3 .venv \ + && source .venv/bin/activate \ + && pip install -r requirements.txt -r optional-requirements.txt + +VOLUME /data + +CMD ["/bin/s6-svscan", "/etc/s6.d"] diff --git a/docker/root/etc/s6.d/.s6-svscan/finish b/docker/root/etc/s6.d/.s6-svscan/finish new file mode 100755 index 00000000..1a248525 --- /dev/null +++ b/docker/root/etc/s6.d/.s6-svscan/finish @@ -0,0 +1 @@ +#!/bin/sh diff --git a/docker/root/etc/s6.d/mautrix-telegram/finish b/docker/root/etc/s6.d/mautrix-telegram/finish new file mode 100755 index 00000000..e90c4912 --- /dev/null +++ b/docker/root/etc/s6.d/mautrix-telegram/finish @@ -0,0 +1,2 @@ +#!/bin/bash +s6-svscanctl -t /etc/s6.d diff --git a/docker/root/etc/s6.d/mautrix-telegram/run b/docker/root/etc/s6.d/mautrix-telegram/run new file mode 100755 index 00000000..c6b7582c --- /dev/null +++ b/docker/root/etc/s6.d/mautrix-telegram/run @@ -0,0 +1,40 @@ +#!/bin/bash + +# Define functions +function fixperms { + chown -R ${UID}:${GID} /data /opt/mautrixtelegram +} + + +# Go into env +cd /opt/mautrixtelegram +source .venv/bin/activate + +# Replace database path in alembic.ini +sed -i "s#sqlite:///mautrix-telegram.db#sqlite:////data/mautrix-telegram.db#" alembic.ini +sed -i "s#sqlite:///mautrix-telegram.db#sqlite:////data/mautrix-telegram.db#" /data/config.yaml + +# Check that database is in the right state +alembic upgrade head + +if [[ ! -f /data/config.yaml ]]; then + cp 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." + fixperms + exit +fi + +if [[ ! -f /data/registration.yaml ]]; then + python -m mautrix_telegram -g -c /data/config.yaml -r /data/registration.yaml + echo "Didn't find a registration file." + echo "Generated ode for you." + echo "Copy that over to synapses app service directory." + fixperms + exit +fi + +fixperms +exec su-exec ${UID}:${GID} python -m mautrix_telegram -c /data/config.yaml