From 9040815ab963706ebe04445474594821f8b3ab13 Mon Sep 17 00:00:00 2001 From: Adrien le Maire Date: Thu, 29 Apr 2021 16:35:16 +0000 Subject: [PATCH] Update synapse/Dockerfile, synapse/Makefile files --- synapse/Dockerfile | 154 +++++++++++++++++++++++++++++++++++++++++++++ synapse/Makefile | 2 +- 2 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 synapse/Dockerfile diff --git a/synapse/Dockerfile b/synapse/Dockerfile new file mode 100644 index 0000000..cccd97b --- /dev/null +++ b/synapse/Dockerfile @@ -0,0 +1,154 @@ +# Dockerfile to build the matrixdotorg/synapse docker images. +# +# To build the image, run `docker build` command from the root of the +# synapse repository: +# +# docker build -f docker/Dockerfile . +# +# There is an optional PYTHON_VERSION build argument which sets the +# version of python to build against: for example: +# +# docker build -f docker/Dockerfile --build-arg PYTHON_VERSION=3.6 . +# + +### +### Stage 0: builder +### +FROM docker.io/debian:bullseye-slim as builder + +# install the OS build deps +RUN apt-get update && apt-get install -y \ + build-essential \ + libffi-dev \ + libjpeg-dev \ + libpq-dev \ + libssl-dev \ + libwebp-dev \ + libxml++2.6-dev \ + libxslt1-dev \ + openssl \ + rustc \ + zlib1g-dev \ + python3-jsonschema \ + python3-frozendict \ + python3-unpaddedbase64 \ + python3-nacl \ + python3-idna \ + python3-twisted \ + python3-treq \ + python3-yaml \ + python3-pyasn1-modules \ + python3-bcrypt \ + python3-pillow \ + python3-sortedcontainers \ + python3-pymacaroons \ + python3-msgpack \ + python3-phonenumbers \ + python3-netaddr \ + python3-jinja2 \ + python3-bleach \ + python3-pysaml2 \ + python3-systemd \ + python3-lxml \ + python3-jwt \ + python3-hiredis\ + python3-canonicaljson \ + python3-signedjson \ + python3-typing-extensions \ + python3-psycopg2cffi \ + python3-txacme \ + python3-authlib \ + python3-sentry-sdk \ + python3-opentracing \ + && rm -rf /var/lib/apt/lists/* + +# Copy just what we need to pip install +COPY scripts /synapse/scripts/ +COPY MANIFEST.in README.rst setup.py synctl /synapse/ +COPY synapse/__init__.py /synapse/synapse/__init__.py +COPY synapse/python_dependencies.py /synapse/synapse/python_dependencies.py + +# To speed up rebuilds, install all of the dependencies before we copy over +# the whole synapse project so that we this layer in the Docker cache can be +# used while you develop on the source +# +# This is aiming at installing the `install_requires` and `extras_require` from `setup.py` +RUN pip install --prefix="/install" --no-warn-script-location \ + /synapse[all] + +# Copy over the rest of the project +COPY synapse /synapse/synapse/ + +# Install the synapse package itself and all of its children packages. +# +# This is aiming at installing only the `packages=find_packages(...)` from `setup.py +RUN pip install --prefix="/install" --no-deps --no-warn-script-location /synapse + +### +### Stage 1: runtime +### + +FROM docker.io/debian:bullseye-slim + +LABEL org.opencontainers.image.url='https://matrix.org/docs/projects/server/synapse' +LABEL org.opencontainers.image.documentation='https://github.com/matrix-org/synapse/blob/master/docker/README.md' +LABEL org.opencontainers.image.source='https://github.com/matrix-org/synapse.git' +LABEL org.opencontainers.image.licenses='Apache-2.0' + +RUN apt-get update && apt-get install -y \ + curl \ + gosu \ + libjpeg62-turbo \ + libpq5 \ + libwebp6 \ + xmlsec1 \ + libjemalloc2 \ + libssl-dev \ + openssl \ + python3-jsonschema \ + python3-frozendict \ + python3-unpaddedbase64 \ + python3-nacl \ + python3-idna \ + python3-twisted \ + python3-treq \ + python3-yaml \ + python3-pyasn1-modules \ + python3-bcrypt \ + python3-pillow \ + python3-sortedcontainers \ + python3-pymacaroons \ + python3-msgpack \ + python3-phonenumbers \ + python3-netaddr \ + python3-jinja2 \ + python3-bleach \ + python3-pysaml2 \ + python3-systemd \ + python3-lxml \ + python3-jwt \ + python3-hiredis\ + python3-canonicaljson \ + python3-signedjson \ + python3-typing-extensions \ + python3-psycopg2cffi \ + python3-txacme \ + python3-authlib \ + python3-sentry-sdk \ + python3-opentracing \ + && rm -rf /var/lib/apt/lists/* + + + +COPY --from=builder /install /usr/local +COPY ./docker/start.py /start.py +COPY ./docker/conf /conf + +VOLUME ["/data"] + +EXPOSE 8008/tcp 8009/tcp 8448/tcp + +ENTRYPOINT ["/start.py"] + +HEALTHCHECK --interval=1m --timeout=5s \ + CMD curl -fSs http://localhost:8008/health || exit 1 diff --git a/synapse/Makefile b/synapse/Makefile index f07e813..0c9bfca 100644 --- a/synapse/Makefile +++ b/synapse/Makefile @@ -17,4 +17,4 @@ build: --cache-from=type=registry,ref=${NAMESPACE}/buildx:${IMAGE} \ --cache-to=type=registry,ref=${NAMESPACE}/buildx:${IMAGE} \ --tag ${CI_REGISTRY_IMAGE}/${IMAGE}:$(VERSION) \ - -f ${IMAGE}-${VERSION}/docker/Dockerfile ${IMAGE}-${VERSION} + -f Dockerfile ${IMAGE}-${VERSION}