Switch to upstream docker image + jemalloc

This commit is contained in:
Tulir Asokan 2021-02-11 19:15:24 +02:00
parent 30ec814d3b
commit 5f45d6e449

View File

@ -1,58 +1,65 @@
FROM debian:buster-slim ARG PYTHON_VERSION=3.8
MAINTAINER Tulir Asokan <tulir@maunium.net> FROM docker.io/python:${PYTHON_VERSION}-slim as builder
RUN set -ex && export DEBIAN_FRONTEND=noninteractive \ # install the OS build deps
&& apt-get clean \ RUN apt-get update && apt-get install -y \
&& apt-get update -y -q --fix-missing \ build-essential \
&& apt-get upgrade -y \ libffi-dev \
&& apt-get install -y --no-install-recommends \ libjpeg-dev \
libffi6 \ libpq-dev \
libjpeg62-turbo \ libssl-dev \
libssl1.1 \ libwebp-dev \
libtool \ libxml++2.6-dev \
libxml2 \ libxslt1-dev \
libpq5 \ zlib1g-dev \
libxslt1.1 \ git \
python3 \ && rm -rf /var/lib/apt/lists/*
python3-setuptools \
libjemalloc2 \
zlib1g
COPY . /synapse # Build dependencies that are not available as wheels, to speed up rebuilds
WORKDIR /synapse RUN pip install --prefix="/install" --no-warn-script-location \
frozendict \
jaeger-client \
opentracing \
# Match the version constraints of Synapse
"prometheus_client>=0.4.0" \
psycopg2 \
pycparser \
pyrsistent \
pyyaml \
simplejson \
threadloop \
thrift
RUN set -ex && export DEBIAN_FRONTEND=noninteractive \ # now install synapse and all of the python deps to /install.
&& buildDeps=' \ COPY synapse /synapse/synapse/
file \ COPY scripts /synapse/scripts/
gcc \ COPY MANIFEST.in README.rst setup.py synctl /synapse/
git \
libevent-dev \ RUN pip install --prefix="/install" --no-warn-script-location \
libffi-dev \ /synapse[all] \
libgnutls28-dev \ 'git+https://github.com/maunium/synapse-simple-antispam#egg=synapse-simple-antispam' \
libjpeg62-turbo-dev \ 'git+https://github.com/devture/matrix-synapse-shared-secret-auth#egg=shared_secret_authenticator'
libldap2-dev \
libsasl2-dev \ FROM docker.io/python:${PYTHON_VERSION}-slim
libssl-dev \
libtool \ RUN apt-get update && apt-get install -y \
libxml2-dev \ curl \
libxslt1-dev \ gosu \
linux-headers-amd64 \ libjpeg62-turbo \
zlib1g-dev \ libpq5 \
python3-dev \ libwebp6 \
python3-pip \ xmlsec1 \
libpq-dev' \ libjemalloc2 \
&& apt-get install -y --no-install-recommends $buildDeps \ && rm -rf /var/lib/apt/lists/*
&& pip3 install --upgrade wheel \
&& pip3 install --upgrade .[all] \ COPY --from=builder /install /usr/local
'git+https://github.com/maunium/synapse-simple-antispam#egg=synapse-simple-antispam' \
'git+https://github.com/devture/matrix-synapse-shared-secret-auth#egg=shared_secret_authenticator' \
&& apt-get purge --auto-remove -y $buildDeps \
&& apt-get clean \
&& rm -rf /synapse
VOLUME ["/data"] VOLUME ["/data"]
ENV LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libjemalloc.so.2" ENV LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libjemalloc.so.2"
ENTRYPOINT ["python3", "-m", "synapse.app.homeserver"] ENTRYPOINT ["python3", "-m", "synapse.app.homeserver"]
CMD ["--keys-directory", "/data", "-c", "/data/homeserver.yaml"] CMD ["--keys-directory", "/data", "-c", "/data/homeserver.yaml"]
HEALTHCHECK --interval=1m --timeout=5s \
CMD curl -fSs http://localhost:8008/health || exit 1